// Create a new window to represent the passed node void AddWindowForNode(AT_Node node) { if (node == null) { //Debug.LogError ("AnimationTreeEditor: Trying to add window for null node"); return; } NodeWindow win = null; switch (node.NodeType) { case AT_NodeType.kOutput: AT_OutputNode resNode = (AT_OutputNode)node; win = new ResultNodeWindow (new Rect (resNode.EditorProperties.Position.x, resNode.EditorProperties.Position.y, 150, 50), node); break; case AT_NodeType.kAnimation: AT_Animation animNode = (AT_Animation)node; win = new AnimationNodeWindow (new Rect (node.EditorProperties.Position.x, node.EditorProperties.Position.y, 200, 60), animNode.m_animationName, node); break; case AT_NodeType.kPose: AT_Pose poseNode = (AT_Pose)node; win = new PoseNodeWindow (new Rect (node.EditorProperties.Position.x, node.EditorProperties.Position.y, 200, 60), poseNode.m_animationName, node); break; case AT_NodeType.kAnimationState: AT_AnimationState animState = (AT_AnimationState)node; win = new AnimationStateWindow (new Rect (node.EditorProperties.Position.x, node.EditorProperties.Position.y, 150, 60), animState.m_animation.m_animationName, node); break; case AT_NodeType.kBlendGraph: win = new BlendGraphWindow (new Rect (node.EditorProperties.Position.x, node.EditorProperties.Position.y, 150, 60), node); break; case AT_NodeType.kBlend: win = new BlendNodeWindow (new Rect (node.EditorProperties.Position.x, node.EditorProperties.Position.y, 150, 100), node); break; case AT_NodeType.kStateMachine: win = new StateMachineWindow (new Rect (node.EditorProperties.Position.x, node.EditorProperties.Position.y, 150, 60), node); break; case AT_NodeType.kBlendContainer: win = new BlendContainerWindow (new Rect (node.EditorProperties.Position.x, node.EditorProperties.Position.y, 200, 60), node); break; case AT_NodeType.kAdditiveBlend: win = new AdditiveBlendNodeWindow (new Rect (node.EditorProperties.Position.x, node.EditorProperties.Position.y, 150, 100), node); break; case AT_NodeType.kBlendStateMachine: win = new BlendSMWindow (new Rect (node.EditorProperties.Position.x, node.EditorProperties.Position.y, 200, 60), node); break; case AT_NodeType.kRoot: Debug.LogError ("AnimationTreeEditor: Trying to add a window for the root node"); /*AT_StateMachine sm = node as AT_StateMachine; if (sm != null) { Debug.Log (sm.m_stateName); }*/ Debug.Log(node.GetType()); break; } if (win != null) { m_Windows.Add (win); } // If this is a contianer, create new windows for all of its children AT_ContainerNode cont = node as AT_ContainerNode; if ( cont != null && !cont.Expandable) { foreach ( AT_Node cNode in cont.Children ) { //for ( int i = 0; i < cont.Children.Count; i++ ) //{ AddWindowForNode( cNode );//cont.Children[i] ); //} } for (int i = 0; i < cont.UnassignedChildren.Count; i++) { AddWindowForNode(cont.UnassignedChildren[i]); } } }