public void Build(BuildFlags buildFlags) { if (spriteCollection != null) { _spriteCollectionInst = spriteCollection.inst; } #if UNITY_EDITOR || !UNITY_FLASH // Sanitize tilePrefabs input, to avoid branches later if (data != null) { if (data.tilePrefabs == null) { data.tilePrefabs = new Object[SpriteCollectionInst.Count]; } else if (data.tilePrefabs.Length != SpriteCollectionInst.Count) { System.Array.Resize(ref data.tilePrefabs, SpriteCollectionInst.Count); } // Fix up data if necessary BuilderUtil.InitDataStore(this); } else { return; } // Sanitize sprite collection material ids if (SpriteCollectionInst) { SpriteCollectionInst.InitMaterialIds(); } bool forceBuild = (buildFlags & BuildFlags.ForceBuild) != 0; // When invalid, everything needs to be rebuilt if (SpriteCollectionInst && SpriteCollectionInst.buildKey != spriteCollectionKey) { forceBuild = true; } if (forceBuild) { ClearSpawnedInstances(); } BuilderUtil.CreateRenderData(this, _inEditMode); RenderMeshBuilder.Build(this, _inEditMode, forceBuild); if (!_inEditMode) { ColliderBuilder.Build(this, forceBuild); BuilderUtil.SpawnPrefabs(this, forceBuild); } // Clear dirty flag on everything foreach (var layer in layers) { layer.ClearDirtyFlag(); } if (colorChannel != null) { colorChannel.ClearDirtyFlag(); } // Update sprite collection key if (SpriteCollectionInst) { spriteCollectionKey = SpriteCollectionInst.buildKey; } #endif }
public void Build(BuildFlags buildFlags) { // Sanitize tilePrefabs input, to avoid branches later if (data != null) { if (data.tilePrefabs == null) { data.tilePrefabs = new Object[spriteCollection.Count]; } else if (data.tilePrefabs.Length != spriteCollection.Count) { System.Array.Resize(ref data.tilePrefabs, spriteCollection.Count); } // Fix up data if necessary BuilderUtil.InitDataStore(this); } else { return; } // Sanitize sprite collection material ids if (spriteCollection) { spriteCollection.InitMaterialIds(); } bool editMode = (buildFlags & BuildFlags.EditMode) != 0; bool forceBuild = (buildFlags & BuildFlags.ForceBuild) != 0; // When invalid, everything needs to be rebuilt if (spriteCollection && spriteCollection.buildKey != spriteCollectionKey) { forceBuild = true; } BuilderUtil.CreateRenderData(this, editMode); RenderMeshBuilder.Build(this, editMode, forceBuild); if (!editMode) { ColliderBuilder.Build(this); BuilderUtil.SpawnPrefabs(this); } // Clear dirty flag on everything foreach (var layer in layers) { layer.ClearDirtyFlag(); } if (colorChannel != null) { colorChannel.ClearDirtyFlag(); } // One random number to detect undo buildKey = Random.Range(0, int.MaxValue); // Update sprite collection key if (spriteCollection) { spriteCollectionKey = spriteCollection.buildKey; } }
public void Build(BuildFlags buildFlags) { #if UNITY_EDITOR // Sanitize tilePrefabs input, to avoid branches later if (data != null && spriteCollection != null) { if (data.tilePrefabs == null) { data.tilePrefabs = new GameObject[SpriteCollectionInst.Count]; } else if (data.tilePrefabs.Length != SpriteCollectionInst.Count) { System.Array.Resize(ref data.tilePrefabs, SpriteCollectionInst.Count); } // Fix up data if necessary BuilderUtil.InitDataStore(this); } else { return; } // Sanitize sprite collection material ids if (SpriteCollectionInst) { SpriteCollectionInst.InitMaterialIds(); } bool forceBuild = (buildFlags & BuildFlags.ForceBuild) != 0; // When invalid, everything needs to be rebuilt if (SpriteCollectionInst && SpriteCollectionInst.buildKey != spriteCollectionKey) { forceBuild = true; } // Remember active layers Dictionary <Layer, bool> layersActive = new Dictionary <Layer, bool>(); if (layers != null) { for (int layerIdx = 0; layerIdx < layers.Length; ++layerIdx) { Layer layer = layers[layerIdx]; if (layer != null && layer.gameObject != null) { #if UNITY_3_5 layersActive[layer] = layer.gameObject.active; #else layersActive[layer] = layer.gameObject.activeSelf; #endif } } } if (forceBuild) { ClearSpawnedInstances(); } BuilderUtil.CreateRenderData(this, _inEditMode, layersActive); RenderMeshBuilder.Build(this, _inEditMode, forceBuild); if (!_inEditMode) { #if !(UNITY_3_5 || UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2) tk2dSpriteDefinition def = SpriteCollectionInst.FirstValidDefinition; if (def != null && def.physicsEngine == tk2dSpriteDefinition.PhysicsEngine.Physics2D) { #if !STRIP_PHYSICS_2D ColliderBuilder2D.Build(this, forceBuild); #endif } else #endif { #if !STRIP_PHYSICS_3D ColliderBuilder3D.Build(this, forceBuild); #endif } BuilderUtil.SpawnPrefabs(this, forceBuild); } // Clear dirty flag on everything foreach (var layer in layers) { layer.ClearDirtyFlag(); } if (colorChannel != null) { colorChannel.ClearDirtyFlag(); } // Update sprite collection key if (SpriteCollectionInst) { spriteCollectionKey = SpriteCollectionInst.buildKey; } #endif }
public void Build(BuildFlags buildFlags) { if (spriteCollection != null) { _spriteCollectionInst = spriteCollection.inst; } #if UNITY_EDITOR || !UNITY_FLASH // Sanitize tilePrefabs input, to avoid branches later if (data != null && spriteCollection != null) { if (data.tilePrefabs == null) { data.tilePrefabs = new Object[SpriteCollectionInst.Count]; } else if (data.tilePrefabs.Length != SpriteCollectionInst.Count) { System.Array.Resize(ref data.tilePrefabs, SpriteCollectionInst.Count); } // Fix up data if necessary BuilderUtil.InitDataStore(this); } else { return; } // Sanitize sprite collection material ids if (SpriteCollectionInst) { SpriteCollectionInst.InitMaterialIds(); } bool forceBuild = (buildFlags & BuildFlags.ForceBuild) != 0; // When invalid, everything needs to be rebuilt if (SpriteCollectionInst && SpriteCollectionInst.buildKey != spriteCollectionKey) { forceBuild = true; } // Remember active layers Dictionary <Layer, bool> layersActive = new Dictionary <Layer, bool>(); if (layers != null) { for (int layerIdx = 0; layerIdx < layers.Length; ++layerIdx) { Layer layer = layers[layerIdx]; if (layer != null && layer.gameObject != null) { #if UNITY_3_0 || UNITY_3_1 || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 || UNITY_3_5 || UNITY_3_6 || UNITY_3_7 || UNITY_3_8 || UNITY_3_9 layersActive[layer] = layer.gameObject.active; #else layersActive[layer] = layer.gameObject.activeSelf; #endif } } } if (forceBuild) { ClearSpawnedInstances(); } BuilderUtil.CreateRenderData(this, _inEditMode, layersActive); RenderMeshBuilder.Build(this, _inEditMode, forceBuild); if (!_inEditMode) { ColliderBuilder.Build(this, forceBuild); BuilderUtil.SpawnPrefabs(this, forceBuild); } // Clear dirty flag on everything foreach (var layer in layers) { layer.ClearDirtyFlag(); } if (colorChannel != null) { colorChannel.ClearDirtyFlag(); } // Update sprite collection key if (SpriteCollectionInst) { spriteCollectionKey = SpriteCollectionInst.buildKey; } #endif }