public SpriteStudioNode()
 {
     BaseState = new SpriteStudioNodeState
     {
         Position = Vector2.Zero,
         RotationZ = 0.0f,
         Priority = 0,
         Scale = Vector2.One,
         Transparency = 1.0f,
         Hide = true,
         SpriteId = -1,
         BlendColor = Color.White,
         BlendType = SpriteStudioBlending.Mix,
         BlendFactor = 0.0f
     };
 }
Exemple #2
0
 public SpriteStudioNode()
 {
     BaseState = new SpriteStudioNodeState
     {
         Position     = Vector2.Zero,
         RotationZ    = 0.0f,
         Priority     = 0,
         Scale        = Vector2.One,
         Transparency = 1.0f,
         Hide         = true,
         SpriteId     = -1,
         BlendColor   = Color.White,
         BlendType    = SpriteStudioBlending.Mix,
         BlendFactor  = 0.0f
     };
 }
Exemple #3
0
        internal static SpriteStudioNodeState InitializeNodes(SpriteStudioComponent spriteStudioComponent)
        {
            spriteStudioComponent.Nodes.Clear();

            var nodes = spriteStudioComponent.Sheet?.NodesInfo;

            if (nodes == null)
            {
                return(null);
            }

            //check if the sheet name dictionary has already been populated
            if (spriteStudioComponent.Sheet.Sprites == null)
            {
                spriteStudioComponent.Sheet.Sprites = new Dictionary <int, Sprite>();
                var index = 0;
                foreach (var sprite in spriteStudioComponent.Sheet.SpriteSheet.Sprites)
                {
                    spriteStudioComponent.Sheet.Sprites.Add(index, sprite);
                    index++;
                }
            }

            foreach (var node in nodes)
            {
                var nodeState = new SpriteStudioNodeState
                {
                    Position     = node.BaseState.Position,
                    RotationZ    = node.BaseState.RotationZ,
                    Priority     = node.BaseState.Priority,
                    Scale        = node.BaseState.Scale,
                    Transparency = node.BaseState.Transparency,
                    Hide         = node.BaseState.Hide,
                    BaseNode     = node,
                    HFlipped     = node.BaseState.HFlipped,
                    VFlipped     = node.BaseState.VFlipped,
                    SpriteId     = node.BaseState.SpriteId,
                    BlendColor   = node.BaseState.BlendColor,
                    BlendType    = node.BaseState.BlendType,
                    BlendFactor  = node.BaseState.BlendFactor
                };

                Sprite sprite;
                nodeState.Sprite = spriteStudioComponent.Sheet.Sprites.TryGetValue(nodeState.SpriteId, out sprite) ? sprite : null;

                spriteStudioComponent.Nodes.Add(nodeState);
            }

            SpriteStudioNodeState rootNode = null;

            for (var i = 0; i < nodes.Count; i++)
            {
                var nodeState = spriteStudioComponent.Nodes[i];
                var nodeAsset = nodes[i];

                if (nodeAsset.ParentId == -1)
                {
                    rootNode = nodeState;
                }
                else
                {
                    nodeState.ParentNode = spriteStudioComponent.Nodes.FirstOrDefault(x => x.BaseNode.Id == nodeAsset.ParentId);
                }

                foreach (var subNode in spriteStudioComponent.Nodes.Where(subNode => subNode.BaseNode.ParentId == nodeAsset.Id))
                {
                    nodeState.ChildrenNodes.Add(subNode);
                }
            }

            return(rootNode);
        }