Compare commits
72 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 924ef43361 | |||
| 7a8e945f81 | |||
| de10513161 | |||
| 1b2a6395c4 | |||
| 64a3eba203 | |||
| 480f458706 | |||
| b9bfeda9b6 | |||
| c9d1717acc | |||
| 16a69d2fec | |||
| bbdae70907 | |||
| c241e3d680 | |||
| d486a1cf6e | |||
| fd705d46e8 | |||
| 0d451302e0 | |||
| 8de8301205 | |||
| 48742e7d14 | |||
| e2699061da | |||
| eba953b844 | |||
| f03d723119 | |||
| 803b6c32b0 | |||
| 033989a85e | |||
| ec094f410f | |||
| 05c952e7c7 | |||
| 939c741787 | |||
| eb0c803ad7 | |||
| 309296e7a7 | |||
| f16b026404 | |||
| 064470be4d | |||
| b79e80b898 | |||
| 218bfcbd71 | |||
| 7ddf555771 | |||
| 42ef7cc9bd | |||
| 7e803a5279 | |||
| a866257535 | |||
| a0aaf5e87d | |||
| fd44becec0 | |||
| 1ba43d0b07 | |||
| 3fd61039fb | |||
| b96b47f963 | |||
| cb54ebab05 | |||
| b4612b482f | |||
| 393d52feef | |||
| a71e5cac37 | |||
| 0dc7eef753 | |||
| 31e96aa10a | |||
| 128ab216d2 | |||
| 52cf3a7fbd | |||
| 30d8f986df | |||
| e1bfecbd4b | |||
| 9c65d24685 | |||
| 307edb8491 | |||
| 6cf8d72900 | |||
| cd8c4cd345 | |||
| c024ddfe5e | |||
| 52fa079fce | |||
| 574ae42c93 | |||
| 4be8380a40 | |||
| 02bb0727b7 | |||
| 6d2b5c52a1 | |||
| 5e911f2df1 | |||
| d834b76aac | |||
| 70c603ad83 | |||
| 27dbb24b9f | |||
| dd080ef541 | |||
| da1837f00c | |||
| c5f3bb3299 | |||
| e8ae057754 | |||
| 8aa329a055 | |||
| b2c509e9cb | |||
| 013708f3b2 | |||
| 190a6f0cc9 | |||
| 155682a062 |
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2ef3a3f442154e3b9dfd9b5d481da2f3
|
||||
timeCreated: 1668944890
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c7b354cabf8d19641aab79bc248754fc
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Desert/Assets/Materials/Textures/Desert Floor/Desert Floor_DefaultMaterial_Height.png
(Stored with Git LFS)
BIN
Assets/Desert/Assets/Materials/Textures/Desert Floor/Desert Floor_DefaultMaterial_Height.png
(Stored with Git LFS)
Binary file not shown.
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1ea978a862c4e43479dabf3010298a7f
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Desert/Assets/Materials/Textures/Desert Portal/Desert Portal_Portal Frame_AlbedoTransparency.png
(Stored with Git LFS)
BIN
Assets/Desert/Assets/Materials/Textures/Desert Portal/Desert Portal_Portal Frame_AlbedoTransparency.png
(Stored with Git LFS)
Binary file not shown.
BIN
Assets/Desert/Assets/Materials/Textures/Desert Portal/Desert Portal_Portal Frame_Emission.png
(Stored with Git LFS)
BIN
Assets/Desert/Assets/Materials/Textures/Desert Portal/Desert Portal_Portal Frame_Emission.png
(Stored with Git LFS)
Binary file not shown.
BIN
Assets/Desert/Assets/Materials/Textures/Desert Portal/Desert Portal_Portal Frame_MetallicSmoothness.png
(Stored with Git LFS)
BIN
Assets/Desert/Assets/Materials/Textures/Desert Portal/Desert Portal_Portal Frame_MetallicSmoothness.png
(Stored with Git LFS)
Binary file not shown.
BIN
Assets/Desert/Assets/Materials/Textures/Desert Portal/Desert Portal_Portal Frame_Normal.png
(Stored with Git LFS)
BIN
Assets/Desert/Assets/Materials/Textures/Desert Portal/Desert Portal_Portal Frame_Normal.png
(Stored with Git LFS)
Binary file not shown.
BIN
Assets/Desert/Assets/Materials/Textures/Desert Portal/Desert Portal_Portal Frame_Occlusion.png
(Stored with Git LFS)
BIN
Assets/Desert/Assets/Materials/Textures/Desert Portal/Desert Portal_Portal Frame_Occlusion.png
(Stored with Git LFS)
Binary file not shown.
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d4f688bc6815b124bb3a6aed9c5dbb23
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4bdb2b8a22a17fb46a94a32f5e0d5deb
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0fed53d8054acb744a2694ac6c0f8ad4
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cece6b2150f191b4ea3c48fd610a7a92
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7da3f1888725aec47bfaab313783ba55
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d0c898fbe9ac6e84eb48b0660e6767b6
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 41c7988415b3efe46a8fd35a6d89e4a5
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Desert/Assets/Models/Desert Portal Exit.fbx
(Stored with Git LFS)
BIN
Assets/Desert/Assets/Models/Desert Portal Exit.fbx
(Stored with Git LFS)
Binary file not shown.
BIN
Assets/Desert/Assets/Models/Desert Portal.blend
(Stored with Git LFS)
BIN
Assets/Desert/Assets/Models/Desert Portal.blend
(Stored with Git LFS)
Binary file not shown.
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0558edff2d866f6428c81f676abdeab2
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 19649f458ac60a143a97d277f2285575
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 24a32e147f3a4dc46b30fcb26b57029d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5a2b46f9faf236c41abb51e88a73132b
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 44d5a1e22e7fa4249bbecd0ef88b8907
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 184f6b94f1880f04e8eabcc9e2b2aee1
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 983104a38693efd439457130b870aa33
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2c26ade15cc19b04c9c62d3b6bd88dbd
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5c97df6f1342d6543b9d4dd0aca23412
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4ae675b99f06ce047a49b1be706b1053
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,116 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1001 &6542684658370590840
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: 419816427646908932, guid: c84e0198f66a41b4294f6e8e585192a4,
|
||||
type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Desert XR Origin
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 419816427646908934, guid: c84e0198f66a41b4294f6e8e585192a4,
|
||||
type: 3}
|
||||
propertyPath: m_RootOrder
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 419816427646908934, guid: c84e0198f66a41b4294f6e8e585192a4,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 419816427646908934, guid: c84e0198f66a41b4294f6e8e585192a4,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 419816427646908934, guid: c84e0198f66a41b4294f6e8e585192a4,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 419816427646908934, guid: c84e0198f66a41b4294f6e8e585192a4,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 419816427646908934, guid: c84e0198f66a41b4294f6e8e585192a4,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 419816427646908934, guid: c84e0198f66a41b4294f6e8e585192a4,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 419816427646908934, guid: c84e0198f66a41b4294f6e8e585192a4,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 419816427646908934, guid: c84e0198f66a41b4294f6e8e585192a4,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 419816427646908934, guid: c84e0198f66a41b4294f6e8e585192a4,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 419816427646908934, guid: c84e0198f66a41b4294f6e8e585192a4,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 419816429261119706, guid: c84e0198f66a41b4294f6e8e585192a4,
|
||||
type: 3}
|
||||
propertyPath: m_ModelPrefab
|
||||
value:
|
||||
objectReference: {fileID: 3680365890358827431, guid: 7bb2b5aee7d244943b4f1bb2f6606ac2,
|
||||
type: 3}
|
||||
- target: {fileID: 419816429261119717, guid: c84e0198f66a41b4294f6e8e585192a4,
|
||||
type: 3}
|
||||
propertyPath: m_Radius
|
||||
value: 0.05
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 419816429507230469, guid: c84e0198f66a41b4294f6e8e585192a4,
|
||||
type: 3}
|
||||
propertyPath: m_Radius
|
||||
value: 0.05
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 419816429507230714, guid: c84e0198f66a41b4294f6e8e585192a4,
|
||||
type: 3}
|
||||
propertyPath: m_ModelPrefab
|
||||
value:
|
||||
objectReference: {fileID: 3680365890358827431, guid: 7bb2b5aee7d244943b4f1bb2f6606ac2,
|
||||
type: 3}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents:
|
||||
- targetCorrespondingSourceObject: {fileID: 419816428804372187, guid: c84e0198f66a41b4294f6e8e585192a4,
|
||||
type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 542038026734091070}
|
||||
m_SourcePrefab: {fileID: 100100000, guid: c84e0198f66a41b4294f6e8e585192a4, type: 3}
|
||||
--- !u!1 &6854256365856247459 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 419816428804372187, guid: c84e0198f66a41b4294f6e8e585192a4,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 6542684658370590840}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!45 &542038026734091070
|
||||
Skybox:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6854256365856247459}
|
||||
m_Enabled: 1
|
||||
m_CustomSkybox: {fileID: 2100000, guid: b543b13595b5be247a0ef19ffdc5344b, type: 2}
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ed6725b2b4fd4dc429aac3923b6506fc
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7e030288848a0744498738256ce9a3c2
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f9b1dc3124097814db4cf200b14309e0
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,214 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &1506878834482086433
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 5095331294769565189}
|
||||
m_Layer: 0
|
||||
m_Name: Slot 1
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &5095331294769565189
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1506878834482086433}
|
||||
m_LocalRotation: {x: -0.9820791, y: -0, z: -0, w: 0.18846948}
|
||||
m_LocalPosition: {x: 0, y: 0.812958, z: -0.104633}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 7756295983983028816}
|
||||
m_RootOrder: -1
|
||||
m_LocalEulerAnglesHint: {x: -158.273, y: 0, z: 0}
|
||||
--- !u!1 &4316323159942158443
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 862697354921996744}
|
||||
m_Layer: 0
|
||||
m_Name: Slot 0
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &862697354921996744
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4316323159942158443}
|
||||
m_LocalRotation: {x: -0.9820791, y: -0, z: -0, w: 0.18846948}
|
||||
m_LocalPosition: {x: 0, y: 0.886395, z: -0.288131}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 7756295983983028816}
|
||||
m_RootOrder: -1
|
||||
m_LocalEulerAnglesHint: {x: -158.273, y: 0, z: 0}
|
||||
--- !u!1 &7612444233466593008
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6165579071297624197}
|
||||
m_Layer: 0
|
||||
m_Name: Slot 2
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &6165579071297624197
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7612444233466593008}
|
||||
m_LocalRotation: {x: -0.9820791, y: -0, z: -0, w: 0.18846948}
|
||||
m_LocalPosition: {x: 0, y: 0.73952, z: 0.078867}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 7756295983983028816}
|
||||
m_RootOrder: -1
|
||||
m_LocalEulerAnglesHint: {x: -158.273, y: 0, z: 0}
|
||||
--- !u!1001 &2384246425946067472
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 2
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: 5383329221585827904, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
propertyPath: m_RootOrder
|
||||
value: 7
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5383329221585827904, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5383329221585827904, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5383329221585827904, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5383329221585827904, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5383329221585827904, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5383329221585827904, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5383329221585827904, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5383329221585827904, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5383329221585827904, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5383329221585827904, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5383329221585827905, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
propertyPath: totalSteps
|
||||
value: 3
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5383329221585827905, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
propertyPath: symbols.Array.size
|
||||
value: 3
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5383329221585827905, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
propertyPath: symbolSlots.Array.size
|
||||
value: 3
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5383329221585827905, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
propertyPath: symbolSlots.Array.data[0]
|
||||
value:
|
||||
objectReference: {fileID: 862697354921996744}
|
||||
- target: {fileID: 5383329221585827905, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
propertyPath: symbolSlots.Array.data[1]
|
||||
value:
|
||||
objectReference: {fileID: 5095331294769565189}
|
||||
- target: {fileID: 5383329221585827905, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
propertyPath: symbolSlots.Array.data[2]
|
||||
value:
|
||||
objectReference: {fileID: 6165579071297624197}
|
||||
- target: {fileID: 5383329221585827911, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Terminal 3 Slots
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_AddedGameObjects:
|
||||
- targetCorrespondingSourceObject: {fileID: 5383329221585827904, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 862697354921996744}
|
||||
- targetCorrespondingSourceObject: {fileID: 5383329221585827904, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 5095331294769565189}
|
||||
- targetCorrespondingSourceObject: {fileID: 5383329221585827904, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 6165579071297624197}
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 02a72e7f56d97334c93a1449eedc9d91, type: 3}
|
||||
--- !u!4 &7756295983983028816 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 5383329221585827904, guid: 02a72e7f56d97334c93a1449eedc9d91,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 2384246425946067472}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
@@ -1,13 +0,0 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Added
|
||||
|
||||
- Desert space and environment
|
||||
- Puzzle A, press buttons when their symbols light up
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5c40d0f295594f1bb8fcff1eafc17107
|
||||
timeCreated: 1668939744
|
||||
@@ -1,3 +0,0 @@
|
||||
# Desert
|
||||
|
||||
A desert theme for the VR escape room engine.
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 22c108ee7cba4c8da59abc65012143ea
|
||||
timeCreated: 1668940013
|
||||
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"name": "Desert",
|
||||
"rootNamespace": "EscapeRoomEngine",
|
||||
"references": [
|
||||
"GUID:2d68e204354e44f2a2ecf3cfa9213c5f",
|
||||
"GUID:ba4c7dba98ca4c31818cc46276b5dea1",
|
||||
"GUID:776d03a35f1b52c4a9aed9f56d7b4229"
|
||||
],
|
||||
"includePlatforms": [],
|
||||
"excludePlatforms": [],
|
||||
"allowUnsafeCode": false,
|
||||
"overrideReferences": false,
|
||||
"precompiledReferences": [],
|
||||
"autoReferenced": true,
|
||||
"defineConstraints": [],
|
||||
"versionDefines": [],
|
||||
"noEngineReferences": false
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 20d0c4bd521546c7859e37019a165e38
|
||||
timeCreated: 1668940232
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 073fb5180fa20564bb163c47ccafc413
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 788a501fd6ac4d74bc34a49c99b02fc2
|
||||
timeCreated: 1670792890
|
||||
@@ -1,37 +0,0 @@
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules;
|
||||
using UnityEngine;
|
||||
|
||||
namespace EscapeRoomEngine.Desert.Runtime.Portal
|
||||
{
|
||||
/// <summary>
|
||||
/// The desert theme includes its own version of a portal that changes colour when it is unlocked.
|
||||
/// </summary>
|
||||
[RequireComponent(typeof(Emission))]
|
||||
public class DesertPortal : EscapeRoomEngine.Portal.Runtime.Portal
|
||||
{
|
||||
private Emission _emission;
|
||||
|
||||
protected override void Awake()
|
||||
{
|
||||
base.Awake();
|
||||
|
||||
_emission = GetComponent<Emission>();
|
||||
|
||||
DoorEvent += (_, type) =>
|
||||
{
|
||||
// ReSharper disable once SwitchStatementMissingSomeEnumCasesNoDefault ConvertSwitchStatementToSwitchExpression
|
||||
switch (type)
|
||||
{
|
||||
case DoorEventType.Unlocked:
|
||||
_emission.color = Engine.Runtime.Engine.Theme.solvedColor.hdr;
|
||||
break;
|
||||
case DoorEventType.Locked:
|
||||
_emission.color = Engine.Runtime.Engine.Theme.puzzleColor.hdr;
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
_emission.active = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a6aa1e96d6564ba419a84d5bcb635568
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d97e612b38c148c1a988eefa9af29b75
|
||||
timeCreated: 1669687251
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3ec2f8925bad45d189d951bc02b39c11
|
||||
timeCreated: 1669815308
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"displayName": "Escape Room Engine Theme - Desert",
|
||||
"name": "wtf.milan.escape-room-engine.desert",
|
||||
"version": "0.0.1",
|
||||
"description": "A desert theme for the VR escape room engine.",
|
||||
"unity": "2022.1",
|
||||
"author": {
|
||||
"name": "Milan van Zanten",
|
||||
"email": "milan@milan.wtf",
|
||||
"url": "https://milan.wtf"
|
||||
},
|
||||
"hideInEditor": false,
|
||||
"keywords": ["vr", "virtual reality", "modular", "escape room"],
|
||||
"dependencies": {}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 720aa805e8204bab88c42fd946331244
|
||||
timeCreated: 1668939945
|
||||
@@ -7,7 +7,7 @@ LightingSettings:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Lighting Settings
|
||||
serializedVersion: 5
|
||||
serializedVersion: 6
|
||||
m_GIWorkflowMode: 1
|
||||
m_EnableBakedLightmaps: 1
|
||||
m_EnableRealtimeLightmaps: 0
|
||||
@@ -46,7 +46,7 @@ LightingSettings:
|
||||
m_PVREnvironmentReferencePointCount: 2048
|
||||
m_LightProbeSampleCountMultiplier: 4
|
||||
m_PVRBounces: 2
|
||||
m_PVRMinBounces: 1
|
||||
m_PVRMinBounces: 2
|
||||
m_PVREnvironmentImportanceSampling: 1
|
||||
m_PVRFilteringMode: 1
|
||||
m_PVRDenoiserTypeDirect: 1
|
||||
@@ -63,3 +63,4 @@ LightingSettings:
|
||||
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||
m_PVRTiledBaking: 0
|
||||
m_NumRaysToShootPerTexel: -1
|
||||
m_RespectSceneVisibilityWhenBakingGI: 0
|
||||
|
||||
316
Assets/Engine/Assets/Prefabs/UI/Current Puzzle.prefab
Normal file
316
Assets/Engine/Assets/Prefabs/UI/Current Puzzle.prefab
Normal file
@@ -0,0 +1,316 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1001 &1426389422660023004
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: 3093889143253032090, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Current Puzzle
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_RootOrder
|
||||
value: -1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 320
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 30
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects:
|
||||
- targetCorrespondingSourceObject: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 5130676646786296218}
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: cad05994b2fb37746988912bce5a31f5, type: 3}
|
||||
--- !u!114 &1167465838608174999 stripped
|
||||
MonoBehaviour:
|
||||
m_CorrespondingSourceObject: {fileID: 286020777690709323, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 1426389422660023004}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 8ef80fc9016c4a46a190769f3b771bfa, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!224 &4117484506985705025 stripped
|
||||
RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 3093889143253032093, guid: cad05994b2fb37746988912bce5a31f5,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 1426389422660023004}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1001 &8450872368111848395
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 4117484506985705025}
|
||||
m_Modifications:
|
||||
- target: {fileID: 3635623839229914385, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_Text
|
||||
value: Skip
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501520, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Button
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_RootOrder
|
||||
value: -1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 38
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 30
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501522, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501522, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501522, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
|
||||
value:
|
||||
objectReference: {fileID: 1167465838608174999}
|
||||
- target: {fileID: 3635623840709501522, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState
|
||||
value: 2
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501522, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
|
||||
value: Skip
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501522, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName
|
||||
value: EscapeRoomEngine.Engine.Runtime.UI.PuzzlePlanEntry, Engine
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3635623840709501522, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName
|
||||
value: UnityEngine.Object, UnityEngine
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: c7b840466ebfae1468d75282ab9334f5, type: 3}
|
||||
--- !u!224 &5130676646786296218 stripped
|
||||
RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 3635623840709501521, guid: c7b840466ebfae1468d75282ab9334f5,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 8450872368111848395}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9503821b3d498f84bb509bc30bfe48bd
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -56,7 +56,7 @@ PrefabInstance:
|
||||
- target: {fileID: 2655555272253868334, guid: fa44f6047bc35a141a84d1b4e0919ff9,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 54
|
||||
value: 30
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2655555272253868334, guid: fa44f6047bc35a141a84d1b4e0919ff9,
|
||||
type: 3}
|
||||
@@ -225,7 +225,7 @@ PrefabInstance:
|
||||
- target: {fileID: 2655555272253868334, guid: fa44f6047bc35a141a84d1b4e0919ff9,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 320
|
||||
value: 122
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2655555272253868334, guid: fa44f6047bc35a141a84d1b4e0919ff9,
|
||||
type: 3}
|
||||
@@ -270,12 +270,12 @@ PrefabInstance:
|
||||
- target: {fileID: 2655555272253868334, guid: fa44f6047bc35a141a84d1b4e0919ff9,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 0
|
||||
value: 160
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2655555272253868334, guid: fa44f6047bc35a141a84d1b4e0919ff9,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -30
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2655555272253868334, guid: fa44f6047bc35a141a84d1b4e0919ff9,
|
||||
type: 3}
|
||||
@@ -295,7 +295,7 @@ PrefabInstance:
|
||||
- target: {fileID: 2655555272253868335, guid: fa44f6047bc35a141a84d1b4e0919ff9,
|
||||
type: 3}
|
||||
propertyPath: m_Text
|
||||
value: 'Time Estimate: '
|
||||
value: 'Est. '
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2655555272253868335, guid: fa44f6047bc35a141a84d1b4e0919ff9,
|
||||
type: 3}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
%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: 5aece1c1f67b46afaf249c4520a0478f, type: 3}
|
||||
m_Name: Place On Bottom Or Top Row Alternating
|
||||
m_EditorClassIdentifier:
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dc63b0ce40036614b8465acd6a78bc8e
|
||||
guid: 49248c593c97bff4f8889e5c4da6c1bb
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
@@ -10,5 +10,5 @@ MonoBehaviour:
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 406f215d83114f4c9b3a92c8a0ea8d73, type: 3}
|
||||
m_Name: Place With Related Module
|
||||
m_Name: Place With First Related Module
|
||||
m_EditorClassIdentifier:
|
||||
@@ -11,7 +11,13 @@ namespace EscapeRoomEngine.Engine.Runtime.Editor
|
||||
public class EngineEditor : EditorWindow
|
||||
{
|
||||
private bool _registeredUpdateEvent;
|
||||
private Button _passToNextRoomButton, _skipCurrentRoomButton, _skipAndPassButton;
|
||||
|
||||
private Button
|
||||
_passToNextRoomButton,
|
||||
_skipCurrentRoomButton,
|
||||
_skipAndPassButton,
|
||||
_cameraUpButton,
|
||||
_cameraDownButton;
|
||||
|
||||
[MenuItem("Window/Engine Editor")]
|
||||
public static void ShowEditor()
|
||||
@@ -37,6 +43,16 @@ namespace EscapeRoomEngine.Engine.Runtime.Editor
|
||||
text = "Skip Current And Pass To Next Room"
|
||||
};
|
||||
rootVisualElement.Add(_skipAndPassButton);
|
||||
_cameraUpButton = new Button(CameraUp)
|
||||
{
|
||||
text = "Camera ↑"
|
||||
};
|
||||
rootVisualElement.Add(_cameraUpButton);
|
||||
_cameraDownButton = new Button(CameraDown)
|
||||
{
|
||||
text = "Camera ↓"
|
||||
};
|
||||
rootVisualElement.Add(_cameraDownButton);
|
||||
|
||||
EditorApplication.playModeStateChanged += _ => UpdateUI();
|
||||
UpdateUI();
|
||||
@@ -70,6 +86,16 @@ namespace EscapeRoomEngine.Engine.Runtime.Editor
|
||||
}
|
||||
}
|
||||
|
||||
private void CameraUp()
|
||||
{
|
||||
SceneView.lastActiveSceneView.pivot += new Vector3(0, 400, 0);
|
||||
}
|
||||
|
||||
private void CameraDown()
|
||||
{
|
||||
SceneView.lastActiveSceneView.pivot += new Vector3(0, -400, 0);
|
||||
}
|
||||
|
||||
private void UpdateUI()
|
||||
{
|
||||
if (Engine.Instance && EditorApplication.isPlaying)
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using EscapeRoomEngine.Engine.Runtime.Environment;
|
||||
using EscapeRoomEngine.Engine.Runtime.Measurements;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules.Description;
|
||||
using EscapeRoomEngine.Engine.Runtime.UI;
|
||||
using EscapeRoomEngine.Engine.Runtime.Utilities;
|
||||
using NaughtyAttributes;
|
||||
using UnityEngine;
|
||||
using Logger = EscapeRoomEngine.Engine.Runtime.Utilities.Logger;
|
||||
using LogType = EscapeRoomEngine.Engine.Runtime.Utilities.LogType;
|
||||
using Range = EscapeRoomEngine.Engine.Runtime.Utilities.Range;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime
|
||||
{
|
||||
@@ -40,12 +43,13 @@ namespace EscapeRoomEngine.Engine.Runtime
|
||||
public int NumberOfRooms => _rooms.Count;
|
||||
public IOption<Room> CurrentRoom => NumberOfRooms > 0 ? Some<Room>.Of(_rooms[^1]) : None<Room>.New();
|
||||
/// <summary>
|
||||
/// The currendly estimated time for the player to finish the experience.
|
||||
/// The currently estimated time for the player to finish the experience.
|
||||
/// </summary>
|
||||
public float EstimatedTimeRemaining { get; private set; }
|
||||
|
||||
private readonly List<Room> _rooms = new();
|
||||
private List<PuzzleModuleDescription> _availablePuzzles, _plannedPuzzles;
|
||||
private List<RoomEnvironment> _availableEnvironments;
|
||||
private GameObject _playSpaceOrigin;
|
||||
|
||||
private void Awake()
|
||||
@@ -56,13 +60,19 @@ namespace EscapeRoomEngine.Engine.Runtime
|
||||
|
||||
_availablePuzzles = new List<PuzzleModuleDescription>(theme.puzzleTypes);
|
||||
_plannedPuzzles = new List<PuzzleModuleDescription>(_availablePuzzles);
|
||||
ResetAvailableEnvironments();
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
_playSpaceOrigin = new GameObject("Play Space Origin");
|
||||
_playSpaceOrigin.transform.SetParent(transform);
|
||||
_playSpaceOrigin.transform.localPosition = new Vector3(-theme.playSpace.x / 2f, 0, -theme.playSpace.y / 2f);
|
||||
_playSpaceOrigin.transform.localPosition = new Vector3(-GameControl.Instance.RoomSize.x / 2f, 0, -GameControl.Instance.RoomSize.y / 2f);
|
||||
}
|
||||
|
||||
private void ResetAvailableEnvironments()
|
||||
{
|
||||
_availableEnvironments = new List<RoomEnvironment>(theme.environments);
|
||||
}
|
||||
|
||||
#region Generation
|
||||
@@ -71,34 +81,68 @@ namespace EscapeRoomEngine.Engine.Runtime
|
||||
{
|
||||
Logger.Log("Generating room...", LogType.RoomGeneration);
|
||||
|
||||
// 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 intro = NumberOfRooms == 0;
|
||||
|
||||
var room = new Room(entrance);
|
||||
Passage entrance;
|
||||
RoomEnvironment environment;
|
||||
if (intro)
|
||||
{
|
||||
entrance = new Passage(new DoorModule(null, theme.spawnDoor));
|
||||
environment = theme.intro.introEnvironment;
|
||||
}
|
||||
else
|
||||
{
|
||||
entrance = _rooms.Last().exit;
|
||||
if (_availableEnvironments.Count == 0)
|
||||
{
|
||||
ResetAvailableEnvironments();
|
||||
}
|
||||
environment = _availableEnvironments.PopRandomElement();
|
||||
}
|
||||
var room = new Room(entrance, environment);
|
||||
_rooms.Add(room);
|
||||
|
||||
if (_plannedPuzzles.Count > 0)
|
||||
if (intro)
|
||||
{
|
||||
GenerateIntroSpace(room, entrance);
|
||||
}
|
||||
else if (_plannedPuzzles.Count > 0)
|
||||
{
|
||||
GeneratePuzzleSpace(room, entrance);
|
||||
}
|
||||
else
|
||||
{
|
||||
GenerateEndSpace(room, entrance);
|
||||
GameControl.Instance.StopGame();
|
||||
GameControl.Instance.FinishGame();
|
||||
}
|
||||
|
||||
var roomId = _rooms.Count - 1;
|
||||
room.InstantiateRoom(_playSpaceOrigin.transform, roomId * roomOffset, roomId.ToString());
|
||||
|
||||
if (theme.environment)
|
||||
Instantiate(room.environment.environment, room.roomObject.transform, false);
|
||||
if (intro)
|
||||
{
|
||||
Instantiate(theme.environment, room.roomObject.transform, false);
|
||||
FindObjectOfType<Intro>().Place(room.exit.fromOut.DoorState.transform);
|
||||
}
|
||||
|
||||
GameControl.Instance.TimeInRoom = 0;
|
||||
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)
|
||||
{
|
||||
var puzzlesAdded = 0;
|
||||
@@ -106,8 +150,9 @@ namespace EscapeRoomEngine.Engine.Runtime
|
||||
Space space;
|
||||
Passage exit;
|
||||
|
||||
// choose the next puzzle
|
||||
var puzzle = ChoosePuzzle();
|
||||
// choose a puzzle from the plan and remove it from both the plan and later available puzzles (so it is only chosen once)
|
||||
var puzzle = Measure.PreferLessPlayed ? _plannedPuzzles.Pop() : _plannedPuzzles.PopRandomElement();
|
||||
_availablePuzzles.Remove(puzzle);
|
||||
GameControl.Instance.CurrentPuzzle = puzzle;
|
||||
|
||||
do
|
||||
@@ -126,7 +171,7 @@ namespace EscapeRoomEngine.Engine.Runtime
|
||||
}
|
||||
exit = new Passage(exitDoor);
|
||||
|
||||
// add puzzle
|
||||
// add puzzle
|
||||
if (space.AddModuleWithRequirements(Module.CreateModuleByType(space, puzzle)))
|
||||
{
|
||||
puzzlesAdded++;
|
||||
@@ -145,15 +190,13 @@ namespace EscapeRoomEngine.Engine.Runtime
|
||||
{
|
||||
Logger.Log($"Generating end space...", LogType.RoomGeneration);
|
||||
|
||||
room.AddSpace(new Space(room, entrance), null);
|
||||
}
|
||||
|
||||
private PuzzleModuleDescription ChoosePuzzle()
|
||||
{
|
||||
// choose a puzzle from the plan and remove it from both the plan and later available puzzles (so it is only chosen once)
|
||||
var puzzle = _plannedPuzzles.PopRandomElement();
|
||||
_availablePuzzles.Remove(puzzle);
|
||||
return puzzle;
|
||||
var space = new Space(room, entrance);
|
||||
var endModule = new Module(space, theme.endModule);
|
||||
if (!space.AddModuleWithRequirements(endModule))
|
||||
{
|
||||
throw new EngineException("Could not satisfy requirements for end module.");
|
||||
}
|
||||
room.AddSpace(space, null);
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -179,19 +222,20 @@ namespace EscapeRoomEngine.Engine.Runtime
|
||||
_plannedPuzzles.Add(_availablePuzzles[i]);
|
||||
}
|
||||
|
||||
if (Measure.PreferLessPlayed)
|
||||
{
|
||||
_plannedPuzzles.Sort((a, b) => Measure.TimesPlayed(a).CompareTo(Measure.TimesPlayed(b)));
|
||||
}
|
||||
|
||||
EstimatedTimeRemaining = Measure.EstimateTime(_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)
|
||||
{
|
||||
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
|
||||
room.exit.toIn.DoorState.Lock();
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
using System.Collections.Generic;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules;
|
||||
using EscapeRoomEngine.Engine.Runtime.Environment;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules.Description;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules.State;
|
||||
using EscapeRoomEngine.Engine.Runtime.Utilities;
|
||||
using JetBrains.Annotations;
|
||||
using NaughtyAttributes;
|
||||
@@ -13,25 +15,21 @@ namespace EscapeRoomEngine.Engine.Runtime
|
||||
[CreateAssetMenu(menuName = "Engine Theme")]
|
||||
public class EngineTheme : ScriptableObject
|
||||
{
|
||||
#region Size
|
||||
|
||||
[BoxGroup("Size")] [Tooltip("The minimum size that should be allowed for rooms.")]
|
||||
public Vector2Int minRoomSize;
|
||||
|
||||
[BoxGroup("Size")] [Tooltip("The size of the physical play space available to the engine.")]
|
||||
public Vector2Int playSpace;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Theme
|
||||
|
||||
[BoxGroup("Theme")]
|
||||
public Intro intro;
|
||||
|
||||
[BoxGroup("Theme")]
|
||||
public ModuleDescription endModule;
|
||||
|
||||
[BoxGroup("Theme")] [Required]
|
||||
[Tooltip("The tile that rooms are generated from.")]
|
||||
public SpaceTile spaceTile;
|
||||
|
||||
[BoxGroup("Theme")]
|
||||
[Tooltip("The environment that is placed around every generated room.")]
|
||||
public GameObject environment;
|
||||
[Tooltip("The environments that are placed around generated rooms.")]
|
||||
public List<RoomEnvironment> environments;
|
||||
|
||||
[BoxGroup("Theme")]
|
||||
public DynamicColor puzzleColor, solvedColor, activeColor;
|
||||
@@ -43,6 +41,9 @@ namespace EscapeRoomEngine.Engine.Runtime
|
||||
[BoxGroup("Doors")] [Required]
|
||||
public DoorModuleDescription spawnDoor;
|
||||
|
||||
[BoxGroup("Doors")] [Required]
|
||||
public DoorModuleDescription introExitDoor;
|
||||
|
||||
[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.")]
|
||||
public List<DoorModuleDescription> exitDoorTypes;
|
||||
|
||||
3
Assets/Engine/Runtime/Environment.meta
Normal file
3
Assets/Engine/Runtime/Environment.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f07b7a9e0ae34430999958d61ecc7e2c
|
||||
timeCreated: 1684146335
|
||||
85
Assets/Engine/Runtime/Environment/AmbienceAudio.cs
Normal file
85
Assets/Engine/Runtime/Environment/AmbienceAudio.cs
Normal file
@@ -0,0 +1,85 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using NaughtyAttributes;
|
||||
using UnityEngine;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Environment
|
||||
{
|
||||
[RequireComponent(typeof(AudioSource))]
|
||||
public class AmbienceAudio : MonoBehaviour
|
||||
{
|
||||
public static AmbienceAudio Instance { get; private set; }
|
||||
|
||||
public float fadeDuration = 0.5f;
|
||||
public AmbienceClip initialAmbience;
|
||||
[BoxGroup("Internal")] [SerializeField] private AudioSource[] sources;
|
||||
|
||||
private AudioSource CurrentSource => sources[currentSource];
|
||||
private AudioSource OtherSource => sources[(currentSource + 1) % 2];
|
||||
|
||||
private int currentSource;
|
||||
private readonly Coroutine[] _activeFades = new Coroutine[2]; // the indices in these fades do not necessarily correspond to the sources
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Instance = this;
|
||||
|
||||
if (sources.Length != 2)
|
||||
{
|
||||
throw new Exception("There must be two sources.");
|
||||
}
|
||||
if (CurrentSource == OtherSource)
|
||||
{
|
||||
throw new Exception("Current source must be different from other source.");
|
||||
}
|
||||
|
||||
foreach (var source in sources)
|
||||
{
|
||||
source.loop = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void StartAmbience()
|
||||
{
|
||||
CrossFadeTo(initialAmbience);
|
||||
}
|
||||
|
||||
public void CrossFadeTo(AmbienceClip ambience)
|
||||
{
|
||||
// prepare fade source
|
||||
var fadeSource = OtherSource;
|
||||
fadeSource.clip = ambience.audio;
|
||||
fadeSource.Play();
|
||||
|
||||
// stop any running fades
|
||||
foreach (var fade in _activeFades)
|
||||
{
|
||||
if (fade != null)
|
||||
{
|
||||
StopCoroutine(fade);
|
||||
}
|
||||
}
|
||||
|
||||
// start new fades
|
||||
_activeFades[0] = StartCoroutine(Fade(CurrentSource, CurrentSource.volume, 0));
|
||||
_activeFades[1] = StartCoroutine(Fade(fadeSource, fadeSource.volume, ambience.volume));
|
||||
|
||||
// switch current source
|
||||
currentSource = (currentSource + 1) % 2;
|
||||
}
|
||||
|
||||
private IEnumerator Fade(AudioSource source, float from, float to)
|
||||
{
|
||||
var startTime = Time.time;
|
||||
|
||||
while (Math.Abs(source.volume - to) > 0.0001f)
|
||||
{
|
||||
source.volume = Mathf.Clamp01(Mathf.Lerp(
|
||||
from,
|
||||
to,
|
||||
(Time.time - startTime) / fadeDuration));
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
3
Assets/Engine/Runtime/Environment/AmbienceAudio.cs.meta
Normal file
3
Assets/Engine/Runtime/Environment/AmbienceAudio.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: affaa904605c46dca7162e99fd363b5a
|
||||
timeCreated: 1684143627
|
||||
12
Assets/Engine/Runtime/Environment/AmbienceClip.cs
Normal file
12
Assets/Engine/Runtime/Environment/AmbienceClip.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using NaughtyAttributes;
|
||||
using UnityEngine;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Environment
|
||||
{
|
||||
[CreateAssetMenu(menuName = "Environment/Ambience Clip")]
|
||||
public class AmbienceClip : ScriptableObject
|
||||
{
|
||||
[Required] public AudioClip audio;
|
||||
public float volume = 1;
|
||||
}
|
||||
}
|
||||
3
Assets/Engine/Runtime/Environment/AmbienceClip.cs.meta
Normal file
3
Assets/Engine/Runtime/Environment/AmbienceClip.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3d36d46846cd41019647bae00e4b0f17
|
||||
timeCreated: 1684145618
|
||||
12
Assets/Engine/Runtime/Environment/RoomEnvironment.cs
Normal file
12
Assets/Engine/Runtime/Environment/RoomEnvironment.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using NaughtyAttributes;
|
||||
using UnityEngine;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Environment
|
||||
{
|
||||
[CreateAssetMenu(menuName = "Environment/Room", order = 0)]
|
||||
public class RoomEnvironment : ScriptableObject
|
||||
{
|
||||
[Required] public AmbienceClip ambience;
|
||||
[Required] public GameObject environment;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3b7d4fea984e4fff841ac107b6896270
|
||||
timeCreated: 1684146291
|
||||
25
Assets/Engine/Runtime/Intro.cs
Normal file
25
Assets/Engine/Runtime/Intro.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using EscapeRoomEngine.Engine.Runtime.Environment;
|
||||
using NaughtyAttributes;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Serialization;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime
|
||||
{
|
||||
public class Intro : MonoBehaviour
|
||||
{
|
||||
public RoomEnvironment introEnvironment;
|
||||
[FormerlySerializedAs("_sphereAudio")] [BoxGroup("Internal")] [SerializeField] private AudioSource sphereAudio;
|
||||
|
||||
public void Place(Transform placement)
|
||||
{
|
||||
var t = transform;
|
||||
t.position = placement.position;
|
||||
t.rotation = placement.rotation;
|
||||
}
|
||||
|
||||
public void StartTalking()
|
||||
{
|
||||
sphereAudio.Play();
|
||||
}
|
||||
}
|
||||
}
|
||||
3
Assets/Engine/Runtime/Intro.cs.meta
Normal file
3
Assets/Engine/Runtime/Intro.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c2e3fc71dc4142888bad2313cbf1bea9
|
||||
timeCreated: 1684011098
|
||||
19
Assets/Engine/Runtime/IntroSpace.cs
Normal file
19
Assets/Engine/Runtime/IntroSpace.cs
Normal 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
3
Assets/Engine/Runtime/IntroSpace.cs.meta
Normal file
3
Assets/Engine/Runtime/IntroSpace.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 84603b46fb8d4513945a113de3e6af72
|
||||
timeCreated: 1684066247
|
||||
@@ -1,9 +1,8 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules.Description;
|
||||
using EscapeRoomEngine.Engine.Runtime.UI;
|
||||
using EscapeRoomEngine.Engine.Runtime.Utilities;
|
||||
using UnityEngine;
|
||||
using Logger = EscapeRoomEngine.Engine.Runtime.Utilities.Logger;
|
||||
using LogType = EscapeRoomEngine.Engine.Runtime.Utilities.LogType;
|
||||
|
||||
@@ -18,6 +17,8 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
|
||||
/// Whether to store the taken measurements in the database. Disable for test runs.
|
||||
/// </summary>
|
||||
public static bool Store { get; set; }
|
||||
public static bool PreferLessPlayed => GameControl.Instance.preferLessPlayed.Value;
|
||||
public static int PuzzlesSolved { get; private set; }
|
||||
|
||||
private static Dictionary<int, PuzzleMeasurement> _runningMeasurements;
|
||||
private static Session _currentSession;
|
||||
@@ -26,7 +27,7 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
|
||||
/// The average time to solve a specific puzzle.
|
||||
/// </summary>
|
||||
public static float AverageTime(PuzzleModuleDescription puzzle) =>
|
||||
PuzzleStorage.Instance.Load(puzzle).AverageTimeToSolve;
|
||||
PuzzleStorage.Instance.LoadOrNew(puzzle).AverageTimeToSolve;
|
||||
/// <summary>
|
||||
/// The average time to solve a group of puzzles.
|
||||
/// </summary>
|
||||
@@ -42,7 +43,7 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
|
||||
/// Estimate the time a specific puzzle will take to be solved by the current player.
|
||||
/// </summary>
|
||||
public static float EstimateTime(PuzzleModuleDescription puzzle) =>
|
||||
PuzzleStorage.Instance.Load(puzzle).EstimateTimeToSolve(SessionPercentile());
|
||||
PuzzleStorage.Instance.LoadOrNew(puzzle).EstimateTimeToSolve(SessionPercentile());
|
||||
/// <summary>
|
||||
/// Estimate the time a group of puzzles will take to be solved by the current player.
|
||||
/// </summary>
|
||||
@@ -54,6 +55,12 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
|
||||
public static float EstimateTime(Room room) =>
|
||||
room.puzzles.Sum(puzzle => EstimateTime((PuzzleModuleDescription)puzzle.description));
|
||||
|
||||
/// <summary>
|
||||
/// How often a specific puzzle has been played before.
|
||||
/// </summary>
|
||||
public static int TimesPlayed(PuzzleModuleDescription puzzle) =>
|
||||
PuzzleStorage.Instance.LoadOrNew(puzzle).Measurements.Count;
|
||||
|
||||
/// <summary>
|
||||
/// The estimated percentile the current player is placed in.
|
||||
/// </summary>
|
||||
@@ -66,8 +73,8 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
|
||||
{
|
||||
_runningMeasurements[puzzle.Id] = new PuzzleMeasurement
|
||||
{
|
||||
TimeStarted = Time.time,
|
||||
TimeSolved = Time.time
|
||||
TimeStarted = GameControl.Instance.TimeElapsed,
|
||||
TimeSolved = GameControl.Instance.TimeElapsed
|
||||
};
|
||||
|
||||
Logger.Log($"Started measuring {puzzle}", LogType.Measuring);
|
||||
@@ -83,6 +90,10 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
|
||||
throw new EngineException("Measuring session must be started before taking measurements.");
|
||||
}
|
||||
|
||||
if (!_runningMeasurements.ContainsKey(puzzle.Id))
|
||||
{
|
||||
return;
|
||||
}
|
||||
var measurement = _runningMeasurements[puzzle.Id];
|
||||
|
||||
if (Store)
|
||||
@@ -90,6 +101,7 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
|
||||
PuzzleStorage.Instance.EndMeasurement(_currentSession, puzzle, measurement);
|
||||
}
|
||||
_runningMeasurements.Remove(puzzle.Id);
|
||||
PuzzlesSolved++;
|
||||
|
||||
Logger.Log($"Solved {puzzle} with measurement {measurement}", LogType.Measuring);
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
|
||||
public PlanResult(float targetTime, float sectionPercentile, float timeEstimation)
|
||||
{
|
||||
TargetTime = targetTime;
|
||||
SectionPercentile = sectionPercentile;
|
||||
SectionPercentile = float.IsNaN(sectionPercentile) ? 0.5f : sectionPercentile;
|
||||
TimeEstimation = timeEstimation;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules.Description;
|
||||
using EscapeRoomEngine.Engine.Runtime.Utilities;
|
||||
using JetBrains.Annotations;
|
||||
using Realms;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules.Description;
|
||||
using EscapeRoomEngine.Engine.Runtime.UI;
|
||||
using Realms;
|
||||
using UnityEngine;
|
||||
@@ -88,7 +88,7 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
|
||||
/// Create a new puzzle for a specific description and store it in the database.
|
||||
/// </summary>
|
||||
/// <remarks>This requires that the puzzle does not yet exist in the database.</remarks>
|
||||
private Puzzle New(PuzzleModuleDescription puzzle)
|
||||
public Puzzle New(PuzzleModuleDescription puzzle)
|
||||
{
|
||||
Puzzle created = null;
|
||||
|
||||
@@ -100,7 +100,7 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
|
||||
/// <summary>
|
||||
/// Load a specific puzzle from the database or create it if it wasn't found.
|
||||
/// </summary>
|
||||
private Puzzle LoadOrNew(PuzzleModuleDescription puzzle) => _realm.Find<Puzzle>(puzzle.Id) ?? New(puzzle);
|
||||
public Puzzle LoadOrNew(PuzzleModuleDescription puzzle) => _realm.Find<Puzzle>(puzzle.Id) ?? New(puzzle);
|
||||
|
||||
/// <summary>
|
||||
/// Load a specific puzzle from the database.
|
||||
@@ -129,16 +129,17 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
|
||||
|
||||
_realm.Write(() =>
|
||||
{
|
||||
measurement.TimeSolved = Time.time;
|
||||
measurement.TimeSolved = GameControl.Instance.TimeElapsed;
|
||||
found.Measurements.Add(measurement);
|
||||
|
||||
// add solved puzzle to session
|
||||
session.PuzzlesSolved.Add(found);
|
||||
|
||||
// add plan result to session
|
||||
var percentile = found.Distribution.Cumulative(measurement.Time);
|
||||
session.PlanResults.Add(new PlanResult(
|
||||
GameControl.Instance.TargetTime,
|
||||
found.Distribution.Cumulative(measurement.Time),
|
||||
percentile,
|
||||
GameControl.Instance.EstimatedTime));
|
||||
});
|
||||
}
|
||||
|
||||
3
Assets/Engine/Runtime/Modules/Description.meta
Normal file
3
Assets/Engine/Runtime/Modules/Description.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 748b8c37770b495bb52f2acb59ba5641
|
||||
timeCreated: 1683591555
|
||||
@@ -1,6 +1,6 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Modules
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Modules.Description
|
||||
{
|
||||
/// <summary>
|
||||
/// The <see cref="ModuleDescription"/> for a <see cref="DoorModule"/>. Includes the description of the connected door.
|
||||
@@ -1,9 +1,10 @@
|
||||
using System.Collections.Generic;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules.State;
|
||||
using EscapeRoomEngine.Engine.Runtime.Requirements;
|
||||
using NaughtyAttributes;
|
||||
using UnityEngine;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Modules
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Modules.Description
|
||||
{
|
||||
/// <summary>
|
||||
/// The description of a specific module variant. Includes any requirements, the types and the module state that should be initialised with the module.
|
||||
@@ -1,7 +1,7 @@
|
||||
using NaughtyAttributes;
|
||||
using UnityEngine;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Modules
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Modules.Description
|
||||
{
|
||||
/// <summary>
|
||||
/// The <see cref="ModuleDescription"/> for a <see cref="DoorModule"/>. Includes the description of the connected door.
|
||||
@@ -1,4 +1,6 @@
|
||||
using System;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules.Description;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules.State;
|
||||
using EscapeRoomEngine.Engine.Runtime.Utilities;
|
||||
using UnityEngine;
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules.Description;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules.State;
|
||||
using EscapeRoomEngine.Engine.Runtime.Requirements;
|
||||
using EscapeRoomEngine.Engine.Runtime.Utilities;
|
||||
using UnityEngine;
|
||||
@@ -83,7 +85,7 @@ namespace EscapeRoomEngine.Engine.Runtime.Modules
|
||||
|
||||
srPlacement = placement;
|
||||
|
||||
Logger.Log($"{this} has been placed at {placement.position} (SR)", LogType.ModulePlacement);
|
||||
Logger.Log($"{this} has been placed at {placement.ToStringShort()} (SR)", LogType.ModulePlacement);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -109,7 +111,7 @@ namespace EscapeRoomEngine.Engine.Runtime.Modules
|
||||
Logger.Log($"Instantiating {this}", LogType.ModuleInstantiation);
|
||||
|
||||
State = Object.Instantiate(description.modulePrefab, parent, false);
|
||||
State.transform.localPosition = new Vector3(SrPosition.x + .5f, 0, SrPosition.z + .5f);
|
||||
State.transform.localPosition = new Vector3(SrPosition.x + .5f, SrPosition.y, SrPosition.z + .5f);
|
||||
State.transform.Rotate(Vector3.up, Orientation.Angle());
|
||||
State.name = ToString();
|
||||
State.SetModule(this);
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using EscapeRoomEngine.Engine.Runtime.Utilities;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules.Description;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules.State;
|
||||
using EscapeRoomEngine.Engine.Runtime.Utilities;
|
||||
using UnityEngine;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Modules
|
||||
|
||||
3
Assets/Engine/Runtime/Modules/State.meta
Normal file
3
Assets/Engine/Runtime/Modules/State.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4cc6fbbfd1284b65841ac814a9936b9f
|
||||
timeCreated: 1683591527
|
||||
@@ -1,7 +1,7 @@
|
||||
using EscapeRoomEngine.Engine.Runtime.Utilities;
|
||||
using NaughtyAttributes;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Modules
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Modules.State
|
||||
{
|
||||
public enum DoorEventType
|
||||
{
|
||||
@@ -1,10 +1,11 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Modules
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Modules.State
|
||||
{
|
||||
/// <summary>
|
||||
/// An abstract module state. Example implementations are <see cref="DoorState"/> and <see cref="PuzzleState"/>.
|
||||
/// </summary>
|
||||
[SelectionBase]
|
||||
public abstract class ModuleState : MonoBehaviour
|
||||
{
|
||||
[Tooltip("The size of this module in meters.")]
|
||||
@@ -6,7 +6,7 @@ using UnityEngine;
|
||||
using Logger = EscapeRoomEngine.Engine.Runtime.Utilities.Logger;
|
||||
using LogType = EscapeRoomEngine.Engine.Runtime.Utilities.LogType;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Modules
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Modules.State
|
||||
{
|
||||
public enum PuzzleEventType
|
||||
{
|
||||
@@ -32,9 +32,11 @@ namespace EscapeRoomEngine.Engine.Runtime.Modules
|
||||
/// <summary>
|
||||
/// The <see cref="ModuleState"/> of a <see cref="PuzzleModule"/>. Handles all events that can occur for a door.
|
||||
/// </summary>
|
||||
[SelectionBase]
|
||||
public class PuzzleState : ModuleState
|
||||
{
|
||||
[BoxGroup("Internal")]
|
||||
public AudioSource solvedAudioSource;
|
||||
|
||||
/// <summary>
|
||||
/// Add event handlers to this hook to receive all events concerning this puzzle.
|
||||
/// </summary>
|
||||
@@ -55,6 +57,11 @@ namespace EscapeRoomEngine.Engine.Runtime.Modules
|
||||
: None<PuzzleEventType>.New();
|
||||
_solved = value;
|
||||
type.Match(some: OnPuzzleEvent);
|
||||
|
||||
if (type.Contains(PuzzleEventType.Solved))
|
||||
{
|
||||
solvedAudioSource.Play();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Modules
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Modules.State
|
||||
{
|
||||
/// <summary>
|
||||
/// The spawn door is used in the first room.
|
||||
@@ -1,18 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules;
|
||||
using UnityEngine;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Requirements
|
||||
{
|
||||
/// <summary>
|
||||
/// This requirement places a module exactly in the same position as its first related module.
|
||||
/// </summary>
|
||||
[CreateAssetMenu(menuName = "Requirements/Place With Related Module")]
|
||||
public class PlaceWithRelatedModule : PlacementRequirement
|
||||
{
|
||||
protected override List<Placement> FilterCandidates(List<Placement> candidates, Module module, Space space)
|
||||
{
|
||||
return new List<Placement> { module.relatedModules[0].srPlacement };
|
||||
}
|
||||
}
|
||||
}
|
||||
3
Assets/Engine/Runtime/Requirements/Placement.meta
Normal file
3
Assets/Engine/Runtime/Requirements/Placement.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 730542e39b51427399729e60f1405d5c
|
||||
timeCreated: 1683591635
|
||||
@@ -1,8 +1,9 @@
|
||||
using System.Collections.Generic;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules;
|
||||
using EscapeRoomEngine.Engine.Runtime.Utilities;
|
||||
using UnityEngine;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Requirements
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Requirements.Placement
|
||||
{
|
||||
/// <summary>
|
||||
/// This requirement guarantees that the module faces the center of the space.
|
||||
@@ -10,7 +11,7 @@ namespace EscapeRoomEngine.Engine.Runtime.Requirements
|
||||
[CreateAssetMenu(menuName = "Requirements/Face Space Center")]
|
||||
public class FaceSpaceCenter : PlacementRequirement
|
||||
{
|
||||
protected override List<Placement> FilterCandidates(List<Placement> candidates, Module module, Space space)
|
||||
protected override List<Utilities.Placement> FilterCandidates(List<Utilities.Placement> candidates, Module module, Space space)
|
||||
{
|
||||
float width = space.rrPlacement.size.x;
|
||||
float length = space.rrPlacement.size.y;
|
||||
@@ -1,8 +1,9 @@
|
||||
using System.Collections.Generic;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules;
|
||||
using EscapeRoomEngine.Engine.Runtime.Utilities;
|
||||
using UnityEngine;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Requirements
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Requirements.Placement
|
||||
{
|
||||
/// <summary>
|
||||
/// This requirement forces a specific orientation.
|
||||
@@ -12,7 +13,7 @@ namespace EscapeRoomEngine.Engine.Runtime.Requirements
|
||||
{
|
||||
public Orientation orientation;
|
||||
|
||||
protected override List<Placement> FilterCandidates(List<Placement> candidates, Module module, Space space)
|
||||
protected override List<Utilities.Placement> FilterCandidates(List<Utilities.Placement> candidates, Module module, Space space)
|
||||
{
|
||||
candidates.RemoveAll(candidate => candidate.orientation != orientation);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules;
|
||||
using UnityEngine;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Requirements
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Requirements.Placement
|
||||
{
|
||||
/// <summary>
|
||||
/// This requirement prevents modules from overlapping. For two models not to overlap, both of them need this requirement.
|
||||
@@ -10,7 +10,7 @@ namespace EscapeRoomEngine.Engine.Runtime.Requirements
|
||||
[CreateAssetMenu(menuName = "Requirements/No Overlap")]
|
||||
public class NoOverlap : PlacementRequirement
|
||||
{
|
||||
protected override List<Placement> FilterCandidates(List<Placement> candidates, Module module, Space space)
|
||||
protected override List<Utilities.Placement> FilterCandidates(List<Utilities.Placement> candidates, Module module, Space space)
|
||||
{
|
||||
space.AllModules.ForEach(other => // for all other module ...
|
||||
other.srPlacement.ForEachPosition(otherPosition => // ... positions ...
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user