public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem) { dstManager.AddComponentData(entity, new AnimSource.Data()); var settings = new AnimSourceDamage.Settings { Blend = Blend, AdditiveRefPose = ClipBuilder.AnimationClipToDenseClip(AdditiveRefPose), }; BlendTreeEntityStoreHelper.AddBlendTree1DComponents(dstManager, entity, BlendTreeAsset); dstManager.AddComponentData(entity, settings); }
public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem) { dstManager.AddComponentData(entity, new AnimSource.Data()); var settings = new AnimSourceSprint.Settings { animAimDownToUp = ClipBuilder.AnimationClipToDenseClip(animAimDownToUp), additiveRefPose = ClipBuilder.AnimationClipToDenseClip(additiveRefPose), changeDirSpeed = changeDirSpeed, stateResetWindow = stateResetWindow, }; BlendTreeEntityStoreHelper.AddBlendTree1DComponents(dstManager, entity, LocoBlendTreeAsset); dstManager.AddComponentData(entity, settings); }
public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem) { dstManager.AddComponentData(entity, new AnimSource.Data()); var settings = new AnimSourceRun8Dir.Settings { RunAimClipRef = ClipBuilder.AnimationClipToDenseClip(RunAimClipRef), RunAimHorizontalClipRef = ClipBuilder.AnimationClipToDenseClip(RunAimHorizontalClipRef), AdditiveRefPose = ClipBuilder.AnimationClipToDenseClip(AdditiveRefPose), MaxHipOffset = MaxHipOffset, HipDragSpeed = HipDragSpeed, damping = damping, maxStep = maxStep, StateResetWindow = StateResetWindow, blendOutAimOnReloadPitch = blendOutAimOnReloadPitch, }; BlendTreeEntityStoreHelper.AddBlendTree2DComponents(dstManager, entity, RunBlendSpace2D); dstManager.AddComponentData(entity, settings); }
protected override JobHandle OnUpdate(JobHandle inputDeps) { inputDeps.Complete(); var nodeSet = m_AnimationGraphSystem.Set; var commands = new EntityCommandBuffer(Allocator.TempJob); var animationGraphSystem = m_AnimationGraphSystem; // Handle created entities Entities .WithoutBurst() // Can be removed once NodeSets are Burst-friendly .WithNone<SystemState>() .ForEach((Entity entity, ref AnimSource.Data animSource, ref Settings settings) => { GameDebug.Log(World,AnimSource.ShowLifetime,"Init Run8Dir entity:{0} state entity:{1}", entity, animSource.animStateEntity); var state = SystemState.Default; settings.RunBlendSpace2D = BlendTreeEntityStoreHelper.CreateBlendTree2DFromComponents(EntityManager, entity); state.BlendTreeNode = AnimationGraphHelper.CreateNode<BlendTree2DNode>(animationGraphSystem, "BlendTreeNode"); state.AimVertical = AnimationGraphHelper.CreateNode<ClipNode>(animationGraphSystem, "AimVertical"); state.AimHorizontal = AnimationGraphHelper.CreateNode<ClipNode>(animationGraphSystem, "AimHorizontal"); state.AdditiveRefPoseA = AnimationGraphHelper.CreateNode<ClipNode>(animationGraphSystem,"AdditiveRefPoseA"); state.AdditiveRefPoseB = AnimationGraphHelper.CreateNode<ClipNode>(animationGraphSystem, "AdditiveRefPoseB"); state.AimVerticalDelta = AnimationGraphHelper.CreateNode<DeltaNode>(animationGraphSystem, "AimVerticalDelta"); state.AimHorizontalDelta = AnimationGraphHelper.CreateNode<DeltaNode>(animationGraphSystem, "AimHorizontalDelta"); state.Mixer = AnimationGraphHelper.CreateNode<LayerMixerNode>(animationGraphSystem, "Mixer"); nodeSet.SendMessage(state.Mixer, LayerMixerNode.SimulationPorts.WeightInput0, 1f); nodeSet.SendMessage(state.Mixer, LayerMixerNode.SimulationPorts.WeightInput1, 1f); nodeSet.SendMessage(state.Mixer, LayerMixerNode.SimulationPorts.WeightInput2, 0f); nodeSet.SendMessage(state.Mixer, LayerMixerNode.SimulationPorts.BlendModeInput1, BlendingMode.Additive); nodeSet.SendMessage(state.Mixer, LayerMixerNode.SimulationPorts.BlendModeInput2, BlendingMode.Additive); nodeSet.Connect(state.BlendTreeNode, BlendTree2DNode.KernelPorts.Output, state.Mixer, LayerMixerNode.KernelPorts.Input0); nodeSet.Connect(state.AdditiveRefPoseA, ClipNode.KernelPorts.Output, state.AimVerticalDelta, DeltaNode.KernelPorts.Subtract); nodeSet.Connect(state.AdditiveRefPoseB, ClipNode.KernelPorts.Output, state.AimHorizontalDelta, DeltaNode.KernelPorts.Subtract); nodeSet.Connect(state.AimVertical, ClipNode.KernelPorts.Output, state.AimVerticalDelta, DeltaNode.KernelPorts.Input); nodeSet.Connect(state.AimHorizontal, ClipNode.KernelPorts.Output, state.AimHorizontalDelta, DeltaNode.KernelPorts.Input); nodeSet.Connect(state.AimVerticalDelta, DeltaNode.KernelPorts.Output, state.Mixer, LayerMixerNode.KernelPorts.Input1); nodeSet.Connect(state.AimHorizontalDelta, DeltaNode.KernelPorts.Output, state.Mixer, LayerMixerNode.KernelPorts.Input2); // Load clips and store clip info state.AimVerticalDuration = settings.RunAimClipRef.Value.Duration; state.AimHorizontalDuration = settings.RunAimClipRef.Value.Duration; // All clips are the same length so we can use a static clip duration state.RunClipDuration = settings.RunBlendSpace2D.Value.Motions[0].Clip.Value.Duration; // Expose input and outputs animSource.outputNode = state.Mixer; animSource.outputPortID = (OutputPortID)LayerMixerNode.KernelPorts.Output; commands.AddComponent(entity, state); }).Run(); // Handled deleted entities Entities .WithoutBurst() // Can be removed once NodeSets are Burst-friendly .WithNone<Settings>() .ForEach((Entity entity, ref SystemState state) => { Deinitialize(World, commands, entity, animationGraphSystem, state); }).Run(); commands.Playback(EntityManager); commands.Dispose(); return default; }
protected override JobHandle OnUpdate(JobHandle inputDeps) { inputDeps.Complete(); var nodeSet = m_AnimationGraphSystem.Set; var commands = new EntityCommandBuffer(Allocator.TempJob); // Handle created entities Entities .WithoutBurst() // Can be removed once NodeSets are Burst-friendly .WithNone <SystemState>().ForEach((Entity entity, ref AnimSource.Data animSource, ref Settings settings) => { GameDebug.Log(World, AnimSource.ShowLifetime, "Init AnimSourceDamage entity:{0}", entity); var state = SystemState.Default; settings.BlendTree = BlendTreeEntityStoreHelper.CreateBlendTree1DFromComponents(EntityManager, entity);; // Create nodes state.BlendTreeNode = AnimationGraphHelper.CreateNode <BlendTree1DNode>(m_AnimationGraphSystem, "BlendTreeNode"); state.MixerNode = AnimationGraphHelper.CreateNode <LayerMixerNode>(m_AnimationGraphSystem, "MixerNode"); state.AdditiveRefPoseNode = AnimationGraphHelper.CreateNode <ClipNode>(m_AnimationGraphSystem, "AdditiveRefPoseNode"); state.AdditiveDeltaNode = AnimationGraphHelper.CreateNode <DeltaNode>(m_AnimationGraphSystem, "AdditiveDeltaNode"); state.DeltaTimeNode = AnimationGraphHelper.CreateNode <DeltaTimeNode>(m_AnimationGraphSystem, "DeltaTimeNode"); state.TimeCounterNode = AnimationGraphHelper.CreateNode <TimeCounterNode>(m_AnimationGraphSystem, "TimeCounterNode"); state.TimeLoopNode = AnimationGraphHelper.CreateNode <TimeLoopNode>(m_AnimationGraphSystem, "TimeLoopNode"); state.FloatRcpSimNode = AnimationGraphHelper.CreateNode <FloatRcpSimNode>(m_AnimationGraphSystem, "FloatRcpSimNode"); nodeSet.Connect(state.AdditiveRefPoseNode, ClipNode.KernelPorts.Output, state.AdditiveDeltaNode, DeltaNode.KernelPorts.Subtract); nodeSet.Connect(state.BlendTreeNode, BlendTree1DNode.KernelPorts.Output, state.AdditiveDeltaNode, DeltaNode.KernelPorts.Input); nodeSet.Connect(state.AdditiveDeltaNode, DeltaNode.KernelPorts.Output, state.MixerNode, LayerMixerNode.KernelPorts.Input1); nodeSet.Connect(state.DeltaTimeNode, DeltaTimeNode.KernelPorts.DeltaTime, state.TimeCounterNode, TimeCounterNode.KernelPorts.DeltaTime); nodeSet.Connect(state.TimeCounterNode, TimeCounterNode.KernelPorts.Time, state.TimeLoopNode, TimeLoopNode.KernelPorts.InputTime); nodeSet.Connect(state.TimeLoopNode, TimeLoopNode.KernelPorts.OutputTime, state.BlendTreeNode, BlendTree1DNode.KernelPorts.NormalizedTime); nodeSet.Connect(state.FloatRcpSimNode, FloatRcpSimNode.SimulationPorts.Output, state.TimeCounterNode, TimeCounterNode.SimulationPorts.Speed); nodeSet.Connect(state.BlendTreeNode, BlendTree1DNode.SimulationPorts.Duration, state.FloatRcpSimNode, FloatRcpSimNode.SimulationPorts.Input); nodeSet.SendMessage(state.TimeLoopNode, TimeLoopNode.SimulationPorts.Duration, 1.0F); nodeSet.SendMessage(state.MixerNode, LayerMixerNode.SimulationPorts.WeightInput0, 1f); nodeSet.SendMessage(state.MixerNode, LayerMixerNode.SimulationPorts.WeightInput1, 0f); nodeSet.SendMessage(state.MixerNode, LayerMixerNode.SimulationPorts.BlendModeInput0, BlendingMode.Override); nodeSet.SendMessage(state.MixerNode, LayerMixerNode.SimulationPorts.BlendModeInput1, BlendingMode.Additive); // Load clips and store clip info var blendSpaceClip = settings.BlendTree.Value.Motions[0].Clip; state.ReactionAnimDuration = blendSpaceClip.Value.Duration; // Declare anim source inputs and outputs animSource.inputNode = state.MixerNode; animSource.inputPortID = (InputPortID)LayerMixerNode.KernelPorts.Input0; animSource.outputNode = state.MixerNode; animSource.outputPortID = (OutputPortID)LayerMixerNode.KernelPorts.Output; // Add state commands.AddComponent(entity, state); }).Run(); // Handled deleted entities Entities .WithoutBurst() // Can be removed once NodeSets are Burst-friendly .WithNone <Settings>().ForEach((Entity entity, ref SystemState state) => { Deinitialize(World, commands, entity, m_AnimationGraphSystem, state); }).Run(); commands.Playback(EntityManager); commands.Dispose(); return(default);