protected override void OnForcedCleanUp() { instance = null; partitioner.FreeResources(); partitioner = null; solidChangedLayer = null; liquidChangedLayer = null; digDestroyedLayer = null; fogOfWarChangedLayer = null; decorProviderLayer = null; attackableEntitiesLayer = null; fetchChoreLayer = null; pickupablesLayer = null; pickupablesChangedLayer = null; gasConduitsLayer = null; liquidConduitsLayer = null; solidConduitsLayer = null; noisePolluterLayer = null; validNavCellChangedLayer = null; dirtyNavCellUpdateLayer = null; trapsLayer = null; floorSwitchActivatorLayer = null; floorSwitchActivatorChangedLayer = null; objectLayers = null; }
public ScenePartitionerEntry(string name, object obj, int x, int y, int width, int height, ScenePartitionerLayer layer, ScenePartitioner partitioner, Action <object> event_callback) { if (x >= 0 && y >= 0 && width >= 0 && height >= 0) { goto IL_0025; } goto IL_0025; IL_0025: this.x = x; this.y = y; this.width = width; this.height = height; this.layer = layer.layer; this.partitioner = partitioner; eventCallback = event_callback; this.obj = obj; }
/// <summary> /// Applied after OnPrefabInit runs. /// </summary> internal static void Postfix(ScenePartitioner ___partitioner) { var options = FastTrackOptions.Instance; if (___partitioner != null) { if (options.FastReachability) { SensorPatches.FastGroupProber.Init(___partitioner.CreateMask(SensorPatches. FastReachabilityMonitor.REACHABILITY)); } if (options.RadiationOpts) { GamePatches.FastProtonCollider.hepLayer = ___partitioner.CreateMask( GamePatches.FastProtonCollider.RADBOLTS); } } }
protected override void OnPrefabInit() { Debug.Assert((UnityEngine.Object)instance == (UnityEngine.Object)null); instance = this; partitioner = new ScenePartitioner(16, 64, Grid.WidthInCells, Grid.HeightInCells); solidChangedLayer = partitioner.CreateMask("SolidChanged"); liquidChangedLayer = partitioner.CreateMask("LiquidChanged"); digDestroyedLayer = partitioner.CreateMask("DigDestroyed"); fogOfWarChangedLayer = partitioner.CreateMask("FogOfWarChanged"); decorProviderLayer = partitioner.CreateMask("DecorProviders"); attackableEntitiesLayer = partitioner.CreateMask("FactionedEntities"); fetchChoreLayer = partitioner.CreateMask("FetchChores"); pickupablesLayer = partitioner.CreateMask("Pickupables"); pickupablesChangedLayer = partitioner.CreateMask("PickupablesChanged"); gasConduitsLayer = partitioner.CreateMask("GasConduit"); liquidConduitsLayer = partitioner.CreateMask("LiquidConduit"); solidConduitsLayer = partitioner.CreateMask("SolidConduit"); noisePolluterLayer = partitioner.CreateMask("NoisePolluters"); validNavCellChangedLayer = partitioner.CreateMask("validNavCellChangedLayer"); dirtyNavCellUpdateLayer = partitioner.CreateMask("dirtyNavCellUpdateLayer"); trapsLayer = partitioner.CreateMask("trapsLayer"); floorSwitchActivatorLayer = partitioner.CreateMask("FloorSwitchActivatorLayer"); floorSwitchActivatorChangedLayer = partitioner.CreateMask("FloorSwitchActivatorChangedLayer"); collisionLayer = partitioner.CreateMask("Collision"); lure = partitioner.CreateMask("Lure"); plants = partitioner.CreateMask("Plants"); industrialBuildings = partitioner.CreateMask("IndustrialBuildings"); completeBuildings = partitioner.CreateMask("CompleteBuildings"); prioritizableObjects = partitioner.CreateMask("PrioritizableObjects"); objectLayers = new ScenePartitionerLayer[39]; for (int i = 0; i < 39; i++) { ObjectLayer objectLayer = (ObjectLayer)i; objectLayers[i] = partitioner.CreateMask(new HashedString(objectLayer.ToString())); } }