Exemplo n.º 1
0
        private void CreateTile(List <Vector3> vertices, List <int> triangles, List <Vector2> uvs, int x, int y, int tile, TilesetManager tilesetManager)
        {
            // coordinates start from top-left, remember
            vertices.Add(new Vector2f(x, y));         // TL
            vertices.Add(new Vector2f(x + 1, y));     // TR
            vertices.Add(new Vector2f(x, y + 1));     // BL

            vertices.Add(new Vector2f(x, y + 1));     // BL
            vertices.Add(new Vector2f(x + 1, y));     // TR
            vertices.Add(new Vector2f(x + 1, y + 1)); // BR

            for (int i = 0; i < 6; i++)
            {
                triangles.Add(triangles.Count);
            }

            Sprite sprite = TilemapSpriteManager.Instance.GetSprite(tilesetManager, tile);

            if (sprite == null)
            {
                FlaiDebug.LogErrorWithTypeTag <Tilemap>("Error - No Sprite found in TilemapSpriteManager");
                return;
            }

            RectangleF uv = sprite.textureRect.ToRectangleF() * sprite.texture.texelSize;

            uvs.Add(uv.TopLeft);
            uvs.Add(uv.TopRight);
            uvs.Add(uv.BottomLeft);

            uvs.Add(uv.BottomLeft);
            uvs.Add(uv.TopRight);
            uvs.Add(uv.BottomRight);
        }
Exemplo n.º 2
0
        public void OnMapUpdated()
        {
            Ensure.IsEditor();
            this.GameObject.DestroyAllChildrenImmediate();

            // if the map was removed, then no need to create a new map
            if (this.TmxAsset == null || this.Tilemaps == null || this.Tilemaps.Count == 0)
            {
                return;
            }

            if (this.TilemapPrefab == null)
            {
                FlaiDebug.LogErrorWithTypeTag <TilemapContainer>("TilemapPrefab is null - aborting!");
                return;
            }

            foreach (TilemapData data in this.Tilemaps)
            {
                FlaiDebug.LogWithTypeTag <TilemapContainer>("Building a tilemap \"{2}\" ({0}x{1})", data.Width, data.Height, data.Name);
                GameObject tilemap = this.TilemapPrefab.Instantiate();
                if (data.HasProperty("CreateColliders"))
                {
                    bool value;
                    if (bool.TryParse(data.GetProperty("CreateColliders"), out value))
                    {
                        tilemap.Get <Tilemap>().CreateColliders = value;
                    }
                }

                tilemap.name = data.Name.NullIfEmpty() ?? "Tilemap";
                tilemap.SetParent(this.GameObject);
                tilemap.SetLayer("Tiles");

                try
                {
                    tilemap.Get <Tilemap>().CreateFrom(data, this.TmxAsset.TilesetManager);
                }
                catch
                {
                    FlaiDebug.LogErrorWithTypeTag <TilemapContainer>("Error - Aborting");
                    throw;
                }

                this.TmxAsset.NeedsRefresh = false;
            }
        }
Exemplo n.º 3
0
        public void Create()
        {
            if (this.TilemapData == null)
            {
                FlaiDebug.LogErrorWithTypeTag <Tilemap>("Error creating a Tilemap: TilemapData is null!");
                return;
            }

            if (this.TilesetManager == null)
            {
                FlaiDebug.LogErrorWithTypeTag <Tilemap>("Error creating a Tilemap: TilesetManager is null!");
                return;
            }

            try
            {
                this.CreateMesh();
            }
            catch
            {
                FlaiDebug.LogErrorWithTypeTag <Tilemap>("Error Creating Mesh - aborting");
                throw;
            }

            foreach (EdgeCollider2D collider in this.GetComponents <EdgeCollider2D>())
            {
                Component.Destroy(collider);
            }

            if (this.CreateColliders)
            {
                try
                {
                    this.CreateEdgeColliders();
                }
                catch
                {
                    FlaiDebug.LogErrorWithTypeTag <Tilemap>("Error Creating Colliders - aborting");
                    throw;
                }
            }
        }