protected override void UnloadData() { Debug.Assert(m_ropeIdToRope.Count == 0, "All ropes should have been removed by now."); Debug.Assert(m_hookIdToHook.Count == 0, "All hooks should have been removed by now."); m_ropeIdToRope.Clear(); m_hookIdToHook.Clear(); m_hookIdToWinding.Clear(); m_hookIdToRelease.Clear(); m_hookIdToRopeId.Clear(); m_ropesToRemove.Clear(); foreach (var winding in m_hookIdToActiveWinding.Values) { if (winding.Emitter != null) winding.Emitter.StopSound(true); } m_hookIdToActiveWinding.Clear(); m_hookIdToActiveRelease.Clear(); m_ropeIdToRayCastRelease.Clear(); m_hookIdToRopeLimits.Clear(); m_hookIdToUnlockedWinding.Clear(); m_ropeIdToInit.Clear(); if (m_ropeAttacher != null) { m_ropeAttacher.Clear(); m_ropeAttacher = null; } Static = null; base.UnloadData(); }
public override void LoadData() { Static = this; if (MySession.Static.CreativeMode) { MyRopeDefinition defaultRope = null; foreach (var rope in MyDefinitionManager.Static.GetRopeDefinitions()) { if (rope.IsDefaultCreativeRope) { defaultRope = rope; break; } } if (defaultRope != null) m_ropeAttacher = new MyRopeAttacher(defaultRope); } base.LoadData(); }