public override void UpdateBeforeSimulation() { if (Enabled) { ProfilerShort.Begin("Add tracked entities"); if (m_toAddTrackedEntities.Count != 0) { foreach (var pair in m_toAddTrackedEntities) { m_trackedEntities.Add(pair.Key, pair.Value); } m_toAddTrackedEntities.Clear(); } ProfilerShort.BeginNextBlock("Update tracked entities"); foreach (var tracker in m_trackedEntities.Values) { if (tracker.ShouldGenerate()) { var oldBoundingVolume = tracker.BoundingVolume; tracker.UpdateLastPosition(); foreach (var module in m_modules) { ProfilerShort.Begin("GenerateObjectsInSphere"); module.GetObjectSeeds(tracker.BoundingVolume, m_tempObjectSeedList); module.GenerateObjects(m_tempObjectSeedList, m_existingObjectsSeeds); m_tempObjectSeedList.Clear(); ProfilerShort.End(); module.MarkCellsDirty(oldBoundingVolume, tracker.BoundingVolume); } } } ProfilerShort.BeginNextBlock("Process dirty cells"); foreach (var module in m_modules) { module.ProcessDirtyCells(m_trackedEntities); } ProfilerShort.End(); } if (!MySandboxGame.AreClipmapsReady && MySession.Static.VoxelMaps.Instances.Count == 0) { // Render will not send any message if it has no clipmaps, so we have to specify there is nothing to wait for. MySandboxGame.SignalClipmapsReady(); } }
public override void UpdateBeforeSimulation() { if (m_densityFunctions.Count != 0) { ProfilerShort.Begin("Add tracked entities"); if (m_toAddTrackedEntities.Count != 0) { foreach (var pair in m_toAddTrackedEntities) { m_trackedEntities.Add(pair.Key, pair.Value); } m_toAddTrackedEntities.Clear(); } ProfilerShort.End(); foreach (var tracker in m_trackedEntities.Values) { if (tracker.ShouldGenerate()) { var oldBoundingVolume = tracker.BoundingVolume; tracker.UpdateLastPosition(); //if (!(tracker.Entity is MyCubeGrid && ((MyCubeGrid)tracker.Entity).IsTrash())) GenerateObjects(tracker.BoundingVolume); MarkCellsDirty(oldBoundingVolume, tracker.BoundingVolume); } } ProcessDirtyCells(); } if (!MySandboxGame.AreClipmapsReady && MySession.Static.VoxelMaps.Instances.Count == 0) { // Render will not send any message if it has no clipmaps, so we have to specify there is nothing to wait for. MySandboxGame.SignalClipmapsReady(); } }