Ejemplo n.º 1
0
        public static SpriteMetaData GenerateSpriteMetaData(IExportContainer container, SpriteAtlas originAtlas, Sprite origin)
        {
            origin.GetCoordinates(originAtlas, out Rectf rect, out Vector2f pivot, out Vector4f border);

            SpriteMetaData instance = new SpriteMetaData(container.ExportVersion);

            instance.Name      = origin.Name;
            instance.Rect      = rect;
            instance.Alignment = SpriteAlignment.Custom;
            instance.Pivot     = pivot;
            instance.Border    = border;
            if (SpriteMetaData.HasOutline(container.ExportVersion))
            {
                instance.Outline = origin.GenerateOutline(originAtlas, rect, pivot);
            }
            if (SpriteMetaData.HasPhysicsShape(container.ExportVersion))
            {
                if (Sprite.HasPhysicsShape(container.Version))
                {
                    instance.PhysicsShape = GetPhysicsShape(container, originAtlas, origin, rect, pivot);
                }
            }
            instance.TessellationDetail = 0;
            if (SpriteMetaData.HasBones(container.ExportVersion))
            {
                if (Sprite.HasBones(container.Version))
                {
                    instance.Bones = origin.Bones;
                    // NOTE: sprite ID is generated by sprite binary content, but we just generate a random value
                    instance.SpriteID = Guid.NewGuid().ToString("N");
#warning TODO:

                    /*instance.Vertices = GetBoneVertices(container, origin);
                     * instance.Indices = GetBoneIndices(container, origin);
                     * instance.Edges = GetBoneEdges(container, origin);
                     * instance.Weights = GetBoneWeights(container, origin);*/
                }
            }
            return(instance);
        }