station 46 room

This commit is contained in:
2023-05-14 18:13:02 +02:00
parent f03d723119
commit eba953b844
31 changed files with 978 additions and 672 deletions

View File

@@ -10,5 +10,5 @@ MonoBehaviour:
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5aece1c1f67b46afaf249c4520a0478f, type: 3} m_Script: {fileID: 11500000, guid: 5aece1c1f67b46afaf249c4520a0478f, type: 3}
m_Name: Place On Bottom Row m_Name: Place On Bottom Or Top Row Alternating
m_EditorClassIdentifier: m_EditorClassIdentifier:

View File

@@ -72,14 +72,20 @@ namespace EscapeRoomEngine.Engine.Runtime
public void GenerateRoom() public void GenerateRoom()
{ {
Logger.Log("Generating room...", LogType.RoomGeneration); Logger.Log("Generating room...", LogType.RoomGeneration);
var intro = NumberOfRooms == 0;
// get the last entrance from the newest room or create a spawn passage with no entrance door for where the player will start // get the last entrance from the newest room or create a spawn passage with no entrance door for where the player will start
var entrance = NumberOfRooms > 0 ? _rooms.Last().exit : new Passage(new DoorModule(null, theme.spawnDoor)); var entrance = intro ? new Passage(new DoorModule(null, theme.spawnDoor)) : _rooms.Last().exit;
var room = new Room(entrance); var room = new Room(entrance);
_rooms.Add(room); _rooms.Add(room);
if (_plannedPuzzles.Count > 0) if (intro)
{
GenerateIntroSpace(room, entrance);
}
else if (_plannedPuzzles.Count > 0)
{ {
GeneratePuzzleSpace(room, entrance); GeneratePuzzleSpace(room, entrance);
} }
@@ -92,7 +98,12 @@ namespace EscapeRoomEngine.Engine.Runtime
var roomId = _rooms.Count - 1; var roomId = _rooms.Count - 1;
room.InstantiateRoom(_playSpaceOrigin.transform, roomId * roomOffset, roomId.ToString()); room.InstantiateRoom(_playSpaceOrigin.transform, roomId * roomOffset, roomId.ToString());
if (theme.environment) if (intro)
{
Instantiate(theme.intro, room.roomObject.transform, false);
FindObjectOfType<Intro>().Place(room.exit.fromOut.DoorState.transform);
}
else if (theme.environment)
{ {
Instantiate(theme.environment, room.roomObject.transform, false); Instantiate(theme.environment, room.roomObject.transform, false);
} }
@@ -101,6 +112,20 @@ namespace EscapeRoomEngine.Engine.Runtime
UpdateUI(); UpdateUI();
} }
private void GenerateIntroSpace(Room room, Passage entrance)
{
Logger.Log($"Generating intro space...", LogType.RoomGeneration);
var space = new IntroSpace(room, entrance);
var exitDoor = new DoorModule(space, theme.introExitDoor);
if (!space.AddModuleWithRequirements(exitDoor))
{
throw new EngineException("Could not satisfy requirements for exit door.");
}
var exit = new Passage(exitDoor);
room.AddSpace(space, exit);
}
private void GeneratePuzzleSpace(Room room, Passage entrance) private void GeneratePuzzleSpace(Room room, Passage entrance)
{ {
var puzzlesAdded = 0; var puzzlesAdded = 0;
@@ -183,15 +208,11 @@ namespace EscapeRoomEngine.Engine.Runtime
GameControl.Instance.PlannedPuzzles = _plannedPuzzles; GameControl.Instance.PlannedPuzzles = _plannedPuzzles;
} }
/// <summary>
/// Hide or destroy the room two rooms ago. The actual previous room is kept for the player to be able to backtrack one room.
/// </summary>
/// <param name="destroy"></param>
public void HidePreviousRoom(bool destroy = true) public void HidePreviousRoom(bool destroy = true)
{ {
if (NumberOfRooms > 2) if (NumberOfRooms >= 2)
{ {
var room = _rooms[NumberOfRooms - 3]; var room = _rooms[NumberOfRooms - 2];
// lock the doors that might be used to return to the old room // lock the doors that might be used to return to the old room
room.exit.toIn.DoorState.Lock(); room.exit.toIn.DoorState.Lock();

View File

@@ -15,6 +15,9 @@ namespace EscapeRoomEngine.Engine.Runtime
{ {
#region Theme #region Theme
[BoxGroup("Theme")]
public Intro intro;
[BoxGroup("Theme")] [Required] [BoxGroup("Theme")] [Required]
[Tooltip("The tile that rooms are generated from.")] [Tooltip("The tile that rooms are generated from.")]
public SpaceTile spaceTile; public SpaceTile spaceTile;
@@ -33,6 +36,9 @@ namespace EscapeRoomEngine.Engine.Runtime
[BoxGroup("Doors")] [Required] [BoxGroup("Doors")] [Required]
public DoorModuleDescription spawnDoor; public DoorModuleDescription spawnDoor;
[BoxGroup("Doors")] [Required]
public DoorModuleDescription introExitDoor;
[BoxGroup("Doors")] [ValidateInput("IsNotEmpty", "At least one exit door type is required.")] [BoxGroup("Doors")] [ValidateInput("IsNotEmpty", "At least one exit door type is required.")]
[Tooltip("The types of exit doors this theme provides. Entrance doors are connected to the exit doors and don't need to be specified here.")] [Tooltip("The types of exit doors this theme provides. Entrance doors are connected to the exit doors and don't need to be specified here.")]
public List<DoorModuleDescription> exitDoorTypes; public List<DoorModuleDescription> exitDoorTypes;

View File

@@ -0,0 +1,14 @@
using UnityEngine;
namespace EscapeRoomEngine.Engine.Runtime
{
public class Intro : MonoBehaviour
{
public void Place(Transform placement)
{
var t = transform;
t.position = placement.position;
t.rotation = placement.rotation;
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c2e3fc71dc4142888bad2313cbf1bea9
timeCreated: 1684011098

View File

@@ -0,0 +1,19 @@
using UnityEngine;
namespace EscapeRoomEngine.Engine.Runtime
{
public class IntroSpace : Space
{
internal IntroSpace(Room room, Passage entrance) : base(room, entrance) {}
internal override void InstantiateSpace(Transform parent, string name)
{
spaceObject = new GameObject($"Space {name}");
spaceObject.transform.SetParent(parent, false);
spaceObject.transform.localPosition = new Vector3(rrPlacement.position.x, 0, rrPlacement.position.z);
// instantiate all modules inside this space
Modules.ForEach(module => module.InstantiateModule(spaceObject.transform));
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 84603b46fb8d4513945a113de3e6af72
timeCreated: 1684066247

View File

@@ -0,0 +1,46 @@
using System.Collections.Generic;
using EscapeRoomEngine.Engine.Runtime.Modules;
using EscapeRoomEngine.Engine.Runtime.Modules.State;
using EscapeRoomEngine.Engine.Runtime.Utilities;
using UnityEngine;
namespace EscapeRoomEngine.Engine.Runtime.Requirements.Placement
{
/// <summary>
/// This requirement guarantees that the back side of the module is placed on the bottom row of an even-numbered space or on the top row of an odd-numbered space.
/// </summary>
[CreateAssetMenu(menuName = "Requirements/Place On Bottom Or Top Row Alternating")]
public class PlaceOnBottomOrTopRowAlternating : PlacementRequirement
{
protected override List<Utilities.Placement> FilterCandidates(List<Utilities.Placement> candidates, Module module, Space space)
{
if (!module.description.HasType(ModuleType.DoorExit))
{
throw new WrongTypeException(module.description.types[0], ModuleType.DoorExit);
}
var number = FindObjectsByType<DoorState>(FindObjectsInactive.Include, FindObjectsSortMode.None).Length;
if (number / 2 % 2 == 0)
{
candidates.RemoveAll(candidate =>
{
var (left, right) = candidate.BackCorners;
return !(left.z == 0 && right.z == 0);
});
}
else
{
var sizeMinusOne = space.rrPlacement.size - Vector2Int.one;
candidates.RemoveAll(candidate =>
{
var (left, right) = candidate.BackCorners;
return !(left.z == sizeMinusOne.y && right.z == sizeMinusOne.y);
});
}
return candidates;
}
}
}

View File

@@ -1,24 +0,0 @@
using System.Collections.Generic;
using EscapeRoomEngine.Engine.Runtime.Modules;
using UnityEngine;
namespace EscapeRoomEngine.Engine.Runtime.Requirements.Placement
{
/// <summary>
/// This requirement guarantees that the back side of the module is placed on the bottom row of the space.
/// </summary>
[CreateAssetMenu(menuName = "Requirements/Place On Bottom Row")]
public class PlaceOnBottomRow : PlacementRequirement
{
protected override List<Utilities.Placement> FilterCandidates(List<Utilities.Placement> candidates, Module module, Space space)
{
candidates.RemoveAll(candidate =>
{
var (left, right) = candidate.BackCorners;
return !(left.z == 0 && right.z == 0);
});
return candidates;
}
}
}

View File

@@ -91,7 +91,11 @@ namespace EscapeRoomEngine.Engine.Runtime
// start measurements on every puzzle as soon as the player enters the last room // start measurements on every puzzle as soon as the player enters the last room
case DoorEventType.ExitedFrom when door.Equals(entrance.toIn) && Engine.Instance.CurrentRoom.Contains(this): case DoorEventType.ExitedFrom when door.Equals(entrance.toIn) && Engine.Instance.CurrentRoom.Contains(this):
puzzles.ForEach(puzzle => Measure.StartMeasuring((PuzzleModuleDescription)puzzle.description)); puzzles.ForEach(puzzle => Measure.StartMeasuring((PuzzleModuleDescription)puzzle.description));
// Engine.Instance.HidePreviousRoom(); if (Engine.Instance.NumberOfRooms == 2)
{
// hide the intro room when exiting the first portal
Engine.Instance.HidePreviousRoom(false);
}
break; break;
} }
}; };

View File

@@ -41,8 +41,10 @@ namespace EscapeRoomEngine.Engine.Runtime
return modules; return modules;
} }
} }
protected GameObject spaceObject;
private GameObject _spaceObject, _spaceTiles; private GameObject _spaceTiles;
private List<Module> _stagedModules = new(); private List<Module> _stagedModules = new();
internal Space(Room room, Passage entrance) internal Space(Room room, Passage entrance)
@@ -97,15 +99,15 @@ namespace EscapeRoomEngine.Engine.Runtime
return requirementsFulfilled; return requirementsFulfilled;
} }
internal void InstantiateSpace(Transform parent, string name) internal virtual void InstantiateSpace(Transform parent, string name)
{ {
_spaceObject = new GameObject($"Space {name}"); spaceObject = new GameObject($"Space {name}");
_spaceObject.transform.SetParent(parent, false); spaceObject.transform.SetParent(parent, false);
_spaceObject.transform.localPosition = new Vector3(rrPlacement.position.x, 0, rrPlacement.position.z); spaceObject.transform.localPosition = new Vector3(rrPlacement.position.x, 0, rrPlacement.position.z);
// build the space floor out of tiles // build the space floor out of tiles
_spaceTiles = new GameObject($"Space Geometry"); _spaceTiles = new GameObject($"Space Geometry");
_spaceTiles.transform.SetParent(_spaceObject.transform, false); _spaceTiles.transform.SetParent(spaceObject.transform, false);
_spaceTiles.isStatic = true; _spaceTiles.isStatic = true;
for (var z = 0; z < rrPlacement.size.y; z++) for (var z = 0; z < rrPlacement.size.y; z++)
{ {
@@ -131,7 +133,7 @@ namespace EscapeRoomEngine.Engine.Runtime
} }
// instantiate all modules inside this space // instantiate all modules inside this space
Modules.ForEach(module => module.InstantiateModule(_spaceObject.transform)); Modules.ForEach(module => module.InstantiateModule(spaceObject.transform));
} }
/// <summary> /// <summary>

View File

@@ -130,6 +130,7 @@ namespace EscapeRoomEngine.Engine.Runtime.UI
public void StartGame() public void StartGame()
{ {
gameState = GameState.Running; gameState = GameState.Running;
PauseGame(); // the time is not running during the intro
TimeElapsed = 0; TimeElapsed = 0;
@@ -174,6 +175,12 @@ namespace EscapeRoomEngine.Engine.Runtime.UI
pauseButton.GetComponent<PauseButton>().Paused = true; pauseButton.GetComponent<PauseButton>().Paused = true;
break; break;
case GameState.Paused: case GameState.Paused:
// check if the intro portal should be activated
if (Engine.Instance.NumberOfRooms == 1)
{
Engine.Instance.CurrentRoom.Unwrap().SkipRoom();
}
gameState = GameState.Running; gameState = GameState.Running;
pauseButton.GetComponent<PauseButton>().Paused = false; pauseButton.GetComponent<PauseButton>().Paused = false;
break; break;

View File

@@ -14,6 +14,8 @@ namespace EscapeRoomEngine.Engine.Runtime.Utilities
public WrongTypeException(DoorType expected, DoorType found) : base($"Wrong door type ({found} instead of {expected})") {} public WrongTypeException(DoorType expected, DoorType found) : base($"Wrong door type ({found} instead of {expected})") {}
public WrongTypeException(ModuleType expected, ModuleType found) : base($"Wrong module type ({found} instead of {expected})") {}
public WrongTypeException(string message) : base(message) {} public WrongTypeException(string message) : base(message) {}
} }

View File

@@ -5143,16 +5143,21 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z propertyPath: m_LocalEulerAnglesHint.z
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 6649846303971886392, guid: 1358b4ef564c4704682417dff526766a, - target: {fileID: 6527336161650890507, guid: 1358b4ef564c4704682417dff526766a,
type: 3} type: 3}
propertyPath: m_IsActive propertyPath: target
value: 0 value:
objectReference: {fileID: 0} objectReference: {fileID: 1429679620}
- target: {fileID: 8137769401290482906, guid: 1358b4ef564c4704682417dff526766a, - target: {fileID: 8137769401290482906, guid: 1358b4ef564c4704682417dff526766a,
type: 3} type: 3}
propertyPath: m_Name propertyPath: m_Name
value: Intro Room value: Intro Room
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 8137769401290482906, guid: 1358b4ef564c4704682417dff526766a,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: [] m_AddedGameObjects: []
@@ -5277,84 +5282,6 @@ Transform:
type: 3} type: 3}
m_PrefabInstance: {fileID: 2343402481646314945} m_PrefabInstance: {fileID: 2343402481646314945}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!1001 &3040824338403071535
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 3103331268735355584, guid: 884a61055675a5a4c825fba3863c8011,
type: 3}
propertyPath: m_RootOrder
value: 7
objectReference: {fileID: 0}
- target: {fileID: 3103331268735355584, guid: 884a61055675a5a4c825fba3863c8011,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3103331268735355584, guid: 884a61055675a5a4c825fba3863c8011,
type: 3}
propertyPath: m_LocalPosition.y
value: 2
objectReference: {fileID: 0}
- target: {fileID: 3103331268735355584, guid: 884a61055675a5a4c825fba3863c8011,
type: 3}
propertyPath: m_LocalPosition.z
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 3103331268735355584, guid: 884a61055675a5a4c825fba3863c8011,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3103331268735355584, guid: 884a61055675a5a4c825fba3863c8011,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3103331268735355584, guid: 884a61055675a5a4c825fba3863c8011,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3103331268735355584, guid: 884a61055675a5a4c825fba3863c8011,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3103331268735355584, guid: 884a61055675a5a4c825fba3863c8011,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3103331268735355584, guid: 884a61055675a5a4c825fba3863c8011,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3103331268735355584, guid: 884a61055675a5a4c825fba3863c8011,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7243428590643213936, guid: 884a61055675a5a4c825fba3863c8011,
type: 3}
propertyPath: m_Name
value: Follow Sphere
objectReference: {fileID: 0}
- target: {fileID: 8024693052737180052, guid: 884a61055675a5a4c825fba3863c8011,
type: 3}
propertyPath: target
value:
objectReference: {fileID: 1429679620}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 884a61055675a5a4c825fba3863c8011, type: 3}
--- !u!1001 &3750376657174321753 --- !u!1001 &3750376657174321753
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e8577966b449a834aa0ccc54d45991ee
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: e9879de5b83a4547be8ec1c406fb0556
timeCreated: 1684016482

File diff suppressed because it is too large Load Diff

View File

@@ -9587,6 +9587,7 @@ GameObject:
- component: {fileID: 6265514306172551706} - component: {fileID: 6265514306172551706}
- component: {fileID: 5628022306974000633} - component: {fileID: 5628022306974000633}
- component: {fileID: 8024693052737180052} - component: {fileID: 8024693052737180052}
- component: {fileID: 2877895139439227182}
m_Layer: 0 m_Layer: 0
m_Name: Intro Sphere m_Name: Intro Sphere
m_TagString: Untagged m_TagString: Untagged
@@ -14949,6 +14950,102 @@ MonoBehaviour:
minDistance: 0.01 minDistance: 0.01
speed: 100 speed: 100
target: {fileID: 0} target: {fileID: 0}
--- !u!82 &2877895139439227182
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7243428590643213936}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 8300000, guid: e9879de5b83a4547be8ec1c406fb0556, type: 3}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!1 &8694320155638376109 --- !u!1 &8694320155638376109
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@@ -1,4 +1,5 @@
using UnityEngine; using EscapeRoomEngine.VR.Runtime;
using UnityEngine;
namespace Station46.Environments.Intro_Sphere.Scripts namespace Station46.Environments.Intro_Sphere.Scripts
{ {
@@ -11,9 +12,10 @@ namespace Station46.Environments.Intro_Sphere.Scripts
private Rigidbody _rigidbody; private Rigidbody _rigidbody;
private void Start() private void Awake()
{ {
_rigidbody = GetComponent<Rigidbody>(); _rigidbody = GetComponent<Rigidbody>();
target = Player.Instance.sphereFollow;
} }
private void FixedUpdate() private void FixedUpdate()

View File

@@ -17,8 +17,8 @@ MonoBehaviour:
type: 3} type: 3}
preconditionRequirements: [] preconditionRequirements: []
placementRequirements: placementRequirements:
- {fileID: 11400000, guid: 43eb2a566a244964aa3a3319eaafe1a8, type: 2}
- {fileID: 11400000, guid: 49248c593c97bff4f8889e5c4da6c1bb, type: 2}
- {fileID: 11400000, guid: 1f1825b71bae09c438a1cb52603347d6, type: 2} - {fileID: 11400000, guid: 1f1825b71bae09c438a1cb52603347d6, type: 2}
- {fileID: 11400000, guid: 49248c593c97bff4f8889e5c4da6c1bb, type: 2}
- {fileID: 11400000, guid: 43eb2a566a244964aa3a3319eaafe1a8, type: 2}
connectedDoorDescription: {fileID: 11400000, guid: 58d2a66244450b94d8a266569cb8d2fa, connectedDoorDescription: {fileID: 11400000, guid: 58d2a66244450b94d8a266569cb8d2fa,
type: 2} type: 2}

View File

@@ -0,0 +1,24 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f5c1202346c34ebc9c3f701a98b50877, type: 3}
m_Name: D Station 46 Portal Intro Exit
m_EditorClassIdentifier:
types: 01000000
modulePrefab: {fileID: 1047274803835009197, guid: 07cea580d9888d24c84d8d62747839ad,
type: 3}
preconditionRequirements: []
placementRequirements:
- {fileID: 11400000, guid: 05866bd177db8074a9bb40dcd0d9bcfe, type: 2}
- {fileID: 11400000, guid: 49248c593c97bff4f8889e5c4da6c1bb, type: 2}
- {fileID: 11400000, guid: 43eb2a566a244964aa3a3319eaafe1a8, type: 2}
connectedDoorDescription: {fileID: 11400000, guid: 58d2a66244450b94d8a266569cb8d2fa,
type: 2}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0103271741231674884edcd62f8b89bc
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -205,7 +205,7 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3937028285041533707} m_GameObject: {fileID: 3937028285041533707}
m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
@@ -213,7 +213,7 @@ Transform:
- {fileID: 6713443008366400661} - {fileID: 6713443008366400661}
m_Father: {fileID: 2246995198243242195} m_Father: {fileID: 2246995198243242195}
m_RootOrder: -1 m_RootOrder: -1
m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
--- !u!1 &5635962022185625128 --- !u!1 &5635962022185625128
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -261,6 +261,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
color: {r: 8, g: 3.5137255, b: 0, a: 1} color: {r: 8, g: 3.5137255, b: 0, a: 1}
startActive: 0
emissionRenderer: {fileID: 4905517471767474057} emissionRenderer: {fileID: 4905517471767474057}
--- !u!114 &3392592227672293041 --- !u!114 &3392592227672293041
MonoBehaviour: MonoBehaviour:

View File

@@ -83,6 +83,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
color: {r: 8, g: 3.5137255, b: 0, a: 1} color: {r: 8, g: 3.5137255, b: 0, a: 1}
startActive: 0
emissionRenderer: {fileID: 4937930574110528582} emissionRenderer: {fileID: 4937930574110528582}
--- !u!114 &1047274803835009197 --- !u!114 &1047274803835009197
MonoBehaviour: MonoBehaviour:
@@ -124,7 +125,7 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3231959822301966204} m_GameObject: {fileID: 3231959822301966204}
m_LocalRotation: {x: -0, y: 0.7071068, z: -0, w: 0.7071068} m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
@@ -132,7 +133,7 @@ Transform:
- {fileID: 5709573715699328820} - {fileID: 5709573715699328820}
m_Father: {fileID: 9212560043793041154} m_Father: {fileID: 9212560043793041154}
m_RootOrder: -1 m_RootOrder: -1
m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
--- !u!1 &3701970131638747585 --- !u!1 &3701970131638747585
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@@ -47,7 +47,7 @@ PrefabInstance:
- target: {fileID: 419816427646908934, guid: c84e0198f66a41b4294f6e8e585192a4, - target: {fileID: 419816427646908934, guid: c84e0198f66a41b4294f6e8e585192a4,
type: 3} type: 3}
propertyPath: m_RootOrder propertyPath: m_RootOrder
value: 2 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 419816427646908934, guid: c84e0198f66a41b4294f6e8e585192a4, - target: {fileID: 419816427646908934, guid: c84e0198f66a41b4294f6e8e585192a4,
type: 3} type: 3}
@@ -151,6 +151,11 @@ PrefabInstance:
value: value:
objectReference: {fileID: 3680365890358827431, guid: 7bb2b5aee7d244943b4f1bb2f6606ac2, objectReference: {fileID: 3680365890358827431, guid: 7bb2b5aee7d244943b4f1bb2f6606ac2,
type: 3} type: 3}
- target: {fileID: 7423186386015115176, guid: c84e0198f66a41b4294f6e8e585192a4,
type: 3}
propertyPath: sphereFollow
value:
objectReference: {fileID: 5693385846897636622}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: m_AddedGameObjects:

View File

@@ -12,8 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 28d04249c1c4438da94b524e7d4afff2, type: 3} m_Script: {fileID: 11500000, guid: 28d04249c1c4438da94b524e7d4afff2, type: 3}
m_Name: Station 46 m_Name: Station 46
m_EditorClassIdentifier: m_EditorClassIdentifier:
minRoomSize: {x: 2, y: 4} intro: {fileID: 6790828229373266063, guid: 1358b4ef564c4704682417dff526766a, type: 3}
playSpace: {x: 2, y: 4}
spaceTile: {fileID: 3229991053255736984, guid: b8f192f7cebe686468af6b1a71c4605b, spaceTile: {fileID: 3229991053255736984, guid: b8f192f7cebe686468af6b1a71c4605b,
type: 3} type: 3}
environment: {fileID: 5743657079028767629, guid: 17ecdbaca50efaa4ab503614dfec54a8, environment: {fileID: 5743657079028767629, guid: 17ecdbaca50efaa4ab503614dfec54a8,
@@ -28,6 +27,7 @@ MonoBehaviour:
hdr: {r: 0, g: 4.329412, b: 8, a: 1} hdr: {r: 0, g: 4.329412, b: 8, a: 1}
ldr: {r: 0, g: 0.5401311, b: 1, a: 1} ldr: {r: 0, g: 0.5401311, b: 1, a: 1}
spawnDoor: {fileID: 11400000, guid: f862612dd70c369448b18bbd8094cb38, type: 2} spawnDoor: {fileID: 11400000, guid: f862612dd70c369448b18bbd8094cb38, type: 2}
introExitDoor: {fileID: 11400000, guid: 0103271741231674884edcd62f8b89bc, type: 2}
exitDoorTypes: exitDoorTypes:
- {fileID: 11400000, guid: 83d6800536b1df14287ff2cd8e0d58ce, type: 2} - {fileID: 11400000, guid: 83d6800536b1df14287ff2cd8e0d58ce, type: 2}
puzzleCount: {x: 1, y: 1} puzzleCount: {x: 1, y: 1}

View File

@@ -12,8 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 28d04249c1c4438da94b524e7d4afff2, type: 3} m_Script: {fileID: 11500000, guid: 28d04249c1c4438da94b524e7d4afff2, type: 3}
m_Name: Test Theme m_Name: Test Theme
m_EditorClassIdentifier: m_EditorClassIdentifier:
minRoomSize: {x: 2, y: 4} intro: {fileID: 6790828229373266063, guid: 1358b4ef564c4704682417dff526766a, type: 3}
playSpace: {x: 2, y: 4}
spaceTile: {fileID: 3229991053255736984, guid: b8f192f7cebe686468af6b1a71c4605b, spaceTile: {fileID: 3229991053255736984, guid: b8f192f7cebe686468af6b1a71c4605b,
type: 3} type: 3}
environment: {fileID: 5743657079028767629, guid: 17ecdbaca50efaa4ab503614dfec54a8, environment: {fileID: 5743657079028767629, guid: 17ecdbaca50efaa4ab503614dfec54a8,
@@ -28,8 +27,18 @@ MonoBehaviour:
hdr: {r: 0, g: 4.329412, b: 8, a: 1} hdr: {r: 0, g: 4.329412, b: 8, a: 1}
ldr: {r: 0, g: 0.5401311, b: 1, a: 1} ldr: {r: 0, g: 0.5401311, b: 1, a: 1}
spawnDoor: {fileID: 11400000, guid: f862612dd70c369448b18bbd8094cb38, type: 2} spawnDoor: {fileID: 11400000, guid: f862612dd70c369448b18bbd8094cb38, type: 2}
introExitDoor: {fileID: 11400000, guid: 0103271741231674884edcd62f8b89bc, type: 2}
exitDoorTypes: exitDoorTypes:
- {fileID: 11400000, guid: 83d6800536b1df14287ff2cd8e0d58ce, type: 2} - {fileID: 11400000, guid: 83d6800536b1df14287ff2cd8e0d58ce, type: 2}
puzzleCount: {x: 1, y: 1} puzzleCount: {x: 1, y: 1}
puzzleTypes: puzzleTypes:
- {fileID: 11400000, guid: ecc412010abd45a4aaa7d364b6c3789c, type: 2}
- {fileID: 11400000, guid: 8707242279bb6c541a12dc4491388c42, type: 2}
- {fileID: 11400000, guid: 15dcebb677f5df940839eaaa50274294, type: 2}
- {fileID: 11400000, guid: 3f79d37154e44ca47b54bb43bbe8d9aa, type: 2}
- {fileID: 11400000, guid: ee5a44432e80cd64689be3ff34750339, type: 2} - {fileID: 11400000, guid: ee5a44432e80cd64689be3ff34750339, type: 2}
- {fileID: 11400000, guid: 1b21332d2a4da2d4d9f8a105d1e24980, type: 2}
- {fileID: 11400000, guid: 6ea70b544b4cffb4ca12286c749da98d, type: 2}
- {fileID: 11400000, guid: 010a967ecaf566041a0e12459806bd04, type: 2}
- {fileID: 11400000, guid: ae16de9735d6541419214ac1699feed8, type: 2}
- {fileID: 11400000, guid: 9d56e3bfca17b264e9f04bd8242030f8, type: 2}

View File

@@ -19,6 +19,7 @@ namespace EscapeRoomEngine.VR.Runtime
} }
[BoxGroup("Internal")] public new Camera camera; [BoxGroup("Internal")] public new Camera camera;
[BoxGroup("Internal")] public Transform sphereFollow;
[BoxGroup("Internal")] [SerializeField] private Transform leftEye, rightEye; [BoxGroup("Internal")] [SerializeField] private Transform leftEye, rightEye;
[BoxGroup("Internal")] [SerializeField] private Collider leftHand, rightHand; [BoxGroup("Internal")] [SerializeField] private Collider leftHand, rightHand;