-
Notifications
You must be signed in to change notification settings - Fork 0
scripting: runtime attachment API — Attach/Detach/GetBoneTransform #171
Copy link
Copy link
Open
Labels
P0-criticalBlocker – ohne das geht Game-Dev nicht weiterBlocker – ohne das geht Game-Dev nicht weiterarea:animationSkelett-Animation, Keyframes, State MachinesSkelett-Animation, Keyframes, State Machinesarea:scriptingVortexAPI, VortexBehaviour, Game-APIVortexAPI, VortexBehaviour, Game-APIhorror-blockerEssenziell BEVOR die Horror-Game-Entwicklung startetEssenziell BEVOR die Horror-Game-Entwicklung startetsize:M1–3 Tage1–3 Tagetype:featureNeues Engine-/Editor-FeatureNeues Engine-/Editor-Feature
Description
Metadata
Metadata
Assignees
Labels
P0-criticalBlocker – ohne das geht Game-Dev nicht weiterBlocker – ohne das geht Game-Dev nicht weiterarea:animationSkelett-Animation, Keyframes, State MachinesSkelett-Animation, Keyframes, State Machinesarea:scriptingVortexAPI, VortexBehaviour, Game-APIVortexAPI, VortexBehaviour, Game-APIhorror-blockerEssenziell BEVOR die Horror-Game-Entwicklung startetEssenziell BEVOR die Horror-Game-Entwicklung startetsize:M1–3 Tage1–3 Tagetype:featureNeues Engine-/Editor-FeatureNeues Engine-/Editor-Feature
Context
Sockets authored in the editor cover the static case (character starts with flashlight in hand). Gameplay needs the dynamic case: pick a weapon up from a table, holster it, drop it when the monster strikes, swap items. Gameplay lives in project scripts (
VortexBehaviour) per the engine philosophy — so the socket system needs a script-facing API.Goal
VortexAPI surface: attach an entity to a bone of a skinned entity at runtime, detach it (keeping world position or resetting), and query bone/socket world transforms — e.g. the muzzle tip forPhysics.Raycasthitscan.Acceptance Criteria
entity.AttachTo(target, boneName, localPos, localRot)andentity.Detach(keepWorldPosition: bool)callable from VortexBehaviourtarget.GetBoneWorldTransform(boneName)returns position/rotation usable for raycast origins and VFX spawn pointskeepWorldPosition = true(world transform preserved, offset recomputed)GetAttachedEntities)Technical Notes
Route through the same socket registry as the component version — one code path. Guard against attach-cycles (A to B to A). Works together with
SetActivetoggles (holstered weapon = attached + inactive).Dependencies