예제 #1
0
 internal void Reset()
 {
     bytes.Reset();
     if (_userRestorable != null)
     {
         _userRestorable.Clear();
         _userRestorable = null;
     }
 }
예제 #2
0
 /// <summary>
 /// Register a new restorable object to the game state
 /// </summary>
 /// <param name="restorable">The restorable to be added</param>
 /// <exception cref="ArgumentException">
 /// Thrown when the name of the restorable object is duplicated defined or the name of the restorable object
 /// is null
 /// </exception>
 public void AddRestorable(IRestorable restorable)
 {
     try
     {
         restorables.Add(restorable.restorableObjectName, restorable);
     }
     catch (ArgumentException ex)
     {
         throw new ArgumentException("Nova: a restorable should have an unique and not null name", ex);
     }
 }
        protected override void OnZoneEntered(Collider player)
        {
            playerInZone = true;
            if (restorable == null)
            {
                restorable = player.GetComponent <IRestorable>();
            }

            audioClipTranquilizer.PlayAudio();
            StartCoroutine(RestoreHealth(healthPerSecond));
        }
예제 #4
0
        void RestoreToConfirmedFrame()
        {
            //skip the first frame because there is no systemData to restore to
            if (_currentInputFrameNumber > 1)
            {
                SWConsole.Crit($"Engine: RestoreToConfirmedFrame {_currentInputFrameNumber}");
                SWSystemDataFrame systemDataFrame = systemDataFrames[_currentInputFrameNumber];

                IRestorable restorable = systemDataFrame.GetUserRestorable();
                if (restorable != null)
                {
                    restorable.Restore();
                }

                ReloadSystemDataSnapshot(systemDataFrame.bytes);
                systemDataFrame.bytes.SetReadIndex(0);
            }
        }
예제 #5
0
        void ExportSimulationResult()
        {
            SWSystemDataFrame systemDataFrame = systemDataFrames[_currentInputFrameNumber];

            if (systemDataFrame == null)
            {
                systemDataFrame = new SWSystemDataFrame(_currentInputFrameNumber);
                systemDataFrames[_currentInputFrameNumber] = systemDataFrame;
            }

            systemDataFrame.FrameNumber = _currentInputFrameNumber;
            systemDataFrame.Reset();

            if (OnEngineWillExportEvent != null)
            {
                IRestorable restorable = OnEngineWillExportEvent(_currentInputFrameNumber);
                systemDataFrame.SetUserRestorable(restorable);
            }

            TakeSystemDataSnapshot(systemDataFrame.bytes);
        }
예제 #6
0
 internal void SetUserRestorable(IRestorable restorable)
 {
     _userRestorable = restorable;
 }
예제 #7
0
 /// <summary>
 /// remove a restorable
 /// </summary>
 /// <param name="restorable">the restorable to be removed</param>
 public void RemoveRestorable(IRestorable restorable)
 {
     restorables.Remove(restorable.restorableObjectName);
 }