public void SetParent(RenderableObjectBase obj, bool retainWorldTransform)
        {
            if (_parent != null)
            {
                _parent.RemoveChild(this);
            }

            ConvertWorldValues(obj);

            obj.RegisterChild(this);
        }
 /// <summary>
 /// Will recalculate local transform values as to retain current world transform in relation to new parent
 /// </summary>
 private void ConvertWorldValues(RenderableObjectBase newParent)
 {
     LocalPosition = WorldPosition - newParent.WorldPosition;
     LocalSize     = WorldSize - newParent.WorldSize;
 }
        private void RegisterChild(RenderableObjectBase obj)
        {
            obj._parent = this;

            _children.Add(obj);
        }
 public void SetParent(RenderableObjectBase obj)
 {
     SetParent(obj, true);
 }
 private void RemoveChild(RenderableObjectBase obj)
 {
     _children.Remove(obj);
 }