/// <inheritdoc/> public override void ComputeMatrix(bool recursive, out Matrix matrix) { // Updated? (rare slow path) if (sheet != parentModelComponent.Sheet) { for (var index = 0; index < parentModelComponent.Nodes.Count; index++) { var node = parentModelComponent.Nodes[index]; if (node.BaseNode.Name != nodeName) { continue; } nodeIndex = index; break; } sheet = parentModelComponent.Sheet; } var nodes = parentModelComponent.Nodes; if (nodeIndex >= nodes.Count) { goto failed; } // Hopefully, if ref locals gets merged in roslyn, this code can be refactored // Compute matrix = nodes[nodeIndex].ModelTransform * parentModelComponent.Entity.Transform.WorldMatrix; return; failed: // Fallback to TransformComponent matrix = parentModelComponent.Entity.Transform.WorldMatrix; }
/// <inheritdoc/> public override void ComputeMatrix(bool recursive, out Matrix matrix) { // Updated? (rare slow path) if (sheet != parentModelComponent.Sheet) { for (var index = 0; index < parentModelComponent.Nodes.Count; index++) { var node = parentModelComponent.Nodes[index]; if (node.BaseNode.Name != nodeName) continue; nodeIndex = index; break; } sheet = parentModelComponent.Sheet; } var nodes = parentModelComponent.Nodes; if (nodeIndex >= nodes.Count) { goto failed; } // Hopefully, if ref locals gets merged in roslyn, this code can be refactored // Compute matrix = nodes[nodeIndex].ModelTransform * parentModelComponent.Entity.Transform.WorldMatrix; return; failed: // Fallback to TransformComponent matrix = parentModelComponent.Entity.Transform.WorldMatrix; }
public SpriteStudioNodeTransformLink(SpriteStudioComponent parentModelComponent, string nodeName) { this.parentModelComponent = parentModelComponent; this.nodeName = nodeName; sheet = parentModelComponent.Sheet; for (var index = 0; index < parentModelComponent.Nodes.Count; index++) { var node = parentModelComponent.Nodes[index]; if (node.BaseNode.Name == nodeName) { nodeIndex = index; break; } } }