示例#1
0
        public override bool GetTileAnimationData(Vector3Int position, ITilemap tilemap, ref TileAnimationData tileAnimationData)
        {
            TileBase[] neighboringTiles = null;
            var        iden             = Matrix4x4.identity;

            foreach (TilingRule rule in m_TilingRules)
            {
                if (rule.m_Output == TilingRule.OutputSprite.Animation)
                {
                    Matrix4x4 transform = iden;
                    GetMatchingNeighboringTiles(tilemap, position, ref neighboringTiles);
                    if (RuleMatches(rule, ref neighboringTiles, ref transform))
                    {
                        tileAnimationData.animatedSprites = rule.m_Sprites;
                        tileAnimationData.animationSpeed  = rule.m_AnimationSpeed;
                        return(true);
                    }
                }
            }
            return(false);
        }
示例#2
0
文件: Tile.cs 项目: EmmaEwert/KITTY
        ///<summary>
        ///Tile animation `data` expects its `animatedSprites` field populated by a list of sprites
        ///to be cycled through at a constant framerate.
        ///</summary>
        public override bool GetTileAnimationData(Vector3Int position, ITilemap tilemap, ref TileAnimationData data)
        {
            if (frames == null || frames.Length == 0)
            {
                return(false);
            }
            // Tiled supports individual frame durations per frame, but Unity doesn't. This is
            // solved by finding the greatest divisor between all frame durations, using that for
            // the fixed framerate, and replicating each frame enough times to match its original
            // duration.
            var duration = GreatestCommonDivisor(frames.Select(f => f.duration).ToArray());
            var sprites  = new List <Sprite>();

            for (var i = 0; i < frames.Length; ++i)
            {
                for (var j = 0; j < frames[i].duration / duration; ++j)
                {
                    sprites.Add(frames[i].sprite);
                }
            }
            data.animatedSprites    = sprites.ToArray();
            data.animationSpeed     = 1000f / duration;
            data.animationStartTime = 0f;
            return(true);
        }
 public override bool GetTileAnimationData(Vector3Int location, ITilemap tileMap, ref TileAnimationData tileAnimationData)
 {
     if (m_AnimatedSprites.Length > 0)
     {
         tileAnimationData.animatedSprites    = m_AnimatedSprites;
         tileAnimationData.animationSpeed     = Speed;
         tileAnimationData.animationStartTime = location.y + location.x;
         return(true);
     }
     return(false);
 }
示例#4
0
        public override bool GetTileAnimationData(Vector3Int position, ITilemap tilemap, ref TileAnimationData tileAnimationData)
        {
            var info = GetTileInfo(tilemap, position);

            if (info.SpriteType == Info.Type.Animated)
            {
                tileAnimationData.animatedSprites = info.Sprites;
                tileAnimationData.animationSpeed  = info.AnimationSpeed;
            }

            return(true);
        }
示例#5
0
        public override bool GetTileAnimationData(Vector3Int position, ITilemap tilemap, ref TileAnimationData tileAnimationData)
        {
            if (Rules.Count > 0)
            {
                TileBase[] neighbors = null;

                GetNeighbors(tilemap, position, ref neighbors);

                foreach (var rule in Rules)
                {
                    if (RuleMatches(rule, neighbors, this))
                    {
                        if (rule.UseReference)
                        {
                            return(rule.Reference.GetTileAnimationData(position, tilemap, ref tileAnimationData));
                        }

                        return(false);
                    }
                }
            }

            return(false);
        }
 public override bool GetTileAnimationData(Vector3Int location, ITilemap tileMap, ref TileAnimationData tileAnimationData)
 {
     if (m_AnimatedSprites.Length > 0)
     {
         tileAnimationData.animatedSprites    = m_AnimatedSprites;
         tileAnimationData.animationSpeed     = Random.Range(m_MinSpeed, m_MaxSpeed);
         tileAnimationData.animationStartTime = m_AnimationStartTime;
         return(true);
     }
     return(false);
 }
示例#7
0
 public override bool GetTileAnimationData(Vector3Int position, ITilemap tilemap, ref TileAnimationData tileAnimationData)
 {
     tileAnimationData.animatedSprites    = Sprites;
     tileAnimationData.animationSpeed     = Speed;
     tileAnimationData.animationStartTime = StartTime;
     return(true);
 }
示例#8
0
 public override bool GetTileAnimationData(Vector3Int position, ITilemap tilemap, ref TileAnimationData tileAnimationData)
 {
     return(base.GetTileAnimationData(position, tilemap, ref tileAnimationData));
 }
示例#9
0
 public override bool GetTileAnimationData(Vector3Int position, ITilemap tilemap, ref TileAnimationData data)
 {
     if (sprites == null || sprites.Length == 0)
     {
         return(false);
     }
     data.animatedSprites    = sprites;
     data.animationSpeed     = 1000f / duration;
     data.animationStartTime = 0f;
     return(true);
 }
示例#10
0
 public override bool GetTileAnimationData(Vector3Int position, ITilemap tilemap, ref TileAnimationData tileAnimationData)
 {
     if (CheckForBeingPrepared() == false)
     {
         return(false);
     }
     if (Patterns[CurrentIndex].Frames.Length == 1)
     {
         return(false);
     }
     else
     {
         tileAnimationData.animatedSprites    = Patterns[CurrentIndex].Frames;
         tileAnimationData.animationSpeed     = UnityEngine.Random.Range(m_MinSpeed, m_MaxSpeed);
         tileAnimationData.animationStartTime = m_AnimationStartTime;
         return(true);
     }
 }
示例#11
0
 public override bool GetTileAnimationData(Vector3Int location, ITilemap tilemap, ref TileAnimationData tileAnimationData)
 {
     if (sprites == null)
     {
         return(false);
     }
     if (sprites.Length == 0)
     {
         return(false);
     }
     tileAnimationData.animatedSprites    = sprites;
     tileAnimationData.animationSpeed     = fps;
     tileAnimationData.animationStartTime = 0f;
     return(true);
 }
示例#12
0
        public override bool GetTileAnimationData(Vector3Int location, ITilemap tilemap, ref TileAnimationData tileAnimationData)
        {
            bool b;

            if (dead)
            {
                b = destroyedTile.GetTileAnimationData(location, tilemap, ref tileAnimationData);
            }
            else
            {
                b = base.GetTileAnimationData(location, tilemap, ref tileAnimationData);
            }
            return(b);
        }
示例#13
0
 public override bool GetTileAnimationData(Vector3Int location, ITilemap tileMap, ref TileAnimationData tileAnimationData)
 {
     tileAnimationData.animatedSprites    = Tiles.Select(tile => tile.Sprite).ToArray();
     tileAnimationData.animationSpeed     = GetSpeed();
     tileAnimationData.animationStartTime = GetStart();
     return(true);
 }
示例#14
0
 public override bool GetTileAnimationData(Vector3Int position, ITilemap tilemap, ref TileAnimationData tileAnimationData)
 {
     if (!m_RuntimeTile)
     {
         Override();
     }
     return(m_RuntimeTile.GetTileAnimationData(position, tilemap, ref tileAnimationData));
 }
示例#15
0
 public override bool GetTileAnimationData(Vector3Int position, ITilemap tilemap, ref TileAnimationData tileAnimationData)
 {
     if (m_AnimationSprites != null && m_AnimationSprites.Length > 1)
     {
         tileAnimationData.animatedSprites    = m_AnimationSprites;
         tileAnimationData.animationSpeed     = 1.0f;
         tileAnimationData.animationStartTime = 0;
         return(true);
     }
     return(false);
 }
示例#16
0
        public override bool GetTileAnimationData(Vector3Int tilePosition, ITilemap iTilemap, ref TileAnimationData tileAnimationData)
        {
            Matrix4x4 matrixTransform = Matrix4x4.identity;

            /*
             * Se uma das Rules for um Tile com animação, é preciso definir o `tileAnimationData`
             * com os dados da animação.
             *
             * Mas, antes é necessário verificar se o Rule é correspondido.
             */
            foreach (Rule rule in rules)
            {
                if (rule.spriteOutputType == Rule.SpriteOutputType.Animation)
                {
                    bool neighborsMatched = IsNeighborsMatched(rule, tilePosition, iTilemap, ref matrixTransform);

                    if (neighborsMatched)
                    {
                        // Replace Tile data.
                        tileAnimationData.animatedSprites = rule.tileSprites;
                        tileAnimationData.animationSpeed  = rule.animationSpeed;

                        return(true);
                    }
                }
            }

            return(false);
        }
示例#17
0
        public override bool GetTileAnimationData(Vector3Int position, ITilemap tilemap, ref TileAnimationData tileAnimationData)
        {
            var rule = DefaultRule;

            if (OverrideTile)
            {
                var index = OverrideTile.GetRuleIndex(position, tilemap, this);
                if (index >= 0 && index < Rules.Count)
                {
                    rule = Rules[index];
                }
            }

            if (rule.UseReference)
            {
                return(rule.Reference.GetTileAnimationData(position, tilemap, ref tileAnimationData));
            }

            return(false);
        }
示例#18
0
 public override bool GetTileAnimationData(Vector3Int position, ITilemap tilemap, ref TileAnimationData tileAnimationData)
 {
     foreach (TilingRule rule in m_TilingRules)
     {
         Matrix4x4 transform = Matrix4x4.identity;
         if (RuleMatches(rule, position, tilemap, ref transform) && rule.m_Output == TilingRule.OutputSprite.Animation)
         {
             tileAnimationData.animatedSprites = rule.m_Sprites;
             tileAnimationData.animationSpeed  = rule.m_AnimationSpeed;
             return(true);
         }
     }
     return(false);
 }
示例#19
0
 public override bool GetTileAnimationData(Vector3Int location, ITilemap tilemap, ref TileAnimationData tileAnimationData)
 {
     tileAnimationData.animatedSprites    = animatedTiles;
     tileAnimationData.animationSpeed     = fps;
     tileAnimationData.animationStartTime = 0f;
     return(true);
 }