Exemplo n.º 1
0
        public static TileData GetTileDataFromTile(Tile tile)
        {
            if (tile == null)
            {
                return(null);
            }
            TileData       tileData   = new TileData();
            SpriteRenderer renderer   = tile.GetComponent <SpriteRenderer>();
            Collider2D     collider   = tile.GetComponent <Collider2D>();
            Vector3        localScale = tile.transform.localScale;

            tileData.FlipHorizontally = localScale.x == -1;
            tileData.FlipVertically   = localScale.y == -1;
            tileData.Sprite           = renderer.sprite;
            tileData.OrderInLayer     = renderer.sortingOrder;
            tileData.Rotation         = tile.transform.rotation.eulerAngles.z;
            tileData.Collision        = tile.Collision;
            tileData.Tag = tile.tag;
            if (collider != null)
            {
                tileData.IsTrigger       = collider.isTrigger;
                tileData.PhysicsMaterial = collider.sharedMaterial;
            }
            return(tileData);
        }
Exemplo n.º 2
0
        public static void ApplyColliderInfoToTile(Tile tile, ColliderInfo colliderInfo)
        {
            if (tile == null || colliderInfo == null)
            {
                return;
            }

            CollisionType collisionType = colliderInfo.CollisionType;

            switch (collisionType)
            {
            case CollisionType.Box: {
                BoxCollider2DInfo info     = colliderInfo as BoxCollider2DInfo;
                BoxCollider2D     collider = tile.GetComponent(typeof(BoxCollider2D)) as BoxCollider2D;
                if (info != null && collider != null)
                {
                    collider.size = info.Size;

#if UNITY_5_0
                    collider.offset = info.Center;
#else
                    collider.offset = info.Center;
#endif
                }
                break;
            }

            case CollisionType.Circle: {
                CircleCollider2DInfo info     = colliderInfo as CircleCollider2DInfo;
                CircleCollider2D     collider = tile.GetComponent(typeof(CircleCollider2D)) as CircleCollider2D;
                if (info != null && collider != null)
                {
#if UNITY_5_0
                    collider.offset = info.Center;
#else
                    collider.offset = info.Center;
#endif

                    collider.radius = info.Radius;
                }
                break;
            }

            case CollisionType.Polygon: {
                PolygonCollider2DInfo info     = colliderInfo as PolygonCollider2DInfo;
                PolygonCollider2D     collider = tile.GetComponent(typeof(PolygonCollider2D)) as PolygonCollider2D;
                if (info != null && collider != null)
                {
                    collider.pathCount = info.PathCount;
                    collider.points    = info.Points;
                }
                break;
            }

            default:
                break;
            }
        }
Exemplo n.º 3
0
        public static ColliderInfo GetColliderInfoFromTile(Tile tile)
        {
            if (tile == null)
            {
                return(null);
            }

            ColliderInfo  info          = null;
            CollisionType collisionType = tile.Collision;

            switch (collisionType)
            {
            case CollisionType.Box:
            {
                BoxCollider2D collider = tile.GetComponent(typeof(BoxCollider2D)) as BoxCollider2D;
                if (collider)
                {
#if UNITY_5_0
                    info = new BoxCollider2DInfo(collider.offset, collider.size);
#else
                    info = new BoxCollider2DInfo(collider.center, collider.size);
#endif
                }
                break;
            }

            case CollisionType.Circle:
            {
                CircleCollider2D collider = tile.GetComponent(typeof(CircleCollider2D)) as CircleCollider2D;
                if (collider)
                {
#if UNITY_5_0
                    info = new CircleCollider2DInfo(collider.offset, collider.radius);
#else
                    info = new CircleCollider2DInfo(collider.center, collider.radius);
#endif
                }
                break;
            }

            case CollisionType.Polygon:
            {
                PolygonCollider2D collider = tile.GetComponent(typeof(PolygonCollider2D)) as PolygonCollider2D;
                if (collider)
                {
                    info = new PolygonCollider2DInfo(collider.pathCount, collider.points);
                }
                break;
            }

            default:
                break;
            }

            return(info);
        }
Exemplo n.º 4
0
        public static bool IsTheSameTile(Tile tile, TileData tileData)
        {
            Vector3        localScale = tile.transform.localScale;
            SpriteRenderer renderer   = tile.GetComponent <SpriteRenderer>();

            if (tile.tag != tileData.Tag)
            {
                return(false);
            }

            if (renderer.sortingOrder != tileData.OrderInLayer)
            {
                return(false);
            }

            if ((tileData.FlipHorizontally && localScale.x != -1) || (!tileData.FlipHorizontally && localScale.x != 1))
            {
                return(false);
            }

            if ((tileData.FlipVertically && localScale.y != -1) || (!tileData.FlipVertically && localScale.y != 1))
            {
                return(false);
            }

            if (renderer.sprite != tileData.Sprite)
            {
                return(false);
            }

            if (tile.Collision != tileData.Collision)
            {
                return(false);
            }

            if (Mathf.Abs(tile.transform.eulerAngles.z - tileData.Rotation) > 0.0001f)
            {
                return(false);
            }

            Collider2D collider = tile.GetComponent <Collider2D>();

            if (collider != null)
            {
                if (collider.isTrigger != tileData.IsTrigger || collider.sharedMaterial != tileData.PhysicsMaterial)
                {
                    return(false);
                }
            }

            return(true);
        }
Exemplo n.º 5
0
        public static bool IsTileColliderEqualsToColliderInfo(Tile tile, ColliderInfo colliderInfo)
        {
            if (tile == null || colliderInfo == null)
            {
                return false;
            }
            switch (colliderInfo.CollisionType)
            {
                case CollisionType.Box:
                    {
                        BoxCollider2D collider = tile.GetComponent(typeof(BoxCollider2D)) as BoxCollider2D;
                        BoxCollider2DInfo info = colliderInfo as BoxCollider2DInfo;
                        if (collider == null || info == null)
                        {
                            return false;
                        }
#if UNITY_5_0
                        if (info.Center == collider.offset && info.Size == collider.size)
#else
                         if (info.Center == collider.offset && info.Size == collider.size)
#endif
                        {
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                case CollisionType.Circle:
                    {
                        CircleCollider2D collider = tile.GetComponent(typeof(CircleCollider2D)) as CircleCollider2D;
                        CircleCollider2DInfo info = colliderInfo as CircleCollider2DInfo;
                        if (collider == null || info == null)
                        {
                            return false;
                        }
#if UNITY_5_0
                        if (collider.offset == info.Center && collider.radius == info.Radius)
#else
                        if (collider.offset == info.Center && collider.radius == info.Radius)

#endif
                        {
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                case CollisionType.Polygon:
                    {
                        PolygonCollider2D collider = tile.GetComponent(typeof(PolygonCollider2D)) as PolygonCollider2D;
                        PolygonCollider2DInfo info = colliderInfo as PolygonCollider2DInfo;
                        if (collider == null || info == null)
                        {
                            return false;
                        }

                        if (collider.pathCount == info.PathCount)
                        {
                            for (int i = 0; i < collider.pathCount; ++i)
                            {
                                if (collider.points[i] != info.Points[i])
                                {
                                    return false;
                                }
                            }
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                default:
                    return true;
            }
        }
Exemplo n.º 6
0
 public static TileData GetTileDataFromTile(Tile tile)
 {
     if (tile == null)
     {
         return null;
     }
     TileData tileData = new TileData();
     SpriteRenderer renderer = tile.GetComponent<SpriteRenderer>();
     Collider2D collider = tile.GetComponent<Collider2D>();
     Vector3 localScale = tile.transform.localScale;
     tileData.FlipHorizontally = localScale.x == -1;
     tileData.FlipVertically = localScale.y == -1;
     tileData.Sprite = renderer.sprite;
     tileData.OrderInLayer = renderer.sortingOrder;
     tileData.Rotation = tile.transform.rotation.eulerAngles.z;
     tileData.Collision = tile.Collision;
     tileData.Tag = tile.tag;
     if (collider != null)
     {
         tileData.IsTrigger = collider.isTrigger;
         tileData.PhysicsMaterial = collider.sharedMaterial;
     }
     return tileData;
 }
Exemplo n.º 7
0
        public static bool IsTheSameTile(Tile tile, TileData tileData)
        {
            Vector3 localScale = tile.transform.localScale;
            SpriteRenderer renderer = tile.GetComponent<SpriteRenderer>();

            if (tile.tag != tileData.Tag)
            {
                return false;
            }

            if (renderer.sortingOrder != tileData.OrderInLayer)
            {
                return false;
            }

            if ((tileData.FlipHorizontally && localScale.x != -1) || (!tileData.FlipHorizontally && localScale.x != 1))
            {
                return false;
            }

            if ((tileData.FlipVertically && localScale.y != -1) || (!tileData.FlipVertically && localScale.y != 1))
            {
                return false;
            }

            if (renderer.sprite != tileData.Sprite)
            {
                return false;
            }

            if (tile.Collision != tileData.Collision)
            {
                return false;
            }

            if (Mathf.Abs(tile.transform.eulerAngles.z - tileData.Rotation) > 0.0001f)
            {
                return false;
            }

            Collider2D collider = tile.GetComponent<Collider2D>();
            if (collider != null)
            {
                if (collider.isTrigger != tileData.IsTrigger || collider.sharedMaterial != tileData.PhysicsMaterial)
                {
                    return false;
                }
            }

            return true;
        }
Exemplo n.º 8
0
        public static void ApplyColliderInfoToTile(Tile tile, ColliderInfo colliderInfo)
        {
            if (tile == null || colliderInfo == null)
            {
                return;
            }

            CollisionType collisionType = colliderInfo.CollisionType;

            switch (collisionType)
            {
                case CollisionType.Box:
                    {
                        BoxCollider2DInfo info = colliderInfo as BoxCollider2DInfo;
                        BoxCollider2D collider = tile.GetComponent(typeof(BoxCollider2D)) as BoxCollider2D;
                        if (info != null && collider != null)
                        {
                            collider.size = info.Size;

#if UNITY_5_0
                            collider.offset = info.Center;
#else
                             collider.offset = info.Center;
#endif

                        }
                        break;
                    }

                case CollisionType.Circle:
                    {
                        CircleCollider2DInfo info = colliderInfo as CircleCollider2DInfo;
                        CircleCollider2D collider = tile.GetComponent(typeof(CircleCollider2D)) as CircleCollider2D;
                        if (info != null && collider != null)
                        {
#if UNITY_5_0
                            collider.offset = info.Center;
#else
                            collider.offset = info.Center;
#endif

                            collider.radius = info.Radius;
                        }
                        break;
                    }

                case CollisionType.Polygon:
                    {
                        PolygonCollider2DInfo info = colliderInfo as PolygonCollider2DInfo;
                        PolygonCollider2D collider = tile.GetComponent(typeof(PolygonCollider2D)) as PolygonCollider2D;
                        if (info != null && collider != null)
                        {
                            collider.pathCount = info.PathCount;
                            collider.points = info.Points;
                        }
                        break;
                    }

                default:
                    break;
            }

        }
Exemplo n.º 9
0
        public static ColliderInfo GetColliderInfoFromTile(Tile tile)
        {
            if (tile == null)
            {
                return null;
            }

            ColliderInfo info = null;
            CollisionType collisionType = tile.Collision;

            switch (collisionType)
            {
                case CollisionType.Box:
                    {
                        BoxCollider2D collider = tile.GetComponent(typeof(BoxCollider2D)) as BoxCollider2D;
                        if (collider)
                        {
#if UNITY_5_0
                            info = new BoxCollider2DInfo(collider.offset, collider.size);
#else
                              info = new BoxCollider2DInfo(collider.offset, collider.size);
#endif

                        }
                        break;
                    }
                case CollisionType.Circle:
                    {
                        CircleCollider2D collider = tile.GetComponent(typeof(CircleCollider2D)) as CircleCollider2D;
                        if (collider)
                        {
#if UNITY_5_0
                            info = new CircleCollider2DInfo(collider.offset, collider.radius);
#else
                              info = new CircleCollider2DInfo(collider.offset, collider.radius);
#endif

                        }
                        break;
                    }
                case CollisionType.Polygon:
                    {
                        PolygonCollider2D collider = tile.GetComponent(typeof(PolygonCollider2D)) as PolygonCollider2D;
                        if (collider)
                        {
                            info = new PolygonCollider2DInfo(collider.pathCount, collider.points);
                        }
                        break;
                    }
                default:
                    break;
            }

            return info;
        }
Exemplo n.º 10
0
        public static bool IsTileColliderEqualsToColliderInfo(Tile tile, ColliderInfo colliderInfo)
        {
            if (tile == null || colliderInfo == null)
            {
                return(false);
            }
            switch (colliderInfo.CollisionType)
            {
            case CollisionType.Box: {
                BoxCollider2D     collider = tile.GetComponent(typeof(BoxCollider2D)) as BoxCollider2D;
                BoxCollider2DInfo info     = colliderInfo as BoxCollider2DInfo;
                if (collider == null || info == null)
                {
                    return(false);
                }
#if UNITY_5_0
                if (info.Center == collider.offset && info.Size == collider.size)
#else
                if (info.Center == collider.offset && info.Size == collider.size)
#endif
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }

            case CollisionType.Circle: {
                CircleCollider2D     collider = tile.GetComponent(typeof(CircleCollider2D)) as CircleCollider2D;
                CircleCollider2DInfo info     = colliderInfo as CircleCollider2DInfo;
                if (collider == null || info == null)
                {
                    return(false);
                }
#if UNITY_5_0
                if (collider.offset == info.Center && collider.radius == info.Radius)
#else
                if (collider.offset == info.Center && collider.radius == info.Radius)
#endif
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }

            case CollisionType.Polygon: {
                PolygonCollider2D     collider = tile.GetComponent(typeof(PolygonCollider2D)) as PolygonCollider2D;
                PolygonCollider2DInfo info     = colliderInfo as PolygonCollider2DInfo;
                if (collider == null || info == null)
                {
                    return(false);
                }

                if (collider.pathCount == info.PathCount)
                {
                    for (int i = 0; i < collider.pathCount; ++i)
                    {
                        if (collider.points[i] != info.Points[i])
                        {
                            return(false);
                        }
                    }
                    return(true);
                }
                else
                {
                    return(false);
                }
            }

            default:
                return(true);
            }
        }