Beispiel #1
0
 public void AddOverride(RespawningBodyOverride respawningBodyOverride)
 {
     if (overrides == null)
     {
         overrides = new List <RespawningBodyOverride>();
     }
     overrides.Add(respawningBodyOverride);
 }
Beispiel #2
0
        public void Respawn(Vector3 offset)
        {
            if (ReplayRecorder.isPlaying || NetGame.isClient)
            {
                return;
            }
            GrabManager.Release(base.gameObject);
            Vector3    vector     = startPos + offset;
            Quaternion quaternion = startRot;

            if (overrides != null)
            {
                RespawningBodyOverride respawningBodyOverride = null;
                for (int i = 0; i < overrides.Count; i++)
                {
                    if (overrides[i].checkpoint.number <= Game.instance.currentCheckpointNumber && (respawningBodyOverride == null || overrides[i].checkpoint.number > respawningBodyOverride.checkpoint.number))
                    {
                        respawningBodyOverride = overrides[i];
                    }
                }
                if (respawningBodyOverride != null)
                {
                    vector     = respawningBodyOverride.initialToNewLocationMatrtix.MultiplyPoint3x4(vector);
                    quaternion = respawningBodyOverride.initialToNewLocationRotation * quaternion;
                }
            }
            mJustReset              = 5;
            mResetPosition          = vector;
            mResetRotation          = quaternion;
            base.transform.position = vector;
            base.transform.rotation = quaternion;
            if (syncLocalScale)
            {
                base.transform.localScale = startLocalScale;
            }
            UpdateVisibility();
            if (m_respawnEvent != null)
            {
                m_respawnEvent.Invoke();
            }
            else
            {
                Debug.LogError("Null respawn event.", this);
            }
        }