|
entity - entity handle parent - parent entity handle, or 0 to remove the entity's current parent global (optional) - true for the child entity to keep its global position and orientation when reparented; true (default) |
|
Attaches an entity to a parent. Once parented, the child moves, turns and scales with its parent - a sword parented to a hand, a turret parented to a tank, a camera parented to a player. The relationship is one way: moving the child never affects the parent. With global true (the default) the entity stays exactly where it is in the world at the moment of reparenting; its local position is recalculated to suit the new parent. With global false the entity keeps its local coordinates, so it jumps to wherever those place it relative to the new parent. Pass 0 as the parent to detach the entity, making it a free-standing entity in the world again. See also: GetParent, CreatePivot, CountChildren, GetChild, FindChild. |
; EntityParent Example
; --------------------
Graphics3D 640,480,0,2
SetBuffer BackBuffer()
camera=CreateCamera()
PositionEntity camera,0,6,-10
RotateEntity camera,25,0,0
light=CreateLight()
RotateEntity light,45,45,0
; A truck that drives in a circle
truck=CreateCube()
ScaleMesh truck,1,0.5,1.5
EntityColor truck,0,150,255
PositionEntity truck,4,0,0
; A crate sitting in the middle of the yard
crate=CreateCube()
ScaleMesh crate,0.5,0.5,0.5
EntityColor crate,0,255,0
attached=0
While Not KeyDown(1)
; Space toggles the crate's parent between the truck and none
If KeyHit(57)
If attached
; Parent 0 releases the crate; it keeps its global position
EntityParent crate,0
attached=0
Else
; Attach the crate: from now on it moves with the truck
EntityParent crate,truck
attached=1
EndIf
EndIf
; Drive the truck in a circle
TurnEntity truck,0,1,0
MoveEntity truck,0,0,0.08
; Arrow keys move the camera
If KeyDown(200) Then MoveEntity camera,0,0,0.1
If KeyDown(208) Then MoveEntity camera,0,0,-0.1
If KeyDown(203) Then TurnEntity camera,0,1,0
If KeyDown(205) Then TurnEntity camera,0,-1,0
RenderWorld
Text 0,0,"Space: attach/release the green crate Arrow keys: move camera Esc: exit"
If attached
Text 0,20,"EntityParent crate,truck - the crate moves with the truck"
Else
Text 0,20,"EntityParent crate,0 - the crate is released where it is"
EndIf
Flip
Wend
End