Esempio n. 1
0
    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;
        }
    }
Esempio n. 3
0
    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
    }
Esempio n. 4
0
    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
    }