void Start()
 {
     if (LoadID != 0)
     {
         SaveLoadManager.RegisterSerializableGameObject(this);
     }
 }
Exemplo n.º 2
0
        void Awake()
        {
            playerEnterExit = GetComponent <PlayerEnterExit>();
            if (!playerEnterExit)
            {
                throw new Exception("PlayerEnterExit not found.");
            }

            playerCamera = GetComponentInChildren <Camera>();
            if (!playerCamera)
            {
                throw new Exception("Player Camera not found.");
            }

            playerMouseLook = playerCamera.GetComponent <PlayerMouseLook>();
            if (!playerMouseLook)
            {
                throw new Exception("PlayerMouseLook not found.");
            }

            playerMotor = GetComponent <PlayerMotor>();
            if (!playerMotor)
            {
                throw new Exception("PlayerMotor not found.");
            }

            playerEntityBehaviour = GetComponent <DaggerfallEntityBehaviour>();
            if (!playerEntityBehaviour)
            {
                throw new Exception("PlayerEntityBehaviour not found.");
            }

            SaveLoadManager.RegisterSerializableGameObject(this);
        }
        void Start()
        {
            if (LoadID != 0)
            {
                // Using same hack ID fix as SerializableEnemy
                if (GameManager.Instance.PlayerEnterExit.IsPlayerInsideDungeon && actionDoor)
                {
                    while (SaveLoadManager.StateManager.ContainsActionDoor(actionDoor.LoadID))
                    {
                        actionDoor.LoadID++;
                    }
                }

                SaveLoadManager.RegisterSerializableGameObject(this);
            }
        }
        void Start()
        {
            if (LoadID != 0)
            {
                // In RDB layouts the LoadID is generated from RDB record position
                // This is used to map save data back to an enemy injected by layout builders
                // But this can result in collisions when an RDB block is used more than once per layout
                // This hack fix will resolve collision by incrementing LoadID
                // This only works because RDB resources are always laid out in the same order
                // So subsequent layouts and collisions will resolve in same way
                // This bug can happen for serializable enemies, doors, and action objects added by layout
                // Does not affect dynamic objects like quest enemies and loot piles
                // Only fixing for enemies now - will look for a better solution in the future
                if (enemy && GameManager.Instance.PlayerEnterExit.IsPlayerInsideDungeon)
                {
                    while (SaveLoadManager.StateManager.ContainsEnemy(enemy.LoadID))
                    {
                        enemy.LoadID++;
                    }
                }

                SaveLoadManager.RegisterSerializableGameObject(this);
            }
        }