示例#1
0
 public void Execute()
 {
     if (!_context.isPaused)
     {
         _context.ReplaceTick(_context.tick.value + 1);
     }
 }
示例#2
0
    protected override void Execute(List <TimeEntity> entities)
    {
        foreach (LogicEntity e in _LogicContext.GetEntities())
        {
            e.isDestroyed = true;
        }

        Contexts.sharedInstance.input.commandList.commands.Clear();
        _timeContext.logicSystem.system.Initialize();


        int currentInputFrame = 0;

        for (int i = 0; i <= _timeContext.jumpInTime.targetTick; i++)
        {
            _timeContext.ReplaceTick(i);

            foreach (InputEntity e in _inputSources)
            {
                e.controllerInput.snapshot.Reset();
                e.ReplaceControllerInput(e.controllerInput.snapshot);
                e.isValidInput = false;
            }

            if (currentInputFrame < Contexts.sharedInstance.input.inputHistory.snapshots.Count)
            {
                for (int j = currentInputFrame; j < Contexts.sharedInstance.input.inputHistory.snapshots.Count; j++)
                {
                    StoredInput nextInput = _inputContext.inputHistory.snapshots[j];

                    if (nextInput.tick == i)
                    {
                        foreach (InputEntity e in _inputContext.GetEntitiesWithControllerID(nextInput.playerID))
                        {
                            InputSnapshot s = new InputSnapshot();
                            s.Copy(nextInput.snapshot);

                            e.ReplaceControllerInput(s);
                            e.isValidInput = true;
                        }
                    }

                    else if (nextInput.tick > i)
                    {
                        currentInputFrame = j;
                        break;
                    }
                }

                _timeContext.logicSystem.system.Execute();
                _timeContext.logicSystem.system.Cleanup();
            }
        }
    }
    protected override void Execute(List <TimeEntity> entities)
    {
        return;

        if (_movers.count == 0)
        {
            return;
        }

        while (futureMovements.Count > _movers.count)
        {
            GameObject go = futureMovements[0].gameObject;
            futureMovements.RemoveAt(0);
            GameObject.Destroy(go);
        }

        while (futureMovements.Count < _movers.count)
        {
            LineRenderer lr = new GameObject("future move").AddComponent <LineRenderer> ();
            lr.positionCount = FUTURE_FRAMES;
            lr.startWidth    = 0.1f;
            lr.endWidth      = 0.1f;
            futureMovements.Add(lr);
        }

//		_timeContext.logicSystem.system.Initialize ();

        LogicContext gc = new LogicContext();

        foreach (LogicEntity e in _LogicContext.GetEntities())
        {
            gc.CloneEntity(e, true, e.GetComponentIndices());
        }

        for (int i = 0; i < FUTURE_FRAMES; i++)
        {
            _timeContext.ReplaceTick(_timeContext.tick.value++);

            foreach (InputEntity e in _inputSources)
            {
                e.ReplaceControllerInput(e.controllerInput.snapshot);
            }


            _timeContext.logicSystem.system.Execute();
            _timeContext.logicSystem.system.Cleanup();

            int j = 0;
            foreach (LogicEntity mover in _movers)
            {
                futureMovements[j].SetPosition(i, new Vector3(

                                                   mover.position.value.x.ToFloat(),
                                                   mover.position.value.y.ToFloat(),
                                                   0

                                                   ));
                j++;
            }
        }

        foreach (LogicEntity e in _LogicContext.GetEntities())
        {
            e.isDestroyed = true;
        }

        _timeContext.logicSystem.system.Execute();
        _timeContext.logicSystem.system.Cleanup();

        foreach (LogicEntity ge in gc.GetEntities())
        {
            _LogicContext.CloneEntity(ge, true, ge.GetComponentIndices());
        }

        foreach (InputEntity e in _inputSources)
        {
            e.ReplaceControllerInput(e.controllerInput.snapshot);
        }
    }