internal void UpdateMergedMesh(MyRenderMessageUpdateMergedVoxelMesh msg) { ProfilerShort.Begin("MyClipmapHandler.UpdateMergedMesh"); if(m_mergeHandler != null) m_mergeHandler.UpdateMesh(msg); ProfilerShort.End(); }
internal bool UpdateMergedMesh(MyRenderMessageUpdateMergedVoxelMesh msg) { if (!MyMeshes.UpdateMergedVoxelCell(MeshId, ref msg.Metadata, msg.MergedBatches)) return false; m_scale = msg.Metadata.PositionScale; m_translation = msg.Metadata.PositionOffset; m_localAabb = msg.Metadata.LocalAabb; UpdateActorInfo(); return true; }
internal void UpdateMesh(MyRenderMessageUpdateMergedVoxelMesh updateMessage) { if (!MyRender11.Settings.EnableVoxelMerging) return; m_mergesPerLod[updateMessage.Lod].UpdateMesh(updateMessage); }
internal void UpdateMesh(MyRenderMessageUpdateMergedVoxelMesh updateMessage) { ProfilerShort.Begin("MyLodMeshMergeHandler.UpdateMesh"); int divideIndex = GetDivideIndexFromMergeCell(ref updateMessage.Metadata.Cell.CoordInLod); // A job wasn't cancelled in time and made it here if (m_mergeJobs[divideIndex].CurrentWorkId != updateMessage.WorkId) return; MyMergedLodMeshId mergedId = MyMeshes.GetMergedLodMesh(m_mergedLodMeshProxies[divideIndex].MeshId, 0); bool mergeSuccessful = m_mergedLodMeshProxies[divideIndex].UpdateMergedMesh(updateMessage); if (mergeSuccessful) { Debug.Assert(mergedId.Info.MergedLodMeshes.Count == 0, "Merging into an already merged mesh"); ProfilerShort.Begin("Combine to merged"); mergedId.Info.MergedLodMeshes.UnionWith(m_mergeJobs[divideIndex].LodMeshesBeingMerged); ProfilerShort.End(); SwitchMergeState(divideIndex, true); } else { ProfilerShort.Begin("Combine to pending"); mergedId.Info.PendingLodMeshes.UnionWith(m_mergeJobs[divideIndex].LodMeshesBeingMerged); ProfilerShort.End(); } ResetMerge(divideIndex); ProfilerShort.End(); }