Пример #1
0
        /// <summary>
        /// Determines if a TileObjectSO can be build at the given location.
        /// </summary>
        /// <param name="map"></param>
        /// <param name="subLayerIndex"></param>
        /// <param name="tileObjectSO"></param>
        /// <param name="position"></param>
        /// <param name="dir"></param>
        /// <returns></returns>
        public bool CanBuild(TileMap selectedMap, int subLayerIndex, TileObjectSo tileObjectSO, Vector3 position, Direction dir, bool overrideAllowed)
        {
            bool canBuild = true;

            foreach (TileMap map in mapList)
            {
                if (map == selectedMap)
                {
                    if (overrideAllowed)
                    {
                        // Do not check if the tile is occupied. Only apply tile restrictions.
                        canBuild &= map.CanBuild(subLayerIndex, tileObjectSO, position, dir, CheckRestrictions.OnlyRestrictions);
                    }
                    else
                    {
                        // Check for tile restrictions as well.
                        canBuild &= map.CanBuild(subLayerIndex, tileObjectSO, position, dir, CheckRestrictions.Everything);
                    }
                }
                else
                {
                    // Only check if the tile is occupied. Otherwise we cannot build furniture for example.
                    canBuild &= map.CanBuild(subLayerIndex, tileObjectSO, position, dir, CheckRestrictions.None);
                }
            }
            return(canBuild);
        }
Пример #2
0
 /// <summary>
 /// Sets a new TileObjectSO at a map for a given position and direction. Wrapper function for TileMap.SetTileObject().
 /// </summary>
 /// <param name="map"></param>
 /// <param name="subLayerIndex"></param>
 /// <param name="tileObjectSO"></param>
 /// <param name="position"></param>
 /// <param name="dir"></param>
 public void SetTileObject(TileMap map, int subLayerIndex, TileObjectSo tileObjectSO, Vector3 position, Direction dir)
 {
     if (CanBuild(map, subLayerIndex, tileObjectSO, position, dir, false))
     {
         map.SetTileObject(subLayerIndex, tileObjectSO, position, dir);
     }
 }
Пример #3
0
        /// <summary>
        /// Simplified version of CanBuild(). Assumes the main map is used and no sub layers are needed.
        /// </summary>
        /// <param name="tileObjectSO"></param>
        /// <param name="position"></param>
        /// <param name="dir"></param>
        /// <returns></returns>
        public bool CanBuild(TileObjectSo tileObjectSO, Vector3 position, Direction dir)
        {
            if (tileObjectSO.layer == TileLayer.HighWallMount || tileObjectSO.layer == TileLayer.LowWallMount)
            {
                Debug.LogError("Simplified function CanBuild() is used. Do not use this function with layers where a sub index is required!");
            }

            return(CanBuild(GetMainMap(), 0, tileObjectSO, position, dir, false));
        }
Пример #4
0
        /// <summary>
        /// Simplified version of SetTileObject. Will set a TileObjectSO on the main map without a sub layer.
        /// </summary>
        /// <param name="tileObjectSO"></param>
        /// <param name="position"></param>
        /// <param name="dir"></param>
        public void SetTileObject(TileObjectSo tileObjectSO, Vector3 position, Direction dir)
        {
            if (tileObjectSO.layer == TileLayer.HighWallMount || tileObjectSO.layer == TileLayer.LowWallMount)
            {
                Debug.LogError("Simplified function SetTileObject() is used. Do not use this function with layers where a sub index is required!");
            }

            GetMainMap().SetTileObject(0, tileObjectSO, position, dir);
        }
Пример #5
0
        /// <summary>
        /// Returns a TileObjectSO for a given name. Used during loading to find a matching object.
        /// </summary>
        /// <param name="tileObjectSOName"></param>
        /// <returns></returns>
        public TileObjectSo GetTileObjectSO(string tileObjectSOName)
        {
            TileObjectSo tileObjectSO = tileObjectSOs.FirstOrDefault(tileObject => tileObject.nameString == tileObjectSOName);

            if (tileObjectSO == null)
            {
                Debug.LogError("TileObjectSO was not found: " + tileObjectSOName);
            }
            return(tileObjectSO);
        }
Пример #6
0
        // [MenuItem("RE:SS3D Editor Tools/Migrate")]
        public static void Migrate()
        {
            string[] guids = AssetDatabase.FindAssets(string.Format("t:{0}", typeof(TileObjectSo)));

            for (int i = 0; i < guids.Length; i++)
            {
                string       assetPath = AssetDatabase.GUIDToAssetPath(guids[i]);
                TileObjectSo asset     = AssetDatabase.LoadAssetAtPath <TileObjectSo>(assetPath);

                if (asset.nameString == asset.prefab.name)
                {
                    continue;
                }

                asset.nameString = asset.prefab.name;

                AssetDatabase.RenameAsset(assetPath, asset.prefab.name);
                AssetDatabase.SaveAssets();

                Debug.Log("Migrated object: " + asset.name + ", New name: " + asset.nameString);
            }
        }
Пример #7
0
        public TileDragHandler(TileManager tileManager, TileMapEditor mapEditor, Engine.Tiles.TileMap map, int subLayerIndex, TileObjectSo tileObjectSO, Direction selectedDir, Vector3Int snappedPosition)
        {
            this.tileManager   = tileManager;
            this.mapEditor     = mapEditor;
            this.map           = map;
            this.subLayerIndex = subLayerIndex;
            this.tileObjectSO  = tileObjectSO;
            this.selectedDir   = selectedDir;
            startPosition      = snappedPosition;
            curPosition        = snappedPosition;

            var tile = CreateGhost();

            tile.transform.position = new Vector3(snappedPosition.x, 0, snappedPosition.y);
            dragTiles.Insert(0, tile);
        }