//对象在平面上的平移动作
        public UAction ApplyMoveToTrans(GameObject obj, Vector3 target, float speed, ActionCompleted completed)
        {
            MoveToTrans ac = obj.AddComponent <MoveToTrans>();

            ac.setting(obj, target, speed, completed);
            return(ac);
        }
예제 #2
0
        /// <summary>
        /// Init this task
        /// </summary>
        private void GenerateAction()
        {
            byte[] buffer;
            int    blockNumber;

            lock (Instance)
                buffer = Source.GetPortionData(out blockNumber);

            Action calcHashFunc = () =>
            {
                int    blockNum = blockNumber;
                byte[] block    = buffer;

                using (var sha256 = SHA256.Create())
                {
                    var hashedBytes = sha256.ComputeHash(block);

                    var hash = BitConverter.ToString(hashedBytes).Replace("-", string.Empty).ToLower();

                    string res = $"{blockNum} ->{block.Length} ->{Thread.CurrentThread.ManagedThreadId} ->{hash}";

                    Result = TaskWriteObjectToFile.GetInstance(StringSource.GetInstance(res));
                    ActionCompleted?.Invoke(this);
                }
            };

            ActionToRun = calcHashFunc;
        }
 public void setting(Vector3 target, float speed, ActionCompleted monitor)
 {
     this.target  = target;
     this.speed   = speed;
     this.monitor = monitor;
     GameSceneController.GetInstance().Set_move(true);
 }
예제 #4
0
        public Action ApplyMoveToAction(GameObject obj, Vector3 target, float speed, ActionCompleted completed)//重载函数
        {
            MoveToAction action = obj.AddComponent <MoveToAction>();

            action.getAction(target, speed, completed);
            return(action);
        }
예제 #5
0
 public void getAction(Vector3 target, float speed, ActionCompleted monitor)
 {
     Director.getInstance().setState(true);
     this.target  = target;
     this.speed   = speed;
     this.monitor = monitor;
 }
예제 #6
0
파일: State.cs 프로젝트: teplofizik/nyaprog
        /// <summary>
        /// Прошивка выполняется в параллельном потоке
        /// </summary>
        public void ActionThread()
        {
            var Result = Executer.Exec(Env, Tool, Project, Script, Script.Actions[Action], CompiledArgs);

            Debug.WriteLine(String.Format("   {0:s}: {1:s}", (Result.Result != ExecResultType.Error) ? "OK" : "FAIL", Result.Message));
            ActionCompleted?.Invoke(this, new ActionEventArgs(Action, Result));
        }
예제 #7
0
 public void Handle(ActionCompleted e)
 {
     if (CanHandle(e.Id))
     {
         _model.ActionCompleted(e.ActionId);
     }
 }
예제 #8
0
 public void getAction(GameObject obj, Vector3 target, float speed, ActionCompleted monitor)
 {
     this.obj     = obj;
     this.target  = target;
     this.speed   = speed;
     this.monitor = monitor;
     Director.getInstance().setState(true);
     this.MoveYZ();
 }
예제 #9
0
파일: State.cs 프로젝트: teplofizik/nyaprog
 public void RunAction(int Index)
 {
     Action    = Index;
     Cancelled = false;
     if (Index < Script.Actions.Count)
     {
         Thread Thr = new Thread(ActionThread);
         Thr.Start();
     }
     else
     {
         ActionCompleted?.Invoke(this, new ActionEventArgs(Action, new ERError("Invalid action index")));
     }
 }
예제 #10
0
 private void Move(ref float p1, float p2)
 {
     if (p1 != p2)
     {
         int   mult = (p1 < p2) ? 1 : -1;
         float inc  = _speed * mult;
         if (Math.Abs(p1 - p2) <= _speed)
         {
             p1          = p2;
             IsDestroyed = true;
             ActionCompleted.Invoke(this, new EventArgs());
         }
         else
         {
             p1 += inc;
         }
     }
 }
예제 #11
0
        public void OnShoot()
        {
            while (true)
            {
                if (rng.Next(0, 100) % 2 == 0)
                {
                    if (ActionCompleted != null)
                    {
                        ActionCompleted.Invoke(this, EventArgs.Empty);
                    }
                }
                else
                {
                    Console.WriteLine("Missed");
                }

                Thread.Sleep(500);
            }
        }
        public void setting(GameObject obj, Vector3 target, float speed, ActionCompleted monitor)
        {
            this.obj     = obj;
            this.target  = target;
            this.speed   = speed;
            this.monitor = monitor;
            GameSceneController.GetInstance().Set_move(true);

            /*obj比target高,先移动target.z, 再移动target.y
             * obj比target低,先移动target.y,再移动target.z
             */
            if (target.y < obj.transform.position.y)
            {
                Vector3 targetZ = new Vector3(target.x, obj.transform.position.y, target.z);
                ActionManager.get_instance().ApplyMoveToAction(obj, targetZ, speed, this);
            }
            else
            {
                Vector3 targetY = new Vector3(target.x, target.y, obj.transform.position.z);
                ActionManager.get_instance().ApplyMoveToAction(obj, targetY, speed, this);
            }
        }
예제 #13
0
 public void When(ActionCompleted e)
 {
     Actions[e.ActionId].MarkAsCompleted();
 }
예제 #14
0
 public void AddActionCompletedListener <T>(ActionCompleted OnCompleted) where T : Action
 {
     GetAction <T>().OnActionCompleted += OnCompleted;
 }
예제 #15
0
 public void RaiseActionCompleted(EventModel eventModel)
 {
     ActionCompleted?.Invoke(this, eventModel);
 }
예제 #16
0
파일: Deploy.cs 프로젝트: tevfikoguz/XCOM
 protected virtual void OnActionCompleted(string filename, string actionName)
 {
     ActionCompleted?.Invoke(this, new ActionEventArgs(filename, actionName));
 }
예제 #17
0
 protected void TriggerEvent(T data)
 {
     ActionCompleted?.Invoke(data);
 }
예제 #18
0
 protected virtual void OnActionCompleted(TimeSpan obj)
 {
     ActionCompleted?.Invoke(obj);
 }
예제 #19
0
 public void When(ActionCompleted e)
 {
     Actions[e.ActionId].MarkAsCompleted();
 }
예제 #20
0
 protected virtual void OnActionCompleted(EventArgs e)
 {
     ActionCompleted?.Invoke(this, e);
 }