protected override void CreateGraph(Entity entity, ref Rig rig, ref BlendTree2DRuntime blendTreeData) { CreateDebugBoneRig(entity, ref rig); var ecb = EsBufferSystem.CreateCommandBuffer(); //Create graph and hook up node a set send message to the correct node var set = GraphSystem.Set; var kernelData = new BlendTree2DKernelRuntime { ComponentNode = set.CreateComponentNode(entity), DeltaTimeNode = set.Create <ConvertDeltaTimeToFloatNode>(), BlendTree2DNode = set.Create <BlendTree2DNode>(), TimeCounterNode = set.Create <TimeCounterNode>(), TimeLoopNode = set.Create <TimeLoopNode>(), RcpNode = set.Create <FloatRcpNode>(), InputNode = set.Create <Blend2DExtractParameterNode>() }; set.Connect(kernelData.ComponentNode, kernelData.DeltaTimeNode, ConvertDeltaTimeToFloatNode.KernelPorts.Input); set.Connect(kernelData.DeltaTimeNode, ConvertDeltaTimeToFloatNode.KernelPorts.Float, kernelData.TimeCounterNode, TimeCounterNode.KernelPorts.DeltaTime); set.Connect(kernelData.TimeCounterNode, TimeCounterNode.KernelPorts.Time, kernelData.TimeLoopNode, TimeLoopNode.KernelPorts.InputTime); set.Connect(kernelData.TimeLoopNode, TimeLoopNode.KernelPorts.OutputTime, kernelData.BlendTree2DNode, BlendTree2DNode.KernelPorts.NormalizedTime); set.Connect(kernelData.BlendTree2DNode, BlendTree2DNode.KernelPorts.Duration, kernelData.RcpNode, FloatRcpNode.KernelPorts.Input); set.Connect(kernelData.RcpNode, FloatRcpNode.KernelPorts.Output, kernelData.TimeCounterNode, TimeCounterNode.KernelPorts.Speed); set.Connect(kernelData.BlendTree2DNode, BlendTree2DNode.KernelPorts.Output, kernelData.ComponentNode, NodeSetAPI.ConnectionType.Feedback); set.Connect(kernelData.ComponentNode, kernelData.InputNode, Blend2DExtractParameterNode.KernelPorts.Input, NodeSetAPI.ConnectionType.Feedback); set.Connect(kernelData.InputNode, Blend2DExtractParameterNode.KernelPorts.ParameterX, kernelData.BlendTree2DNode, BlendTree2DNode.KernelPorts.BlendParameterX); set.Connect(kernelData.InputNode, Blend2DExtractParameterNode.KernelPorts.ParameterY, kernelData.BlendTree2DNode, BlendTree2DNode.KernelPorts.BlendParameterY); //Send Messages to Blend2DNode set.SendMessage(kernelData.TimeLoopNode, TimeLoopNode.SimulationPorts.Duration, 1.0f); set.SendMessage(kernelData.BlendTree2DNode, BlendTree2DNode.SimulationPorts.Rig, rig); set.SendMessage(kernelData.BlendTree2DNode, BlendTree2DNode.SimulationPorts.BlendTree, blendTreeData.BlendTreeAsset); //Add the kernelData to this entity ecb.AddComponent(entity, kernelData); }
public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem) { if (blendTree == null) { return; } conversionSystem.DeclareAssetDependency(gameObject, blendTree); var rig = dstManager.GetComponentData <Rig>(entity); var clipConfiguration = new ClipConfiguration { Mask = ClipConfigurationMask.LoopValues }; var bakeOptions = new BakeOptions { ClipConfiguration = clipConfiguration, RigDefinition = rig.Value, SampleRate = 60.0f }; var blendTreeIndex = BlendTreeConversion.Convert(blendTree, entity, dstManager, bakeOptions); var blendTree2DResources = dstManager.GetBuffer <BlendTree2DResource>(entity); var blendTreeAsset = BlendTreeBuilder.CreateBlendTree2DFromComponents(blendTree2DResources[blendTreeIndex], dstManager, entity); conversionSystem.BlobAssetStore.AddUniqueBlobAsset(ref blendTreeAsset); var blendTree2DData = new BlendTree2DRuntime { BlendTreeAsset = blendTreeAsset }; dstManager.AddComponentData(entity, blendTree2DData); var blendTree2DParam = new BlendTree2DParamRuntime { InputMapping = float2.zero, StepMapping = paramStep }; dstManager.AddComponentData(entity, blendTree2DParam); dstManager.AddComponent <DeltaTimeRuntime>(entity); dstManager.AddComponent <ProcessDefaultAnimationGraph.AnimatedRootMotion>(entity); }
protected abstract void CreateGraph(Entity entity, ref Rig rig, ref BlendTree2DRuntime blendTreeData);