Beispiel #1
0
        public override void ExposeTimeData()
        {
            base.ExposeTimeData();
            bool AnimEnable = animator.enabled;

            TimeScribe.Look_Value(ref AnimEnable);
            animator.enabled = AnimEnable;

            //State Info
            AnimatorStateInfo[] infos = null;
            if (TimeScribe.Mode == ScribeMode.Record)
            {
                infos = new AnimatorStateInfo[animator.layerCount];
                for (int i = 0; i < animator.layerCount; ++i)
                {
                    infos[i] = animator.GetCurrentAnimatorStateInfo(i);
                }
            }
            TimeScribe.Look_Array(ref infos, animator.layerCount);
            if (TimeScribe.Mode == ScribeMode.Rewind)
            {
                for (int i = 0; i < animator.layerCount; ++i)
                {
                    animator.Play(infos[i]
                                  .shortNameHash, i, infos[i].normalizedTime);
                }
            }

            //Parameters
            var rawParms = animator.parameters;

            foreach (var parm in rawParms)
            {
                int nameHash = parm.nameHash;
                TimeScribe.Look_Value(ref nameHash);
                var parmType = parm.type;
                TimeScribe.Look_Value(ref parmType);
                if (parmType == AnimatorControllerParameterType.Bool)
                {
                    bool value = animator.GetBool(nameHash);
                    TimeScribe.Look_Value(ref value);
                    animator.SetBool(nameHash, value);
                }
                else if (parmType == AnimatorControllerParameterType.Int)
                {
                    int value = animator.GetInteger(nameHash);
                    TimeScribe.Look_Value(ref value);
                    animator.SetInteger(nameHash, value);
                }
                else if (parmType == AnimatorControllerParameterType.Float)
                {
                    float value = animator.GetFloat(nameHash);
                    TimeScribe.Look_Value(ref value);
                    animator.SetFloat(nameHash, value);
                }
            }
        }
Beispiel #2
0
        public void ExposeTimeData()
        {
            bool newActive = gameObject.activeSelf;

            TimeScribe.Look_Value(ref newActive);
            if (newActive != gameObject.activeSelf)
            {
                gameObject.SetActive(newActive);
            }
            if (RecordTransform)
            {
                TimeScribe.Look_Transform(transform);
            }
            if (RecordRigidBody)
            {
                rb.velocity = TimeScribe.Look_Property(rb.velocity);
            }
            TimeScribe.Look_Value(ref FakeDestroyed);
        }
Beispiel #3
0
        public override void ExposeTimeData()
        {
            base.ExposeTimeData();
            Vector2 moveVector;

            if (DataSource == PlayerTimeDataEnum.Ghost)
            {
                moveVector = playerGhostAI.moveVector;
            }
            else
            {
                moveVector = playerController.moveVector;
            }
            TimeScribe.Look_Value(ref moveVector);
            if (TimeScribe.Mode == ScribeMode.Rewind && DataSource == PlayerTimeDataEnum.Ghost)
            {
                playerGhostAI.moveVector = moveVector;
            }
            mainSpriteRenderer.flipX = TimeScribe.Look_Property(mainSpriteRenderer.flipX);
        }
        private void GoBackTo(int timeStamp, bool isPreview, bool removeBackPoint = false)
        {
            IsPreview    = isPreview;
            PreviewStamp = timeStamp;
            if (!isPreview)
            {
                CurrentTimeStamp = removeBackPoint ? timeStamp - 1 : timeStamp;
                FakeTime         = TimeStampTime[CurrentTimeStamp];
            }
            var listNode = Rewindables.First;

            while (listNode != null)
            {
                var node        = listNode.Value;
                var curListNode = listNode;
                listNode = listNode.Next;
                if (node == null)
                {
                    Rewindables.Remove(curListNode);
                    continue;
                }
                var container = node.GetTimeStateContainer;
                if (container.TryGetStateAtTimeStamp(timeStamp, out var state))
                {
                    TimeScribe.EnterNode(ScribeMode.Rewind, state);
                    node.ExposeTimeData();
                    TimeScribe.ExitNode();
                }
                else
                {
                    node.RewindToPreBirth();
                }
                if (!isPreview)
                {
                    container.RemoveStatesAfter(removeBackPoint ? timeStamp - 1 : timeStamp);
                }
            }
        }
        private void RecordAll(bool removeExceedingState = true)
        {
            ++CurrentTimeStamp;
            if (TimeStampTime.Count >= CurrentTimeStamp + 1)
            {
                TimeStampTime[CurrentTimeStamp] = FakeTime;
            }
            else
            {
                TimeStampTime.Add(FakeTime);
            }
            var listNode = Rewindables.First;

            while (listNode != null)
            {
                var node        = listNode.Value;
                var curListNode = listNode;
                listNode = listNode.Next;
                if (node == null)
                {
                    Rewindables.Remove(curListNode);
                    continue;
                }
                TimeScribe.EnterNode(ScribeMode.Probe, null);
                node.ExposeTimeData();
                byte[] state = new byte[TimeScribe.ProbeRes];
                TimeScribe.EnterNode(ScribeMode.Record, state);
                node.ExposeTimeData();
                node.GetTimeStateContainer.AddTimeState(state, CurrentTimeStamp);
                if (removeExceedingState)
                {
                    node.GetTimeStateContainer.RemoveStatesBefore(EarliestExistingTimeState);
                }
                TimeScribe.ExitNode();
            }
        }
 public virtual void ExposeTimeData()
 {
     enabled = TimeScribe.Look_Property(enabled);
 }