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);
        }