private Transform Stage_GetPlayerSpawnTransform(On.RoR2.Stage.orig_GetPlayerSpawnTransform orig, Stage self)
        {
            if (respawnCharacterMaster.Count == 0)
            {
                return(orig(self));
            }

            var       body = respawnCharacterMaster.Dequeue();
            Transform spawnTransform;

            switch (RespawnType)
            {
            case RespawnType.Teleporter:
                spawnTransform          = new GameObject().transform;
                spawnTransform.position = RespawnPosition.GetSpawnPositionAroundTeleporter(body, 0.5f, 3);

                if (spawnTransform.position != Vector3.zero)
                {
                    return(spawnTransform);
                }

                Debug.Log($"UsersRespawnController::Stage_GetPlayerSpawnTransform hook: Failed to find better respawn position for '{RespawnType}' respawn type");
                break;

            case RespawnType.Mithrix:
                spawnTransform          = new GameObject().transform;
                spawnTransform.position = RespawnPosition.GetSpawnPositionAroundMoonBoss(body, 100, 105);

                if (spawnTransform.position != Vector3.zero)
                {
                    return(spawnTransform);
                }

                Debug.Log($"UsersRespawnController::Stage_GetPlayerSpawnTransform hook: Failed to find better respawn position for '{RespawnType}' respawn type");
                break;
            }

            return(orig(self));
        }
예제 #2
0
 private Transform StageOnGetPlayerSpawnTransform(On.RoR2.Stage.orig_GetPlayerSpawnTransform orig, Stage self)
 {
     return(new GameObject {
         transform = { position = new Vector3(-40, 3, 0) }
     }.transform);
 }