public void AddRenderObject(MyRenderObject renderObject, MatrixD?childToParent = null) { MyRenderEntity renderEntity = renderObject as MyRenderEntity; MatrixD childMatrix; if (childToParent != null) { childMatrix = childToParent.Value; } else { childMatrix = renderEntity.WorldMatrix * m_invWorldMatrix; } renderEntity.WorldMatrix = childMatrix; renderObject.ParentCullObject = this; var box = renderObject.WorldAABB; renderObject.ProxyData = CulledObjects.AddProxy(ref box, renderObject, 0); EntitiesContained++; SetDirty(); }
public void MoveRenderObject(MyRenderObject renderObject) { MyRenderEntity renderEntity = renderObject as MyRenderEntity; BoundingBoxD aabb = renderEntity.WorldAABB; CulledObjects.MoveProxy(renderObject.ProxyData, ref aabb, Vector3D.Zero); SetDirty(); }
public void RemoveRenderObject(MyRenderObject renderObject) { MyRenderEntity renderEntity = renderObject as MyRenderEntity; CulledObjects.RemoveProxy(renderObject.ProxyData); renderObject.ParentCullObject = null; renderEntity.WorldMatrix = renderEntity.WorldMatrix * WorldMatrix; renderObject.ProxyData = MyElement.PROXY_UNASSIGNED; EntitiesContained--; SetDirty(); }
public override void UpdateWorldAABB() { CulledObjects.GetAll(m_list, true); m_localAABB = BoundingBoxD.CreateInvalid(); foreach (var element in m_list) { m_localAABB = m_localAABB.Include(element.WorldAABB); } m_aabb = m_localAABB.Transform(ref m_worldMatrix); base.UpdateWorldAABB(); }