private void UpdateActorInfo(bool refreshFoliage = false) { MyVoxelRenderableComponent renderableComponent = m_actor.GetRenderable() as MyVoxelRenderableComponent; var matrix = MatrixD.CreateScale(m_scale) * MatrixD.CreateTranslation(m_translation) * m_worldMatrix; renderableComponent.m_voxelScale = m_scale; renderableComponent.m_voxelOffset = m_translation; m_actor.SetMatrix(ref matrix); m_actor.SetAabb(m_localAabb.Transform(m_worldMatrix)); renderableComponent.SetVoxelLod(m_lod, ScaleGroup); m_actor.MarkRenderDirty(); UpdateFoliage(refreshFoliage); }
void IMyClipmapCell.UpdateMesh(MyRenderMessageUpdateClipmapCell msg) { MyMeshes.UpdateVoxelCell(Mesh, msg.Batches); m_scale = msg.PositionScale; m_translation = msg.PositionOffset; m_localAabb = msg.MeshAabb; var matrix = (MatrixD)(MatrixD.CreateScale(m_scale) * MatrixD.CreateTranslation(m_translation) * m_worldMatrix); m_actor.GetRenderable().m_voxelScale = m_scale; m_actor.GetRenderable().m_voxelOffset = m_translation; m_actor.SetMatrix(ref matrix); m_actor.SetAabb((BoundingBoxD)msg.MeshAabb.Transform(m_worldMatrix)); m_actor.GetRenderable().SetVoxelLod(m_lod, ScaleGroup); (m_actor.GetComponent(MyActorComponentEnum.Foliage) as MyFoliageComponent).InvalidateStreams(); m_actor.MarkRenderDirty(); }