public void AddChildWithMatrix(Sandbox.ModAPI.IMyEntity child, ref Matrix childLocalMatrix, bool insertIntoSceneIfNeeded = true) { child.Hierarchy.Parent = this; Children.Add(child.Hierarchy); child.WorldMatrix = (MatrixD)childLocalMatrix * Entity.PositionComp.WorldMatrix; if (Entity.InScene && !child.InScene && insertIntoSceneIfNeeded) child.OnAddedToScene(this); }
/// <summary> /// Adds the child. /// </summary> /// <param name="child">The child.</param> /// <param name="preserveWorldPos">if set to <c>true</c> [preserve absolute position].</param> public void AddChild(Sandbox.ModAPI.IMyEntity child, bool preserveWorldPos = false, bool insertIntoSceneIfNeeded = true) { //MyEntities.Remove(child); // if it's already in the world, remove it child.Hierarchy.Parent = this; if (preserveWorldPos) { var tmpWorldMatrix = child.WorldMatrix; this.Children.Add(child.Hierarchy); child.WorldMatrix = tmpWorldMatrix; } else { this.Children.Add(child.Hierarchy); var m = Entity.PositionComp.WorldMatrix; child.PositionComp.UpdateWorldMatrix(ref m); } if (Entity.InScene && !child.InScene && insertIntoSceneIfNeeded) child.OnAddedToScene(this.Entity); }