diff --git a/src/openrct2-dll/openrct2-dll.cpp b/src/openrct2-dll/openrct2-dll.cpp index a73d2f3f51..88982af5da 100644 --- a/src/openrct2-dll/openrct2-dll.cpp +++ b/src/openrct2-dll/openrct2-dll.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #define EXPORT __declspec(dllexport) @@ -91,7 +92,7 @@ extern "C" { CoordsXY coords = CoordsXY(x * COORDS_XY_STEP, y * COORDS_XY_STEP).ToTileStart(); *element = *map_get_first_element_at(coords); - + /* printf("(me) GetMapElementAt( %i, %i ) = ( %i, %i )\n", x, y, coords.x, coords.y); printf("(me) -> %i \t(type)\n", element->type); printf("(me) -> %i \t(flags)\n", element->Flags); @@ -109,6 +110,7 @@ extern "C" printf("(me) -> %i \t(pad 0xA)\n", element->pad_08[5]); printf("(me) -> %i \t(pad 0xB)\n", element->pad_08[6]); printf("(me) -> %i \t(pad 0xC)\n", element->pad_08[7]); + */ } @@ -130,7 +132,28 @@ extern "C" element++; } - printf("(me) GetMapElementsAt( %i, %i ) = %i\n", x, y, elementCount); + // printf("(me) GetMapElementsAt( %i, %i ) = %i\n", x, y, elementCount); return elementCount; } + + + EXPORT int GetSpriteCount(int spriteType) + { + return gSpriteListCount[spriteType]; + } + + + EXPORT int GetAllPeeps(Peep* peeps, int arraySize) + { + Peep* peep; + uint16_t spriteIndex; + int peepCount = 0; + + FOR_ALL_PEEPS (spriteIndex, peep) + { + peeps[peepCount] = *peep; + peepCount++; + } + return peepCount; + } } diff --git a/src/openrct2-unity/Assembly-CSharp.csproj b/src/openrct2-unity/Assembly-CSharp.csproj index f64947de8b..8ee1484d53 100644 --- a/src/openrct2-unity/Assembly-CSharp.csproj +++ b/src/openrct2-unity/Assembly-CSharp.csproj @@ -69,6 +69,10 @@ + + + + @@ -78,6 +82,7 @@ + @@ -85,6 +90,8 @@ + + D:/Projects/Visual Studio/OpenRCT2-Unity/src/openrct2-unity/Library/ScriptAssemblies/Unity.RenderPipeline.Universal.ShaderLibrary.dll diff --git a/src/openrct2-unity/Assets/Materials/TileElements.meta b/src/openrct2-unity/Assets/Materials/TileElements.meta new file mode 100644 index 0000000000..1be6d95d1d --- /dev/null +++ b/src/openrct2-unity/Assets/Materials/TileElements.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a22e6720f6e9a8a41bdc66ce86aa550c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/openrct2-unity/Assets/Materials/TileElements/Path.mat b/src/openrct2-unity/Assets/Materials/TileElements/Path.mat new file mode 100644 index 0000000000..66e310db15 --- /dev/null +++ b/src/openrct2-unity/Assets/Materials/TileElements/Path.mat @@ -0,0 +1,90 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6087739915823202549 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Path + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2050 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _Cull: 2 + - _Cutoff: 0.5 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.8396226, g: 0.8051061, b: 0.2653524, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/src/openrct2-unity/Assets/Materials/TileElements/Path.mat.meta b/src/openrct2-unity/Assets/Materials/TileElements/Path.mat.meta new file mode 100644 index 0000000000..e04399ce10 --- /dev/null +++ b/src/openrct2-unity/Assets/Materials/TileElements/Path.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cbcbb50871c3ee249a86ce301a435197 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/openrct2-unity/Assets/Materials/TileElements/SmallScenery.mat b/src/openrct2-unity/Assets/Materials/TileElements/SmallScenery.mat new file mode 100644 index 0000000000..e67810cb6e --- /dev/null +++ b/src/openrct2-unity/Assets/Materials/TileElements/SmallScenery.mat @@ -0,0 +1,90 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-1709346977567021853 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SmallScenery + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2050 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _Cull: 2 + - _Cutoff: 0.5 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.24213137, g: 0.9433962, b: 0.18244925, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/src/openrct2-unity/Assets/Materials/TileElements/SmallScenery.mat.meta b/src/openrct2-unity/Assets/Materials/TileElements/SmallScenery.mat.meta new file mode 100644 index 0000000000..654c2001f3 --- /dev/null +++ b/src/openrct2-unity/Assets/Materials/TileElements/SmallScenery.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9405b3275a6527e448a1122260745f9d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/openrct2-unity/Assets/Materials/TileElements/Track.mat b/src/openrct2-unity/Assets/Materials/TileElements/Track.mat new file mode 100644 index 0000000000..4eff74736f --- /dev/null +++ b/src/openrct2-unity/Assets/Materials/TileElements/Track.mat @@ -0,0 +1,90 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Track + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2050 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _Cull: 2 + - _Cutoff: 0.5 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.14070843, g: 0.38398197, b: 0.9622642, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} +--- !u!114 &1195764472689965134 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/src/openrct2-unity/Assets/Materials/TileElements/Track.mat.meta b/src/openrct2-unity/Assets/Materials/TileElements/Track.mat.meta new file mode 100644 index 0000000000..96cf0b1beb --- /dev/null +++ b/src/openrct2-unity/Assets/Materials/TileElements/Track.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ce68aa93eb4498b4fa6a2a58f04c2bfb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/openrct2-unity/Assets/Prefabs.meta b/src/openrct2-unity/Assets/Prefabs.meta new file mode 100644 index 0000000000..3f4c8a606b --- /dev/null +++ b/src/openrct2-unity/Assets/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 417a1958fadae06479efa1e3216fefc4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/openrct2-unity/Assets/Prefabs/Path.prefab b/src/openrct2-unity/Assets/Prefabs/Path.prefab new file mode 100644 index 0000000000..44c1dd4d97 --- /dev/null +++ b/src/openrct2-unity/Assets/Prefabs/Path.prefab @@ -0,0 +1,95 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &6681454114598486694 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8590796294908207296} + - component: {fileID: 4704467836609243183} + - component: {fileID: 4633940964326981864} + - component: {fileID: 7788466826857178541} + m_Layer: 0 + m_Name: Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8590796294908207296 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6681454114598486694} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 2, y: 0.1, z: 2} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4704467836609243183 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6681454114598486694} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &4633940964326981864 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6681454114598486694} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: cbcbb50871c3ee249a86ce301a435197, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &7788466826857178541 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6681454114598486694} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} diff --git a/src/openrct2-unity/Assets/Prefabs/Path.prefab.meta b/src/openrct2-unity/Assets/Prefabs/Path.prefab.meta new file mode 100644 index 0000000000..2d6b40e0cb --- /dev/null +++ b/src/openrct2-unity/Assets/Prefabs/Path.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d5e4b199bf0e87b47b14b43c86d8c12f +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/openrct2-unity/Assets/Prefabs/Peep.prefab b/src/openrct2-unity/Assets/Prefabs/Peep.prefab new file mode 100644 index 0000000000..17ac822893 --- /dev/null +++ b/src/openrct2-unity/Assets/Prefabs/Peep.prefab @@ -0,0 +1,206 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2243138470265440622 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2645086933494403710} + - component: {fileID: 2924439791650863674} + - component: {fileID: 649080645740034516} + - component: {fileID: 209739661609702225} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2645086933494403710 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2243138470265440622} + m_LocalRotation: {x: 0, y: 0, z: 0.38268343, w: 0.92387956} + m_LocalPosition: {x: 0, y: 2.4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4953467779861283896} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 45} +--- !u!33 &2924439791650863674 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2243138470265440622} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &649080645740034516 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2243138470265440622} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &209739661609702225 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2243138470265440622} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &3679483723861955363 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7648761038087286746} + - component: {fileID: 1558212993950969197} + - component: {fileID: 1181170805432948223} + m_Layer: 0 + m_Name: Cylinder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7648761038087286746 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3679483723861955363} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4953467779861283896} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1558212993950969197 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3679483723861955363} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &1181170805432948223 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3679483723861955363} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &5040585313333409549 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4953467779861283896} + m_Layer: 0 + m_Name: Peep + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4953467779861283896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5040585313333409549} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: + - {fileID: 7648761038087286746} + - {fileID: 2645086933494403710} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/src/openrct2-unity/Assets/Prefabs/Peep.prefab.meta b/src/openrct2-unity/Assets/Prefabs/Peep.prefab.meta new file mode 100644 index 0000000000..44723088aa --- /dev/null +++ b/src/openrct2-unity/Assets/Prefabs/Peep.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f7506ca24f3b99a49898e9ec122adf29 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/openrct2-unity/Assets/Prefabs/SmallScenery.prefab b/src/openrct2-unity/Assets/Prefabs/SmallScenery.prefab new file mode 100644 index 0000000000..0da56ed85a --- /dev/null +++ b/src/openrct2-unity/Assets/Prefabs/SmallScenery.prefab @@ -0,0 +1,126 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2683137259978889568 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1228939534608163269} + - component: {fileID: 2045211547915089124} + - component: {fileID: 9070556944249528267} + - component: {fileID: 3239359449835856751} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1228939534608163269 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2683137259978889568} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4881190563108725489} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2045211547915089124 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2683137259978889568} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &9070556944249528267 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2683137259978889568} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9405b3275a6527e448a1122260745f9d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &3239359449835856751 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2683137259978889568} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &4881190563108725493 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4881190563108725489} + m_Layer: 0 + m_Name: SmallScenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4881190563108725489 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4881190563108725493} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1228939534608163269} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/src/openrct2-unity/Assets/Prefabs/SmallScenery.prefab.meta b/src/openrct2-unity/Assets/Prefabs/SmallScenery.prefab.meta new file mode 100644 index 0000000000..3e71d0470c --- /dev/null +++ b/src/openrct2-unity/Assets/Prefabs/SmallScenery.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e5123beefdc062f42b5e3fb98e104cef +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/openrct2-unity/Assets/Prefabs/Track.prefab b/src/openrct2-unity/Assets/Prefabs/Track.prefab new file mode 100644 index 0000000000..ef7f468072 --- /dev/null +++ b/src/openrct2-unity/Assets/Prefabs/Track.prefab @@ -0,0 +1,126 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3460111253241373034 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7165131111595459873} + m_Layer: 0 + m_Name: Track + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7165131111595459873 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3460111253241373034} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.5, y: 1.5, z: 1.5} + m_Children: + - {fileID: 3676241976214955814} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6000070329163251540 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3676241976214955814} + - component: {fileID: 8925812817146430215} + - component: {fileID: 5738204678170786053} + - component: {fileID: 3446040187138021836} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3676241976214955814 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6000070329163251540} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 7165131111595459873} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8925812817146430215 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6000070329163251540} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &5738204678170786053 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6000070329163251540} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: ce68aa93eb4498b4fa6a2a58f04c2bfb, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &3446040187138021836 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6000070329163251540} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} diff --git a/src/openrct2-unity/Assets/Prefabs/Track.prefab.meta b/src/openrct2-unity/Assets/Prefabs/Track.prefab.meta new file mode 100644 index 0000000000..0aa753116c --- /dev/null +++ b/src/openrct2-unity/Assets/Prefabs/Track.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ac7c5b20c9776c2458a7c5f077e645f0 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/openrct2-unity/Assets/Scenes/ParkScene.unity b/src/openrct2-unity/Assets/Scenes/ParkScene.unity index b7938e3f19..5f65444e41 100644 --- a/src/openrct2-unity/Assets/Scenes/ParkScene.unity +++ b/src/openrct2-unity/Assets/Scenes/ParkScene.unity @@ -132,6 +132,8 @@ GameObject: - component: {fileID: 440946298} - component: {fileID: 440946297} - component: {fileID: 440946296} + - component: {fileID: 440946300} + - component: {fileID: 440946299} m_Layer: 0 m_Name: Main Camera m_TagString: MainCamera @@ -197,106 +199,63 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 440946295} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalRotation: {x: 0.42261827, y: 0, z: 0, w: 0.9063079} + m_LocalPosition: {x: 0, y: 10, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1208690280 -GameObject: + m_LocalEulerAnglesHint: {x: 50, y: 0, z: 0} +--- !u!114 &440946299 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1208690284} - - component: {fileID: 1208690283} - - component: {fileID: 1208690282} - - component: {fileID: 1208690281} - m_Layer: 0 - m_Name: Cube - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!65 &1208690281 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1208690280} - m_Material: {fileID: 0} - m_IsTrigger: 0 + m_GameObject: {fileID: 440946295} m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &1208690282 -MeshRenderer: + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5f84f21f7ee56a4cbfe7d98918d88ff, type: 3} + m_Name: + m_EditorClassIdentifier: + terrainMap: {fileID: 1491562768} + cameraRotateSpeed: 500 + cameraMoveSpeed: 1000 + cameraZoomSpeed: 5000 + minCameraHeight: 5 + maxCameraHeight: 150 + outsideMapDistance: 250 +--- !u!114 &440946300 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1208690280} + m_GameObject: {fileID: 440946295} m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!33 &1208690283 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1208690280} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1208690284 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1208690280} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 --- !u!1 &1347800241 GameObject: m_ObjectHideFlags: 0 @@ -326,6 +285,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 79be679884da2154dacd80be9669d5dc, type: 3} m_Name: m_EditorClassIdentifier: + park: Forest-Frontiers.sv6 --- !u!4 &1347800243 Transform: m_ObjectHideFlags: 0 @@ -349,9 +309,11 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1491562770} - - component: {fileID: 1491562769} - component: {fileID: 1491562772} - component: {fileID: 1491562771} + - component: {fileID: 1491562774} + - component: {fileID: 1491562769} + - component: {fileID: 1491562773} m_Layer: 0 m_Name: Map m_TagString: Untagged @@ -371,6 +333,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 8f4353bcde699fe4dbc7f9641bcd509e, type: 3} m_Name: m_EditorClassIdentifier: + pathPrefab: {fileID: 6681454114598486694, guid: d5e4b199bf0e87b47b14b43c86d8c12f, + type: 3} + trackPrefab: {fileID: 3460111253241373034, guid: ac7c5b20c9776c2458a7c5f077e645f0, + type: 3} + smallSceneryPrefab: {fileID: 4881190563108725493, guid: e5123beefdc062f42b5e3fb98e104cef, + type: 3} --- !u!4 &1491562770 Transform: m_ObjectHideFlags: 0 @@ -432,6 +400,33 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1491562768} m_Mesh: {fileID: 0} +--- !u!114 &1491562773 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1491562768} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 26c4168fd423cac45b389b005f0daf26, type: 3} + m_Name: + m_EditorClassIdentifier: + peepPrefab: {fileID: 5040585313333409549, guid: f7506ca24f3b99a49898e9ec122adf29, + type: 3} +--- !u!65 &1491562774 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1491562768} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 100000000, y: 1, z: 100000000} + m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1675223600 GameObject: m_ObjectHideFlags: 0 diff --git a/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/PeepSpriteType.cs b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/PeepSpriteType.cs new file mode 100644 index 0000000000..8f92f0c27e --- /dev/null +++ b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/PeepSpriteType.cs @@ -0,0 +1,56 @@ +namespace OpenRCT2.Unity +{ + public enum PeepSpriteType : byte + { + Normal = 0, + Handyman = 1, + Mechanic = 2, + Security = 3, + EntertainerPanda = 4, + EntertainerTiger = 5, + EntertainerElephant = 6, + EntertainerRoman = 7, + EntertainerGorilla = 8, + EntertainerSnowman = 9, + EntertainerKnight = 10, + EntertainerAstronaut = 11, + EntertainerBandit = 12, + EntertainerSheriff = 13, + EntertainerPirate = 14, + IceCream = 15, + Chips = 16, + Burger = 17, + Drink = 18, + Balloon = 19, + Candyfloss = 20, + Umbrella = 21, + Pizza = 22, + SecurityAlternate = 23, + Popcorn = 24, + ArmsCrossed = 25, + HeadDown = 26, + Nauseous = 27, + VeryNauseous = 28, + RequireBathroom = 29, + Hat = 30, + HotDog = 31, + Tentacle = 32, + ToffeeApple = 33, + Doughnut = 34, + Coffee = 35, + Chicken = 36, + Lemonade = 37, + Watching = 38, + Pretzel = 39, + Sunglasses = 40, + SuJongkwa = 41, + Juice = 42, + Funnel_cake = 43, + Noodles = 44, + Sausage = 45, + Soup = 46, + Sandwich = 47, + + Invalid = 255 + }; +} diff --git a/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/PeepSpriteType.cs.meta b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/PeepSpriteType.cs.meta new file mode 100644 index 0000000000..8fb02cb9c7 --- /dev/null +++ b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/PeepSpriteType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8f522ec32c642334f90864557a07f1b5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/PeepState.cs b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/PeepState.cs new file mode 100644 index 0000000000..77481b8ea5 --- /dev/null +++ b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/PeepState.cs @@ -0,0 +1,29 @@ +namespace OpenRCT2.Unity +{ + public enum PeepState : byte + { + Falling = 0, // drowning is part of falling + QueuingFront = 2, + On_ride = 3, + LeavingRide = 4, + Walking = 5, + Queuing = 6, + EnteringRide = 7, + Sitting = 8, + Picked = 9, + Patrolling = 10, + Mowing = 11, + Sweeping = 12, + EnteringPark = 13, + LeavingPark = 14, + Answering = 15, + Fixing = 16, + Buying = 17, + Watching = 18, + EmptyingBin = 19, + UsingBin = 20, + Watering = 21, + HeadingToInspection = 22, + Inspecting = 23 + }; +} diff --git a/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/PeepState.cs.meta b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/PeepState.cs.meta new file mode 100644 index 0000000000..e780abde99 --- /dev/null +++ b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/PeepState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 22e0e46212424c141bca887acc3440c8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/PeepType.cs b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/PeepType.cs new file mode 100644 index 0000000000..0180bca0a7 --- /dev/null +++ b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/PeepType.cs @@ -0,0 +1,10 @@ +namespace OpenRCT2.Unity +{ + public enum PeepType : byte + { + Guest, + Staff, + + Invalid = 255 + }; +} diff --git a/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/PeepType.cs.meta b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/PeepType.cs.meta new file mode 100644 index 0000000000..37ede80556 --- /dev/null +++ b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/PeepType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f18c1fe8b9eea2549baa21274f162c7e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/SpriteType.cs b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/SpriteType.cs new file mode 100644 index 0000000000..11e09ec5a4 --- /dev/null +++ b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/SpriteType.cs @@ -0,0 +1,12 @@ +namespace OpenRCT2.Unity +{ + public enum SpriteType + { + Free, + TrainHead, + Peep, + Miscellaneous, + Litter, + Vehicle, + }; +} diff --git a/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/SpriteType.cs.meta b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/SpriteType.cs.meta new file mode 100644 index 0000000000..c5398e4d8c --- /dev/null +++ b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Enums/SpriteType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: df9dec41793cfab41a5bbb748969cb30 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/openrct2-unity/Assets/Scripts/OpenRCT2/Map/Map.Generation.cs b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Map/Map.Generation.cs index 3b14ff413d..e27a2a9f4e 100644 --- a/src/openrct2-unity/Assets/Scripts/OpenRCT2/Map/Map.Generation.cs +++ b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Map/Map.Generation.cs @@ -5,10 +5,20 @@ namespace OpenRCT2.Unity { public partial class Map { - const float TileToCoordsMultiplier = 2; + [SerializeField] GameObject pathPrefab; + [SerializeField] GameObject trackPrefab; + [SerializeField] GameObject smallSceneryPrefab; + + + const int TileCoordsToCoords = 32; + const float TileCoordsToVector3Multiplier = 2; + const float CoordsToVector3Multiplier = 2 / TileCoordsToCoords; const float HeightMultiplier = 0.5f; + const int TileHeightStep = 2; + + MeshBuilder cachedBuilder; @@ -45,7 +55,30 @@ namespace OpenRCT2.Unity case TileElementType.Surface: GenerateSurface(builder, ref tile, x, y); break; + + case TileElementType.Path: + InstantiateElement(pathPrefab, x, tile.baseHeight, y); + break; + + case TileElementType.Track: + InstantiateElement(trackPrefab, x, tile.baseHeight, y); + break; + + case TileElementType.SmallScenery: + GameObject scenery = InstantiateElement(smallSceneryPrefab, x, tile.baseHeight, y); + + Vector3 scale = scenery.transform.localScale; + scale.y = Mathf.Max((tile.clearanceHeight - tile.baseHeight) * HeightMultiplier, 1); + scenery.transform.localScale = scale; + break; } } + + + GameObject InstantiateElement(GameObject obj, float x, float y, float z) + { + Vector3 position = TileCoordsToVector3(x, y, z); + return Instantiate(obj, position, Quaternion.identity, transform); + } } } diff --git a/src/openrct2-unity/Assets/Scripts/OpenRCT2/Map/Map.Surface.cs b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Map/Map.Surface.cs index 06bcf976c9..761133ce86 100644 --- a/src/openrct2-unity/Assets/Scripts/OpenRCT2/Map/Map.Surface.cs +++ b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Map/Map.Surface.cs @@ -76,9 +76,9 @@ namespace OpenRCT2.Unity int height = GetSurfaceCornerHeight(startHeight, surfaceSlope, surfaceCorner); Vector3 position = new Vector3( - x * TileToCoordsMultiplier, + x * TileCoordsToVector3Multiplier, height * HeightMultiplier, - y * TileToCoordsMultiplier + y * TileCoordsToVector3Multiplier ); return new Vertex(position); diff --git a/src/openrct2-unity/Assets/Scripts/OpenRCT2/Map/Map.cs b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Map/Map.cs index 543b6fa024..02261bb1a3 100644 --- a/src/openrct2-unity/Assets/Scripts/OpenRCT2/Map/Map.cs +++ b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Map/Map.cs @@ -1,12 +1,11 @@ using System; -using MeshBuilding; using UnityEngine; namespace OpenRCT2.Unity { - public partial class Map : MonoBehaviour - { - MeshFilter meshFilter; + public partial class Map : MonoBehaviour + { + MeshFilter meshFilter; int mapSize; @@ -30,7 +29,12 @@ namespace OpenRCT2.Unity void LoadMap() { - mapSize = OpenRCT2.GetMapSize(); + // Remove all children + foreach (Transform child in transform) + Destroy(child.gameObject); + + // Load the map + mapSize = OpenRCT2.GetMapSize(); tiles = new Tile[mapSize, mapSize]; Debug.Log($"Map size: {mapSize}"); @@ -41,12 +45,13 @@ namespace OpenRCT2.Unity { for (int y = 0; y < mapSize; y++) { - int amount = OpenRCT2.GetMapElementsAt(x, y, buffer, buffer.Length); + int amount = OpenRCT2.GetMapElementsAt(x, y, buffer); tiles[x, y] = new Tile(buffer, amount); } } + // Generate the surface mesh Mesh mesh = GenerateSurfaceMesh(); mesh.name = "Map"; meshFilter.sharedMesh = mesh; @@ -82,5 +87,27 @@ namespace OpenRCT2.Unity public SurfaceElement Surface => ((surfaceIndex != -1) ? Elements[surfaceIndex].AsSurface() : default); } - } + + + public static Vector3 TileCoordsToVector3(float x, float y, float z) + { + float halftile = TileCoordsToVector3Multiplier / 2f; + + return new Vector3( + (x * TileCoordsToVector3Multiplier) + halftile, + y * HeightMultiplier, + (z * TileCoordsToVector3Multiplier) + halftile + ); + } + + + public static Vector3 CoordsToVector3(float x, float y, float z) + { + return new Vector3( + (x * CoordsToVector3Multiplier), + y * HeightMultiplier, + (z * CoordsToVector3Multiplier) + ); + } + } } diff --git a/src/openrct2-unity/Assets/Scripts/OpenRCT2/Map/PeepController.cs b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Map/PeepController.cs new file mode 100644 index 0000000000..431c0bc7d0 --- /dev/null +++ b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Map/PeepController.cs @@ -0,0 +1,39 @@ +using System; +using UnityEngine; + +namespace OpenRCT2.Unity +{ + [RequireComponent(typeof(Map))] + public class PeepController : MonoBehaviour + { + [SerializeField] GameObject peepPrefab; + + + Map map; + + + void Start() + { + map = GetComponent(); + + Peep[] peeps = OpenRCT2.GetAllPeeps(); + + for (int i = 0; i < peeps.Length; i++) + { + //SpawnPeep(i, ref peeps[i]); + } + } + + + GameObject SpawnPeep(int number, ref Peep peep) + { + Vector3 position = Map.CoordsToVector3(peep.x, peep.z, peep.y); + + Debug.Log($"Spawn peep: {peep.x}, {peep.y}, {peep.z}"); + + GameObject peepObj = Instantiate(peepPrefab, position, Quaternion.identity, transform); + //peepObj.name = $"Peep {number}"; + return peepObj; + } + } +} diff --git a/src/openrct2-unity/Assets/Scripts/OpenRCT2/Map/PeepController.cs.meta b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Map/PeepController.cs.meta new file mode 100644 index 0000000000..7a325970d3 --- /dev/null +++ b/src/openrct2-unity/Assets/Scripts/OpenRCT2/Map/PeepController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 26c4168fd423cac45b389b005f0daf26 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/openrct2-unity/Assets/Scripts/OpenRCT2/OpenRCT2.Lib.cs b/src/openrct2-unity/Assets/Scripts/OpenRCT2/OpenRCT2.Lib.cs index 12ec2491a6..40137084fd 100644 --- a/src/openrct2-unity/Assets/Scripts/OpenRCT2/OpenRCT2.Lib.cs +++ b/src/openrct2-unity/Assets/Scripts/OpenRCT2/OpenRCT2.Lib.cs @@ -56,7 +56,39 @@ namespace OpenRCT2.Unity [DllImport(PluginFile, CallingConvention = CallingConvention.Cdecl)] - internal static extern int GetMapElementsAt(int x, int y, [In, Out] TileElement[] elements, int arraySize); + static extern int GetMapElementsAt(int x, int y, [In, Out] TileElement[] elements, int arraySize); + + + /// + /// Writes all elements to the given buffer at the specified position. + /// + public static int GetMapElementsAt(int x, int y, TileElement[] elements) + => GetMapElementsAt(x, y, elements, elements.Length); + + #endregion + + + #region Sprites + + [DllImport(PluginFile, CallingConvention = CallingConvention.Cdecl)] + static extern int GetSpriteCount(SpriteType spriteType); + + + [DllImport(PluginFile, CallingConvention = CallingConvention.Cdecl)] + static extern int GetAllPeeps([In, Out] Peep[] elements, int arraySize); + + + public static Peep[] GetAllPeeps() + { + int spriteCount = GetSpriteCount(SpriteType.Peep); + Debug.Log($"Peeps found: {spriteCount}"); + + Peep[] peeps = new Peep[spriteCount]; + + GetAllPeeps(peeps, spriteCount); + return peeps; + } + #endregion diff --git a/src/openrct2-unity/Assets/Scripts/OpenRCT2/OpenRCT2.cs b/src/openrct2-unity/Assets/Scripts/OpenRCT2/OpenRCT2.cs index 3eaeecc05c..377e089fa8 100644 --- a/src/openrct2-unity/Assets/Scripts/OpenRCT2/OpenRCT2.cs +++ b/src/openrct2-unity/Assets/Scripts/OpenRCT2/OpenRCT2.cs @@ -1,11 +1,12 @@ -using System; -using System.Runtime.InteropServices; using UnityEngine; namespace OpenRCT2.Unity { public partial class OpenRCT2 : MonoBehaviour { + [SerializeField] string park = "My test park with burgers.sv6"; + + // OpenRCT2 takes the executing directory by default; which is where the Unity Editor is installed here... const string rootpath = @"D:\Projects\Visual Studio\OpenRCT2-Unity"; const string datapath = rootpath + @"\bin\data"; @@ -17,43 +18,11 @@ namespace OpenRCT2.Unity Print("Start OpenRCT2..."); StartGame(datapath); - LoadPark($@"{parkpath}\My test park with burgers.sv6"); + LoadPark($@"{parkpath}\{park}"); string parkname = GetParkName(); Print($"Name: {parkname} (pointer: {parkname})"); - - //TileElement tile = new TileElement(); - //GetMapElementAt(9, 3, ref tile); - //PrintTileElement(tile); - - - TileElement[] buffer = new TileElement[16]; - /* - int amount = GetMapElementsAt(9, 3, buffer, buffer.Length); - Console.WriteLine($"(me) [ 9, 3 ] items = {amount}"); - - for (int i = 0; i < amount; i++) - { - PrintTileElement(buffer[i]); - } - - for (int x = 8; x <= 10; x++) - { - for (int y = 2; y <= 4; y++) - { - int amount = GetMapElementsAt(x, y, buffer, buffer.Length); - - Print($"[ {x}, {y} ] items = {amount}"); - - for (int i = 0; i < amount; i++) - { - buffer[i].DumpToConsole(); - } - } - } - */ - Print("OpenRCT2 started."); } diff --git a/src/openrct2-unity/Assets/Scripts/Sprites.meta b/src/openrct2-unity/Assets/Scripts/Sprites.meta new file mode 100644 index 0000000000..9588c31d60 --- /dev/null +++ b/src/openrct2-unity/Assets/Scripts/Sprites.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e2a8e1cafcb8310498377e25cf70602b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/openrct2-unity/Assets/Scripts/Sprites/Peep.cs b/src/openrct2-unity/Assets/Scripts/Sprites/Peep.cs new file mode 100644 index 0000000000..ec6904acf6 --- /dev/null +++ b/src/openrct2-unity/Assets/Scripts/Sprites/Peep.cs @@ -0,0 +1,54 @@ +using System; +using System.Runtime.InteropServices; + +namespace OpenRCT2.Unity +{ + [StructLayout(LayoutKind.Sequential)] + public struct Peep + { + public SpriteBase sprite; + public IntPtr namePtr; + public int x; + public int y; + public int z; + public byte nextFlags; + public byte outsideOfPark; + public PeepState state; + public byte substate; + public PeepSpriteType spriteType; + public PeepType type; + public byte staffTypeOrNoOfRides; // union of staff type or no. of rides. + public byte tshirtColour; + public byte trousersColour; + public ushort destinationX; + public ushort destinationY; + public byte destinationTolerance; + public byte var37; + public byte energy; + public byte energyTarget; + public byte happiness; + public byte happinessTarget; + public byte hunger; + public byte thirst; + public byte toilet; + public byte mass; + public byte timeToCconsume; + public byte intensity; // The max intensity is stored in the first 4 bits, and the min intensity in the second 4 bits + public byte nauseaTolerance; + public byte windowInvalidateFlags; + public short paidOnDrink; + public long rideTypesBeenOn1; // This is 16x a byte for a ride; + public long rideTypesBeenOn2; + public uint itemExtraFlags; + public byte photo2RideRef; + public byte photo3RideRef; + public byte photo4RideRef; + public byte currentRide; + public byte stationIndex; + public byte currentTrain; + + + public string Name + => Marshal.PtrToStringAnsi(namePtr); + } +} diff --git a/src/openrct2-unity/Assets/Scripts/Sprites/Peep.cs.meta b/src/openrct2-unity/Assets/Scripts/Sprites/Peep.cs.meta new file mode 100644 index 0000000000..be7ddc6b94 --- /dev/null +++ b/src/openrct2-unity/Assets/Scripts/Sprites/Peep.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4121ea2264101a045bc839a1c61c8fad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/openrct2-unity/Assets/Scripts/Sprites/SpriteBase.cs b/src/openrct2-unity/Assets/Scripts/Sprites/SpriteBase.cs new file mode 100644 index 0000000000..e2973c495f --- /dev/null +++ b/src/openrct2-unity/Assets/Scripts/Sprites/SpriteBase.cs @@ -0,0 +1,30 @@ +using System.Runtime.InteropServices; + +namespace OpenRCT2.Unity +{ + [StructLayout(LayoutKind.Sequential)] + public struct SpriteBase + { + public byte spriteIdentifier; + public byte type; + public ushort nextInQuadrant; + public ushort next; + public ushort previous; + public byte linkedListIndex; // Valid values are SPRITE_LINKEDLIST_OFFSET_... + public byte spriteHeightNegative; // Height from centre of sprite to bottom + public ushort spriteIndex; + public ushort flags; + public short x; + public short y; + public short z; + public byte spriteWidth; // Width from centre of sprite to edge + public byte spriteHeightPositive; // Height from centre of sprite to top + + // Screen Coordinates of sprite + public short sprite_left; + public short sprite_top; + public short sprite_right; + public short sprite_bottom; + public byte sprite_direction; + } +} diff --git a/src/openrct2-unity/Assets/Scripts/Sprites/SpriteBase.cs.meta b/src/openrct2-unity/Assets/Scripts/Sprites/SpriteBase.cs.meta new file mode 100644 index 0000000000..7c26d8b2d9 --- /dev/null +++ b/src/openrct2-unity/Assets/Scripts/Sprites/SpriteBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a1c934bf1aaf15445b2f43583a0b36d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/openrct2-unity/Parks/Dynamite Dunes.sv6 b/src/openrct2-unity/Parks/Dynamite Dunes.sv6 new file mode 100644 index 0000000000..905d566ad5 Binary files /dev/null and b/src/openrct2-unity/Parks/Dynamite Dunes.sv6 differ