Esempio n. 1
0
        private void OpenFiles()
        {
            Bitmap atlas = null;
            KBuild build = null;
            KAnim  anim  = null;

            if (currentAtlasFile != null)
            {
                using (FileStream fs = new FileStream(currentAtlasFile, FileMode.Open))
                {
                    Bitmap bmp = new Bitmap(fs);
                    atlas = (Bitmap)bmp.Clone();
                }
            }

            if (currentBuildFile != null)
            {
                build = KAnimUtils.ReadBuild(currentBuildFile);
            }

            if (currentAnimFile != null)
            {
                anim = KAnimUtils.ReadAnim(currentAnimFile);
            }

            OpenData(atlas, build, anim);
        }
        public void Render(KBuild build, KAnimBank bank, int frameNumber)
        {
            Matrix4 modelMat     = Matrix4.Identity;
            Matrix4 pivotMat     = Matrix4.Identity;
            Matrix4 transformMat = Matrix4.Identity;


            geoShader.Activate();
            // Draw Origin
            geoShader.SetUniform("Model", ref modelMat);
            origin.Draw();

            if (frameNumber < 0 || frameNumber >= bank.FrameCount)
            {
                frameNumber = 0;
            }

            KAnimFrame frame = bank.Frames[frameNumber];

            Matrix4 frameMat = Matrix4.CreateTranslation(frame.X, frame.Y, 0);

            spriteShader.Activate();
            texture.Bind();

            for (int i = frame.ElementCount - 1; i >= 0; i--)
            {
                KAnimElement element = frame.Elements[i];
                string       symbol  = build.GetSymbolName(element.SymbolHash);
                if (symbol == null)
                {
                    continue;
                }
                KFrame sprite = build.GetFrame(symbol, element.FrameNumber);
                if (sprite == null)
                {
                    continue;
                }

                pivotMat = Matrix4.CreateTranslation(sprite.PivotX, sprite.PivotY, 0);

                transformMat = new Matrix4(
                    element.M00, -element.M10, 0, 0,
                    element.M01, -element.M11, 0, 0,
                    0, 0, -1, 0,
                    element.M02, -element.M12, 0, 1
                    );

                modelMat = halfScaleMat * pivotMat * transformMat;

                spriteShader.SetUniform("Model", ref modelMat);

                MakeQuadVBO(sprite.PivotWidth, sprite.PivotHeight, element.Red, element.Green, element.Blue, element.Alpha, sprite.GetUVRectangle(), out Vertex[] vertices, out int[] elements);
                quad.SetData(OpenTK.Graphics.OpenGL.PrimitiveType.Triangles, vertices, elements);

                quad.Draw();
            }
        }
Esempio n. 3
0
        //public static Sprite GenerateBuildingSprite(int width, int height)
        //{

        //}

        public static Sprite[] BuildSprites(Bitmap atlas, KBuild buildData)
        {
            List <Sprite> sprites = new List <Sprite>();

            foreach (KSymbol symbol in buildData.Symbols)
            {
                foreach (KFrame frame in symbol.Frames)
                {
                    Bitmap croppedImg = atlas.Clone(frame.GetUVRectangle(atlas.Width, atlas.Height), atlas.PixelFormat);
                    Sprite spr        = new Sprite(frame, croppedImg);
                    sprites.Add(spr);
                }
            }
            return(sprites.ToArray());
        }
Esempio n. 4
0
        private void OpenData(Bitmap atlas, KBuild build, KAnim anim)
        {
            data         = new KAnimPackage();
            data.Texture = atlas;
            UpdateAtlasView(data.Texture);

            data.Build = build;
            data.Anim  = anim;
            UpdateBuildTree(data);

            closeToolStripMenuItem.Enabled               = FilesAreOpen;
            convertToSCMLToolStripMenuItem.Enabled       = data.IsComplete;
            splitTextureAtlasToolStripMenuItem.Enabled   = data.IsValidAtlas;
            rebuildTextureAtlasToolStripMenuItem.Enabled = data.IsValidAtlas;
            saveTextureAtlasToolStripMenuItem.Enabled    = data.HasTexture;
            saveBuildFileToolStripMenuItem.Enabled       = data.HasBuild;
            saveAnimFileToolStripMenuItem.Enabled        = data.HasAnim;
            previewAnimToolStripMenuItem.Enabled         = data.IsComplete;
        }