示例#1
0
        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);
        }
示例#2
0
        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());
        }
示例#3
0
            // 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);
            }