void BuildNodes(NodeHandle <TransitionByBoolNode> thisHandle, NodeSetAPI set) { if (m_TransitionType == TransitionType.Crossfade) { m_MixerNode = set.Create <MixerNode>(); m_WeightAccumulatorNode = set.Create <WeightAccumulatorNode>(); set.Connect(m_DeltaTimeNode, KernelPassThroughNodeFloat.KernelPorts.Output, m_WeightAccumulatorNode, WeightAccumulatorNode.KernelPorts.DeltaTime); if (m_BlendCurve.IsCreated) { m_AnimationCurveEvaluationNode = set.Create <EvaluateCurveNode>(); set.Connect(m_WeightAccumulatorNode, WeightAccumulatorNode.KernelPorts.BlendWeight, m_AnimationCurveEvaluationNode, EvaluateCurveNode.KernelPorts.Time); set.Connect(m_AnimationCurveEvaluationNode, EvaluateCurveNode.KernelPorts.Output, m_MixerNode, MixerNode.KernelPorts.Weight); set.Connect(thisHandle, SimulationPorts.m_OutBlendCurve, m_AnimationCurveEvaluationNode, EvaluateCurveNode.SimulationPorts.AnimationCurve); } else { set.Connect(m_WeightAccumulatorNode, WeightAccumulatorNode.KernelPorts.BlendWeight, m_MixerNode, MixerNode.KernelPorts.Weight); } set.Connect(m_FalseInputNode, KernelPassThroughNodeBufferFloat.KernelPorts.Output, m_MixerNode, MixerNode.KernelPorts.Input0); set.Connect(m_TrueInputNode, KernelPassThroughNodeBufferFloat.KernelPorts.Output, m_MixerNode, MixerNode.KernelPorts.Input1); set.Connect(m_MixerNode, MixerNode.KernelPorts.Output, m_OutputNode, KernelPassThroughNodeBufferFloat.KernelPorts.Input); set.Connect(thisHandle, SimulationPorts.m_OutRig, m_MixerNode, MixerNode.SimulationPorts.Rig); set.Connect(thisHandle, SimulationPorts.m_OutDuration, m_WeightAccumulatorNode, WeightAccumulatorNode.SimulationPorts.Duration); set.Connect(thisHandle, SimulationPorts.m_OutClipSource, m_WeightAccumulatorNode, WeightAccumulatorNode.SimulationPorts.ClipSource); } else if (m_TransitionType == TransitionType.Inertial) { m_InertialBlendingNode = set.Create <InertialBlendingNode>(); set.Connect(m_DeltaTimeNode, KernelPassThroughNodeFloat.KernelPorts.Output, m_InertialBlendingNode, InertialBlendingNode.KernelPorts.DeltaTime); set.Connect(m_TimeNode, KernelPassThroughNodeFloat.KernelPorts.Output, m_InertialBlendingNode, InertialBlendingNode.KernelPorts.Time); set.Connect(m_FalseInputNode, KernelPassThroughNodeBufferFloat.KernelPorts.Output, m_InertialBlendingNode, InertialBlendingNode.KernelPorts.Input0); set.Connect(m_TrueInputNode, KernelPassThroughNodeBufferFloat.KernelPorts.Output, m_InertialBlendingNode, InertialBlendingNode.KernelPorts.Input1); set.Connect(m_InertialBlendingNode, InertialBlendingNode.KernelPorts.Output, m_OutputNode, KernelPassThroughNodeBufferFloat.KernelPorts.Input); set.Connect(thisHandle, SimulationPorts.m_OutRig, m_InertialBlendingNode, InertialBlendingNode.SimulationPorts.Rig); set.Connect(thisHandle, SimulationPorts.m_OutDuration, m_InertialBlendingNode, InertialBlendingNode.SimulationPorts.Duration); set.Connect(thisHandle, SimulationPorts.m_OutClipSource, m_InertialBlendingNode, InertialBlendingNode.SimulationPorts.ClipSource); } else { throw new NotSupportedException($"The TransitionByBoolNode class does not support the '{m_TransitionType}' transition type."); } }
void ClearNodes(NodeSetAPI set) { if (set.Exists(m_WeightAccumulatorNode)) { set.Destroy(m_WeightAccumulatorNode); } if (set.Exists(m_MixerNode)) { set.Destroy(m_MixerNode); } if (set.Exists(m_AnimationCurveEvaluationNode)) { set.Destroy(m_AnimationCurveEvaluationNode); } if (set.Exists(m_InertialBlendingNode)) { set.Destroy(m_InertialBlendingNode); } }