public void Init(InitContext ctx) { /* * During initialization for this node we create a child node and remember it. */ Child = ctx.Set.Create <ChildNode>(); /* * Here's the interesting part where we essentially tell the node set that our ports should map directly * to the child node's ports. This is essentially how we can emplace a subgraph partially inside another * node. This is sometimes also referred to as "internal edges". * * When someone sends a message to the SecretlyForwardedInput, it will go directly to the child's * Input message port. * Similarly, if someone is connected to SecretlyForwardedOutput, they're actually connected directly * to the child output, and will receive above mentioned message. * * You can of course forward data ports, and port arrays as well. In the latter case, the entire port * array will be forwarded. */ ctx.ForwardInput(SimulationPorts.SecretlyForwardedInput, Child, ChildNode.SimulationPorts.Input); ctx.ForwardOutput(SimulationPorts.SecretlyForwardedOutput, Child, ChildNode.SimulationPorts.Output); }
public void Init(InitContext ctx) { m_TransitionType = TransitionType.Crossfade; m_DeltaTimeNode = ctx.Set.Create <KernelPassThroughNodeFloat>(); m_TimeNode = ctx.Set.Create <KernelPassThroughNodeFloat>(); m_FalseInputNode = ctx.Set.Create <KernelPassThroughNodeBufferFloat>(); m_TrueInputNode = ctx.Set.Create <KernelPassThroughNodeBufferFloat>(); m_OutputNode = ctx.Set.Create <KernelPassThroughNodeBufferFloat>(); var thisHandle = ctx.Set.CastHandle <TransitionByBoolNode>(ctx.Handle); ctx.Set.Connect(thisHandle, SimulationPorts.m_OutStreamSize, m_OutputNode, KernelPassThroughNodeBufferFloat.SimulationPorts.BufferSize); ctx.Set.Connect(thisHandle, SimulationPorts.m_OutStreamSize, m_FalseInputNode, KernelPassThroughNodeBufferFloat.SimulationPorts.BufferSize); ctx.Set.Connect(thisHandle, SimulationPorts.m_OutStreamSize, m_TrueInputNode, KernelPassThroughNodeBufferFloat.SimulationPorts.BufferSize); BuildNodes(thisHandle, ctx.Set); ctx.ForwardInput(KernelPorts.DeltaTime, m_DeltaTimeNode, KernelPassThroughNodeFloat.KernelPorts.Input); ctx.ForwardInput(KernelPorts.Time, m_TimeNode, KernelPassThroughNodeFloat.KernelPorts.Input); ctx.ForwardInput(KernelPorts.FalseInput, m_FalseInputNode, KernelPassThroughNodeBufferFloat.KernelPorts.Input); ctx.ForwardInput(KernelPorts.TrueInput, m_TrueInputNode, KernelPassThroughNodeBufferFloat.KernelPorts.Input); ctx.ForwardOutput(KernelPorts.Output, m_OutputNode, KernelPassThroughNodeBufferFloat.KernelPorts.Output); }
public void Init(InitContext ctx) { var thisHandle = ctx.Set.CastHandle <DirectionMixerNode>(ctx.Handle); m_TimeNode = ctx.Set.Create <KernelPassThroughNodeFloat>(); m_DeltaTimeNode = ctx.Set.Create <KernelPassThroughNodeFloat>(); m_WeightNode = ctx.Set.Create <KernelPassThroughNodeFloat>(); m_Clip0 = ctx.Set.Create <UberClipNode>(); m_Clip1 = ctx.Set.Create <UberClipNode>(); m_Clip2 = ctx.Set.Create <UberClipNode>(); m_Clip3 = ctx.Set.Create <UberClipNode>(); m_Clip4 = ctx.Set.Create <UberClipNode>(); m_NMixerNode = ctx.Set.Create <NMixerNode>(); m_ComputeWeightNode = ctx.Set.Create <DirectionMixerComputeWeightNode>(); ctx.Set.Connect(m_TimeNode, KernelPassThroughNodeFloat.KernelPorts.Output, m_Clip0, UberClipNode.KernelPorts.Time); ctx.Set.Connect(m_TimeNode, KernelPassThroughNodeFloat.KernelPorts.Output, m_Clip1, UberClipNode.KernelPorts.Time); ctx.Set.Connect(m_TimeNode, KernelPassThroughNodeFloat.KernelPorts.Output, m_Clip2, UberClipNode.KernelPorts.Time); ctx.Set.Connect(m_TimeNode, KernelPassThroughNodeFloat.KernelPorts.Output, m_Clip3, UberClipNode.KernelPorts.Time); ctx.Set.Connect(m_TimeNode, KernelPassThroughNodeFloat.KernelPorts.Output, m_Clip4, UberClipNode.KernelPorts.Time); ctx.Set.Connect(m_DeltaTimeNode, KernelPassThroughNodeFloat.KernelPorts.Output, m_Clip0, UberClipNode.KernelPorts.DeltaTime); ctx.Set.Connect(m_DeltaTimeNode, KernelPassThroughNodeFloat.KernelPorts.Output, m_Clip1, UberClipNode.KernelPorts.DeltaTime); ctx.Set.Connect(m_DeltaTimeNode, KernelPassThroughNodeFloat.KernelPorts.Output, m_Clip2, UberClipNode.KernelPorts.DeltaTime); ctx.Set.Connect(m_DeltaTimeNode, KernelPassThroughNodeFloat.KernelPorts.Output, m_Clip3, UberClipNode.KernelPorts.DeltaTime); ctx.Set.Connect(m_DeltaTimeNode, KernelPassThroughNodeFloat.KernelPorts.Output, m_Clip4, UberClipNode.KernelPorts.DeltaTime); ctx.Set.SetPortArraySize(m_NMixerNode, NMixerNode.KernelPorts.Inputs, k_ClipCount); ctx.Set.Connect(m_Clip0, UberClipNode.KernelPorts.Output, m_NMixerNode, NMixerNode.KernelPorts.Inputs, 0); ctx.Set.Connect(m_Clip1, UberClipNode.KernelPorts.Output, m_NMixerNode, NMixerNode.KernelPorts.Inputs, 1); ctx.Set.Connect(m_Clip2, UberClipNode.KernelPorts.Output, m_NMixerNode, NMixerNode.KernelPorts.Inputs, 2); ctx.Set.Connect(m_Clip3, UberClipNode.KernelPorts.Output, m_NMixerNode, NMixerNode.KernelPorts.Inputs, 3); ctx.Set.Connect(m_Clip4, UberClipNode.KernelPorts.Output, m_NMixerNode, NMixerNode.KernelPorts.Inputs, 4); ctx.Set.Connect(m_WeightNode, KernelPassThroughNodeFloat.KernelPorts.Output, m_ComputeWeightNode, DirectionMixerComputeWeightNode.KernelPorts.Input); ctx.Set.SetPortArraySize(m_NMixerNode, NMixerNode.KernelPorts.Weights, k_ClipCount); ctx.Set.Connect(m_ComputeWeightNode, DirectionMixerComputeWeightNode.KernelPorts.OutWeight0, m_NMixerNode, NMixerNode.KernelPorts.Weights, 0); ctx.Set.Connect(m_ComputeWeightNode, DirectionMixerComputeWeightNode.KernelPorts.OutWeight1, m_NMixerNode, NMixerNode.KernelPorts.Weights, 1); ctx.Set.Connect(m_ComputeWeightNode, DirectionMixerComputeWeightNode.KernelPorts.OutWeight2, m_NMixerNode, NMixerNode.KernelPorts.Weights, 2); ctx.Set.Connect(m_ComputeWeightNode, DirectionMixerComputeWeightNode.KernelPorts.OutWeight3, m_NMixerNode, NMixerNode.KernelPorts.Weights, 3); ctx.Set.Connect(m_ComputeWeightNode, DirectionMixerComputeWeightNode.KernelPorts.OutWeight4, m_NMixerNode, NMixerNode.KernelPorts.Weights, 4); // Setup internal message connections ctx.Set.Connect(thisHandle, SimulationPorts.m_OutRig, m_Clip0, UberClipNode.SimulationPorts.Rig); ctx.Set.Connect(thisHandle, SimulationPorts.m_OutRig, m_Clip1, UberClipNode.SimulationPorts.Rig); ctx.Set.Connect(thisHandle, SimulationPorts.m_OutRig, m_Clip2, UberClipNode.SimulationPorts.Rig); ctx.Set.Connect(thisHandle, SimulationPorts.m_OutRig, m_Clip3, UberClipNode.SimulationPorts.Rig); ctx.Set.Connect(thisHandle, SimulationPorts.m_OutRig, m_Clip4, UberClipNode.SimulationPorts.Rig); ctx.Set.Connect(thisHandle, SimulationPorts.m_OutRig, m_NMixerNode, NMixerNode.SimulationPorts.Rig); ctx.Set.SetPortArraySize(thisHandle, SimulationPorts.m_OutClips, k_ClipCount); ctx.Set.Connect(thisHandle, SimulationPorts.m_OutClips, 0, m_Clip0, UberClipNode.SimulationPorts.Clip); ctx.Set.Connect(thisHandle, SimulationPorts.m_OutClips, 1, m_Clip1, UberClipNode.SimulationPorts.Clip); ctx.Set.Connect(thisHandle, SimulationPorts.m_OutClips, 2, m_Clip2, UberClipNode.SimulationPorts.Clip); ctx.Set.Connect(thisHandle, SimulationPorts.m_OutClips, 3, m_Clip3, UberClipNode.SimulationPorts.Clip); ctx.Set.Connect(thisHandle, SimulationPorts.m_OutClips, 4, m_Clip4, UberClipNode.SimulationPorts.Clip); ctx.Set.Connect(thisHandle, SimulationPorts.m_OutConfiguration, m_Clip0, UberClipNode.SimulationPorts.Configuration); ctx.Set.Connect(thisHandle, SimulationPorts.m_OutConfiguration, m_Clip1, UberClipNode.SimulationPorts.Configuration); ctx.Set.Connect(thisHandle, SimulationPorts.m_OutConfiguration, m_Clip2, UberClipNode.SimulationPorts.Configuration); ctx.Set.Connect(thisHandle, SimulationPorts.m_OutConfiguration, m_Clip3, UberClipNode.SimulationPorts.Configuration); ctx.Set.Connect(thisHandle, SimulationPorts.m_OutConfiguration, m_Clip4, UberClipNode.SimulationPorts.Configuration); // Setup port forwarding ctx.ForwardInput(KernelPorts.Time, m_TimeNode, KernelPassThroughNodeFloat.KernelPorts.Input); ctx.ForwardInput(KernelPorts.DeltaTime, m_DeltaTimeNode, KernelPassThroughNodeFloat.KernelPorts.Input); ctx.ForwardInput(KernelPorts.Weight, m_WeightNode, KernelPassThroughNodeFloat.KernelPorts.Input); ctx.ForwardOutput(KernelPorts.Output, m_NMixerNode, NMixerNode.KernelPorts.Output); }