public Data CheckCollider() { if (data == null) { data = new Data(); } // Get the Sprite component SpriteFactory.Sprite sprite = GetComponent <SpriteFactory.Sprite>(); if (sprite == null) { UnityEngine.Debug.LogError("Sprite component not found!"); return(null); } // Get the Master Sprite SpriteFactory.GameMasterSprite masterSprite = sprite.masterSprite; if (masterSprite == null) { UnityEngine.Debug.LogError("MasterSprite not found!"); return(null); } // Get the editor frame SpriteFactory.Sprite.Frame frame = masterSprite.data.GetEditorPreviewFrame(); if (frame == null) { UnityEngine.Debug.LogWarning(sprite.name + " has no frame data! Cannot regenrate mesh collider."); return(null); } // Get the atlases SpriteFactory.Sprite.Atlas[] atlases = masterSprite.data.atlases; if (atlases == null || atlases.Length == 0) { UnityEngine.Debug.LogWarning(sprite.name + " has no atlases! Cannot regenrate mesh collider."); return(null); } // Get the atlas for the editor frame SpriteFactory.Sprite.Atlas atlas = atlases[frame.atlasIndex]; if (atlas == null) { UnityEngine.Debug.LogWarning(sprite.name + "'s atlas is missing! Cannot regenrate mesh collider."); return(null); } // Read the atlas size, offset, and flipped data // PPU will be added in by the inspector since we have no access to it data.masterSprite = masterSprite; data.pixelScale = new UnityEngine.Vector2(atlas.width, atlas.height); data.unitOffset = new UnityEngine.Vector3(frame.frameOffset.x, frame.frameOffset.y, 0.0f); data.uvCoords = frame.uvCoords; data.atlasSize = atlas.width; data.isFlippedX = sprite.isFlippedX; data.isFlippedY = sprite.isFlippedY; return(data); }
private UnityEngine.Texture2D FindFrameTexture(SpriteFactory.GameMasterSprite gameMasterSprite) { SpriteFactory.Editor.EditorMasterSpriteCore emsc = FileFinder.GetEditorMasterSprite(gameMasterSprite); if (emsc == null) { throw new System.Exception("EditorMasterSprite could not be found!"); } SpriteFactory.Editor.EditorMasterSprite.Frame frame = emsc.data.GetEditorPreviewFrame(); if (frame == null) { return(null); // no frame } return(frame.GetTexture()); }
// METHODS public static SpriteFactory.Editor.EditorMasterSpriteCore GetEditorMasterSprite(SpriteFactory.GameMasterSprite gameMasterSprite) { string emsSavePath = rootPath + editorMasterSpriteSavePath; string gmsFilePath = UnityEditor.AssetDatabase.GetAssetPath(gameMasterSprite); string gmsFileName = System.IO.Path.GetFileNameWithoutExtension(gmsFilePath); // convert GMS file name to EMS file name string gmsFileNameL = gmsFileName.ToLower(); string gmsTypeCodeL = gameMasterSpriteTypeCode.ToLower(); string sgTypeCodeL = spriteGroupTypeCode.ToLower(); string emscFileName; if (gmsFileNameL.StartsWith(gmsTypeCodeL)) // this is an ungrouped master sprite { emscFileName = editorMasterSpriteTypeCode + gmsFileName.Substring(gameMasterSpriteTypeCode.Length, gmsFileName.Length - (gameMasterSpriteTypeCode.Length * 2)) + editorMasterSpriteCoreTypeCode; // strip start and end type codes replacing with ~MS~, end MSC } else if (gmsFileNameL.StartsWith(sgTypeCodeL)) // this is a grouped master sprite { emscFileName = gmsFileName.Substring(0, gmsFileName.Length - gameMasterSpriteTypeCode.Length) + editorMasterSpriteCoreTypeCode; // strip off end and replace with ems core version emscFileName.Replace(fileNameDelimiter + gameMasterSpriteTypeCode + fileNameDelimiter, fileNameDelimiter + editorMasterSpriteTypeCode + fileNameDelimiter); // replace middle ~GMS~ with ems version } else { throw new System.Exception("Error trying to parse MasterSprite file name!"); } string emscFullPath = emsSavePath + directoryDelimiter + emscFileName + assetExtension; if (!System.IO.File.Exists(emscFullPath)) { return(null); } SpriteFactory.Editor.EditorMasterSpriteCore emsc = (SpriteFactory.Editor.EditorMasterSpriteCore)UnityEditor.AssetDatabase.LoadAssetAtPath(emscFullPath, typeof(SpriteFactory.Editor.EditorMasterSpriteCore)); return(emsc); }