internal override void Assign(MyActor owner) { Debug.Assert(m_owners.Find(x => x == owner) == null); base.Assign(owner); m_owners.Add(owner); owner.MarkRenderDirty(); }
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; var matrix = (Matrix)(Matrix.CreateScale(m_scale) * Matrix.CreateTranslation(m_translation) * m_worldMatrix); m_actor.SetMatrix(ref matrix); m_actor.GetRenderable().SetVoxelLod(m_lod); m_actor.SetAabb(msg.MeshAabb.Transform((Matrix)m_worldMatrix)); (m_actor.GetComponent(MyActorComponentEnum.Foliage) as MyFoliageComponent).InvalidateStreams(); m_actor.MarkRenderDirty(); }