Add _displayRotationEuler to Lieferkarton/ShelfSlot so package prefabs
with a non-upright export orientation can be corrected per-container
without touching PackageDisplay code. Fixes a bug where flying packages
landed with a different rotation than the resting shelf display
(PlayerCarry used the raw shelf transform instead of
ShelfSlot.GetSlotWorldRotation()).
Also adds the pocoregal shelf model (Blender export) and its materials,
places it in the Shop scene, registers ShelfSlot as a network prefab,
and rescales EmptyBox. See docs/PACKAGE_DISPLAY_SETUP.md for the
display-grid setup/troubleshooting reference.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Carryable: generic pickup/carry component, cosmetic per-peer follow of
the carrier's HandSocket instead of NGO reparenting (camera pitch isn't
networked, so root-level reparenting wouldn't tilt with the view)
- PlayerCarry: mutual exclusion with PlayerHands, server-timed hold-to-pour
tick (client only signals start/stop, never per-unit requests)
- IPourSource/IPourTarget: decouple PlayerInteractor from concrete Shop
types, same pattern as IInteractable
- Lieferkarton: gains product data (productId/quantity), two-stage
Interact() (open, then pick up), IPourSource
- ShelfSlot: implements IPourTarget, fills the previous RefreshVisuals TODO
- PackageDisplay: renders quantity as a proper column x row grid that
stacks into further layers as space runs out, reused by both containers
- FlyingPackage: small non-networked cosmetic visual that arcs a package
from the carried box to its exact landing slot in the shelf grid on
every successful pour tick, broadcast via Rpc(SendTo.Everyone)
- StorageCrate: rejects pickup while the player is carrying a box
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- SupplierService: Bestellungen mit Lieferzeit-Berechnung
- OrderTerminal: Spieler-Interaktion zum Aufgeben von Bestellungen
- StorageCrateRegistry + StorageCrate.Restock: Server registriert Kisten
und füllt sie bei Lieferung wieder auf
- GameClock.TotalHours: durchgehende Spielzeit für Lieferzeit-Berechnung
- ROADMAP: Bestellsystem-Punkt als erledigt markiert
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Lieferkarton: server-authoritative Deckel-Toggle per NetworkVariable,
Scharnier-Rotation um lokale X-Achse, modernes [Rpc(SendTo.Server)]
- BoneVibration: neues IInteractable, das einen geskinnten Bone per
NetworkVariable-gesteuertem Toggle vibrieren lässt
- Beide Objekte in Shop.unity verdrahtet
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>