/// <summary> /// Copy tileset image file to point out folder , and change the image import setting fit for tileset rendering /// </summary> public static void CopyTilesetImage(ITU_TsxRootMeta _tileset, string _saveToFolderFullPath) { var saveToFileFullPath = _saveToFolderFullPath + Path.DirectorySeparatorChar + _tileset.imgNameWithExtension; if (File.Exists(saveToFileFullPath)) { File.Delete(saveToFileFullPath); } if (!Directory.Exists(_saveToFolderFullPath)) { Directory.CreateDirectory(_saveToFolderFullPath); } FileUtil.CopyFileOrDirectory(_tileset.imgSourceFullPath, saveToFileFullPath); AssetDatabase.Refresh(); var imgFilePath = FileUtil.GetProjectRelativePath(saveToFileFullPath); var importer = AssetImporter.GetAtPath(imgFilePath) as TextureImporter; var textureSettings = new TextureImporterSettings(); importer.ReadTextureSettings(textureSettings); textureSettings.textureType = TextureImporterType.Default; textureSettings.textureShape = TextureImporterShape.Texture2D; textureSettings.streamingMipmaps = false; textureSettings.wrapMode = TextureWrapMode.Clamp; textureSettings.filterMode = FilterMode.Point; importer.SetTextureSettings(textureSettings); importer.SaveAndReimport(); }
/// <summary> /// Warp Function for CopyTilesetImage & SaveMaterialFromTemplate /// </summary> public static Material SaveTilsetImageAndMaterial(ITU_TsxRootMeta _tileset, Material _template, string _imgSaveToRelatePath, string _matSaveToRelatePath) { _imgSaveToRelatePath = Application.dataPath + _imgSaveToRelatePath; _matSaveToRelatePath = Application.dataPath + _matSaveToRelatePath; CopyTilesetImage(_tileset, _imgSaveToRelatePath); // Path.DirectorySeparatorChar var imgFullPath = _imgSaveToRelatePath + "/" + _tileset.imgNameWithExtension; var matFullPath = _matSaveToRelatePath + "/" + Path.GetFileNameWithoutExtension(_tileset.imgNameWithExtension) + ".mat"; return(SaveMaterialFromTemplate(_template, imgFullPath, matFullPath)); }
private void HandleTilesetNode(XElement _node) { var tsxFilePath = new FileInfo(_node.Attribute("source").Value).FullName; var tsxFile = XDocument.Load(tsxFilePath); var fistGid = Convert.ToInt32(_node.Attribute("firstgid").Value); var tileset = new ITU_TsxRootMeta(); tileset.Deserialize(tsxFile.Root, tsxFilePath, fistGid); tilsetList.Add(tileset); }
public static void DeleteNotUsedImageAndMaterial(ITU_TsxRootMeta _tileset, string _imgSaveToRelatePath, string _matSaveToRelatePath) { if (_tileset.isUesdInRender) { return; } _imgSaveToRelatePath = Application.dataPath + _imgSaveToRelatePath; _matSaveToRelatePath = Application.dataPath + _matSaveToRelatePath; var imgFullPath = _imgSaveToRelatePath + "/" + _tileset.imgNameWithExtension; var matFullPath = _matSaveToRelatePath + "/" + Path.GetFileNameWithoutExtension(_tileset.imgNameWithExtension) + ".mat"; FileUtil.DeleteFileOrDirectory(imgFullPath); FileUtil.DeleteFileOrDirectory(matFullPath); AssetDatabase.Refresh(); }
/// <summary> /// 根据在当前地图中指定的Gid,返回其所对应的TileMeta /// </summary> public static void GetTileMetaByGid(ITU_TmxRootMeta _mapMeta, int _gid, out ITU_TsxRootMeta _tilesetMeta, out ITU_TsxEachTileMeta _eachTileMeta) { foreach (var tilesetMeta in _mapMeta.tilsetList) { foreach (var tileMeta in tilesetMeta.eachTileMetaList) { if (tileMeta.gid == _gid) { _tilesetMeta = tilesetMeta; _eachTileMeta = tileMeta; return; } } } throw new Exception(string.Format("Can't find tile meta with gid {0} in Txm file {1}", _gid, _mapMeta.fileName)); }