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 }; }
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 }; }
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); }