Exemplo n.º 1
0
    void LogicUpdate()
    {
        if (SpaceData.Instance.frameList.Count > 0)
        {
            currFrame = SpaceData.Instance.frameList.Dequeue();
            Dictionary <int, InputDataBase> dicInputData = new Dictionary <int, InputDataBase>();
            for (int i = 0; i < SpaceData.Instance.SpacePlayers.Count; i++)
            {
                InputData data = new InputData();
                data.ownerID = SpaceData.Instance.SpacePlayers[i].ownerID;
                dicInputData[data.ownerID] = data;
            }

            for (int i = 0; i < currFrame.operation.Count; i++)
            {
                FS_ENTITY_DATA e    = currFrame.operation[i];
                InputData      data = new InputData();
                data.Deserialize(e);
                dicInputData[data.ownerID] = data;
            }
            CheckQueuedBehaviours();
            OnStepUpdate(dicInputData.Values.ToList());
            PhysicsManager.instance.UpdateStep();
        }
    }
    // Update is called once per frame
    void Update()
    {
        renderTime += Time.deltaTime;

        if (renderTime >= timeSlice)
        {
            renderTime = 0;


            if (SpaceData.Instance.frameList.Count > 0)
            {
                int count = SpaceData.Instance.frameList.Count;
                timeSlice = DeltaTime / (count <= ThresholdFrame ? 1 : count / ThresholdFrame);

                FS_FRAME_DATA framedata = SpaceData.Instance.frameList.Dequeue();

                List <InputDataBase> allInputData = new List <InputDataBase>();

                if (framedata.operation.Count <= 1 && framedata.operation[0].cmd_type == 0)
                {
                    for (int i = 0; i < SpaceData.Instance.SpacePlayers.Count; i++)
                    {
                        InputData data = new InputData();
                        data.ownerID = SpaceData.Instance.SpacePlayers[i].ownerID;
                        allInputData.Add(data);
                    }
                }
                else
                {
                    for (int i = 0; i < framedata.operation.Count; i++)
                    {
                        FS_ENTITY_DATA e    = framedata.operation[i];
                        InputData      data = new InputData();
                        data.Deserialize(e);
                        allInputData.Add(data);
                    }
                }

                OnStepUpdate(allInputData);

                PhysicsManager.instance.UpdateStep();
            }
        }
    }
Exemplo n.º 3
0
    // Update is called once per frame
    void Update()
    {
        renderTime += Time.deltaTime;

        if (renderTime >= timeSlice)
        {
            renderTime = 0;


            if (SpaceData.Instance.frameList.Count > 0)
            {
                int count = SpaceData.Instance.frameList.Count;
                timeSlice = DeltaTime / (count <= ThresholdFrame ? 1 : count / ThresholdFrame);

                currFrame = SpaceData.Instance.frameList.Dequeue();

                Dictionary <int, InputDataBase> dicInputData = new Dictionary <int, InputDataBase>();
                for (int i = 0; i < SpaceData.Instance.SpacePlayers.Count; i++)
                {
                    InputData data = new InputData();
                    data.ownerID = SpaceData.Instance.SpacePlayers[i].ownerID;
                    dicInputData[data.ownerID] = data;
                }

                for (int i = 0; i < currFrame.operation.Count; i++)
                {
                    FS_ENTITY_DATA e    = currFrame.operation[i];
                    InputData      data = new InputData();
                    data.Deserialize(e);
                    dicInputData[data.ownerID] = data;
                }

                CheckQueuedBehaviours();
                OnStepUpdate(dicInputData.Values.ToList());
                PhysicsManager.instance.UpdateStep();
            }
        }
    }