public void AddTrigger(MyTriggerComponent trigger) { Debug.Assert(trigger != null, "Horrible Assertion! Call a programmer! Hurry!"); MySandboxGame.AssertUpdateThread(); if (Contains(trigger)) { return; } using (m_dictionaryLock.AcquireExclusiveUsing()) { CachingHashSet triggerSet; if (m_triggers.TryGetValue((MyEntity)trigger.Entity, out triggerSet)) { triggerSet.Add(trigger); } else { m_triggers[(MyEntity)trigger.Entity] = new CachingHashSet { trigger }; } } }
private static void Update() { MySandboxGame.AssertUpdateThread(); VRageRender.MyRenderProxy.GetRenderProfiler().StartProfilingBlock("MyGamePruningStructure::UpdateInternal"); m_movedLock.AcquireExclusive(); var x = m_moved; m_moved = m_movedUpdate; m_movedLock.ReleaseExclusive(); m_movedUpdate = x; foreach (var moved in m_movedUpdate) { MoveInternal(moved); } m_movedUpdate.Clear(); VRageRender.MyRenderProxy.GetRenderProfiler().EndProfilingBlock(); }