protected override void Run(ETModel.Session session, M2C_InputResult_Move message)
        {
            Unit unit = ETModel.Game.Scene.GetComponent <UnitComponent>().Get(message.Id);

            if (message.PathList.Count == 0)
            {
                return;
            }
            List <Vector3> vector3s = new List <Vector3>();

            foreach (var v in message.PathList)
            {
                vector3s.Add(v.ToV3());
            }
            if (unit != ETModel.Game.Scene.GetComponent <UnitComponent>().MyUnit)
            {
                unit.GetComponent <CharacterMoveComponent>().MoveAsync(vector3s).Coroutine();
            }
            else
            {
                UnitStateDelta unitStateDelta = new UnitStateDelta();
                unitStateDelta.frame = message.Frame;
                CommandResult_Move commandResult_Move = CommandGCHelper.GetCommandResult <CommandResult_Move>();
                commandResult_Move.Path      = vector3s;
                unitStateDelta.commandResult = commandResult_Move;
                unit.GetComponent <CommandComponent>().GetCommandResult(unitStateDelta);
            }
        }
        protected override void Run(Unit unit, C2M_Input_UseSkill_Dir message)
        {
            UnitStateComponent    unitStateComponent    = unit.GetComponent <UnitStateComponent>();
            CommandInput_UseSkill commandInput_UseSkill = CommandGCHelper.GetCommandInput <CommandInput_UseSkill>();

            commandInput_UseSkill.skillId        = message.SkillId;
            commandInput_UseSkill.pipelineSignal = message.PipelineSignal;
            commandInput_UseSkill.bufferValue    = new BufferValue_Dir()
            {
                dir = message.AimDir.ToV3()
            };

            unitStateComponent.GetInput(message.Frame, commandInput_UseSkill);
        }