コード例 #1
0
    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);
    }
コード例 #2
0
    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);
    }
コード例 #3
0
    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);
    }
コード例 #4
0
        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;
        }
コード例 #5
0
        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);