Beispiel #1
0
        Task <MotionResult> ActMotionAsync(MotionParam motion)
        {
            return(Task.Run(() =>
            {
                lock (MotorLock)
                {
                    if (null == motion)
                    {
                        return null;
                    }

                    var Motor = this.Motor;

                    if (null == Motor)
                    {
                        return null;
                    }

                    var BeginTime = GetTimeStopwatch();

                    var Result = Motor.ActSequenceMotion(motion.AsSequenceMotion(MemoryMeasurementLast?.Value?.MemoryMeasurement));

                    var EndTime = GetTimeStopwatch();

                    MotionExecution.Enqueue(new MotionExecution(motion, BeginTime, EndTime)
                    {
                        Result = Result,
                    });

                    MotionExecution.TrimHeadToKeep(100);

                    return Result;
                }
            }));
        }
Beispiel #2
0
 public void PlayMotion(MotionParam p)
 {
     if (Application.isPlaying)
     {
         anim_ = MainChar.GetComponent <Animator>();
         this.GetComponent <Animator>().Play("Skill01");
     }
 }
Beispiel #3
0
 public static MotionRecommendation AsRecommendation(this MotionParam mp, int?delayAfterMs = null)
 {
     if (mp == null)
     {
         return(null);
     }
     return(new MotionRecommendation(mp, delayAfterMs));
 }
Beispiel #4
0
 MotionResult FromScriptMotionExecute(MotionParam MotionParam) => ActMotionAsync(MotionParam).Result;
Beispiel #5
0
 public MotionRecommendation(MotionParam motionParam, int?delayAfterMs)
 {
     Id           = motionId++;
     MotionParam  = motionParam;
     DelayAfterMs = delayAfterMs;
 }
Beispiel #6
0
 public MotionResult MotionExecute(MotionParam motionParam) => MotionExecuteFunc?.Invoke(motionParam);