├── Content.meta ├── Content ├── Material.meta ├── Material │ ├── DefaultMario.mat │ └── DefaultMario.mat.meta ├── Shader.meta └── Shader │ ├── DefaultMario.shader │ └── DefaultMario.shader.meta ├── Plugins.meta ├── Plugins ├── libsm64.so ├── libsm64.so.meta ├── sm64.dll └── sm64.dll.meta ├── README.md ├── Runtime.meta ├── Runtime ├── Interop.cs ├── Interop.cs.meta ├── SM64Context.cs ├── SM64Context.cs.meta ├── SM64DynamicTerrain.cs ├── SM64DynamicTerrain.cs.meta ├── SM64InputProvider.cs ├── SM64InputProvider.cs.meta ├── SM64Mario.cs ├── SM64Mario.cs.meta ├── SM64StaticTerrain.cs ├── SM64StaticTerrain.cs.meta ├── SM64Types.cs ├── SM64Types.cs.meta ├── Unity.LibSM64.asmdef ├── Unity.LibSM64.asmdef.meta ├── Utils.cs └── Utils.cs.meta ├── Samples.meta ├── Samples ├── SampleScene.meta └── SampleScene │ ├── ExampleCamera.cs │ ├── ExampleCamera.cs.meta │ ├── ExampleInputProvider.cs │ ├── ExampleInputProvider.cs.meta │ ├── ExamplePlatformMover.cs │ ├── ExamplePlatformMover.cs.meta │ ├── ExampleScene.unity │ ├── ExampleScene.unity.meta │ ├── checker.mat │ ├── checker.mat.meta │ ├── checker.png │ ├── checker.png.meta │ ├── pipe.mat │ ├── pipe.mat.meta │ ├── spicy.mat │ └── spicy.mat.meta ├── package.json └── package.json.meta /Content.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 35bd6f5eebfbbe9f18db8fbc3628869d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Content/Material.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e56f71a8deeb5ae2d8a1fb023eff95db 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Content/Material/DefaultMario.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: DefaultMario 11 | m_Shader: {fileID: 4800000, guid: cb7e5bb4a648e844a8c1db2581b6c894, type: 3} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 1, b: 1, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Content/Material/DefaultMario.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 01b49c8823ed89b8eb2df235f599bf12 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Content/Shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c50b3ebdefea34214859f8a6217c21d8 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Content/Shader/DefaultMario.shader: -------------------------------------------------------------------------------- 1 | Shader "LibSM64/Default Mario" 2 | { 3 | Properties 4 | { 5 | _Color ("Color", Color) = (1,1,1,1) 6 | _MainTex ("Albedo (RGB)", 2D) = "white" {} 7 | _Glossiness ("Smoothness", Range(0,1)) = 0.5 8 | _Metallic ("Metallic", Range(0,1)) = 0.0 9 | } 10 | SubShader 11 | { 12 | Tags { "RenderType"="Opaque" } 13 | LOD 200 14 | 15 | CGPROGRAM 16 | 17 | #pragma surface surf Standard fullforwardshadows 18 | #pragma target 3.0 19 | 20 | sampler2D _MainTex; 21 | 22 | struct Input 23 | { 24 | float2 uv_MainTex; 25 | float4 color : COLOR; 26 | }; 27 | 28 | half _Glossiness; 29 | half _Metallic; 30 | fixed4 _Color; 31 | 32 | UNITY_INSTANCING_BUFFER_START(Props) 33 | // put more per-instance properties here 34 | UNITY_INSTANCING_BUFFER_END(Props) 35 | 36 | void surf (Input IN, inout SurfaceOutputStandard o) 37 | { 38 | fixed4 c = tex2D( _MainTex, IN.uv_MainTex ); 39 | o.Albedo = _Color * ( 40 | IN.uv_MainTex.x < .999 && IN.uv_MainTex.y < .999 41 | ? lerp( IN.color.rgb, c.rgb, c.a ) 42 | : IN.color.rgb 43 | ); 44 | 45 | o.Metallic = _Metallic; 46 | o.Smoothness = _Glossiness; 47 | o.Alpha = c.a; 48 | } 49 | 50 | ENDCG 51 | } 52 | FallBack "Diffuse" 53 | } 54 | -------------------------------------------------------------------------------- /Content/Shader/DefaultMario.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cb7e5bb4a648e844a8c1db2581b6c894 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Plugins.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a780247a30c6246d9bcb035265d2fbf0 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Plugins/libsm64.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libsm64/libsm64-unity/21f67378a9834e0cd91616acc253ee49eafbf426/Plugins/libsm64.so -------------------------------------------------------------------------------- /Plugins/libsm64.so.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 305f908b574beed7588199ddd3b4abb2 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 1 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 1 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | userData: 26 | assetBundleName: 27 | assetBundleVariant: 28 | -------------------------------------------------------------------------------- /Plugins/sm64.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libsm64/libsm64-unity/21f67378a9834e0cd91616acc253ee49eafbf426/Plugins/sm64.dll -------------------------------------------------------------------------------- /Plugins/sm64.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 571b28a70e27bc148aa03c916b5668f5 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 1 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | userData: 26 | assetBundleName: 27 | assetBundleVariant: 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # libsm64-unity 2 | 3 | Unity engine demo client of libsm64. This repo provides a Unity package which can be imported from the 4 | package manager. For some example scenes on how to use it, or to just get started hacking around with 5 | it directly, check out the [libsm64-unity-dev](https://github.com/libsm64/libsm64-unity-dev) repo. 6 | -------------------------------------------------------------------------------- /Runtime.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4a20cecd05849a4d0b937e1c2116df83 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Interop.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | using System.Runtime.InteropServices; 4 | 5 | namespace LibSM64 6 | { 7 | internal static class Interop 8 | { 9 | public const float SCALE_FACTOR = 100.0f; 10 | 11 | public const int SM64_TEXTURE_WIDTH = 64 * 11; 12 | public const int SM64_TEXTURE_HEIGHT = 64; 13 | public const int SM64_GEO_MAX_TRIANGLES = 1024; 14 | 15 | public const int SM64_MAX_HEALTH = 8; 16 | 17 | [StructLayout(LayoutKind.Sequential)] 18 | public struct SM64Surface 19 | { 20 | public short type; 21 | public short force; 22 | public ushort terrain; 23 | public short v0x, v0y, v0z; 24 | public short v1x, v1y, v1z; 25 | public short v2x, v2y, v2z; 26 | }; 27 | 28 | [StructLayout(LayoutKind.Sequential)] 29 | public struct SM64MarioInputs 30 | { 31 | public float camLookX, camLookZ; 32 | public float stickX, stickY; 33 | public byte buttonA, buttonB, buttonZ; 34 | }; 35 | 36 | [StructLayout(LayoutKind.Sequential)] 37 | public struct SM64MarioState 38 | { 39 | [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3)] 40 | public float[] position; 41 | [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3)] 42 | public float[] velocity; 43 | public float faceAngle; 44 | public short health; 45 | 46 | public Vector3 unityPosition { 47 | get { return position != null ? new Vector3( -position[0], position[1], position[2] ) / SCALE_FACTOR : Vector3.zero; } 48 | } 49 | }; 50 | 51 | [StructLayout(LayoutKind.Sequential)] 52 | struct SM64MarioGeometryBuffers 53 | { 54 | public IntPtr position; 55 | public IntPtr normal; 56 | public IntPtr color; 57 | public IntPtr uv; 58 | public ushort numTrianglesUsed; 59 | }; 60 | 61 | [StructLayout(LayoutKind.Sequential)] 62 | struct SM64ObjectTransform 63 | { 64 | [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3)] 65 | float[] position; 66 | [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3)] 67 | float[] eulerRotation; 68 | 69 | static public SM64ObjectTransform FromUnityWorld( Vector3 position, Quaternion rotation ) 70 | { 71 | float[] vecToArr( Vector3 v ) 72 | { 73 | return new float[] { v.x, v.y, v.z }; 74 | } 75 | 76 | float fmod( float a, float b ) 77 | { 78 | return a - b * Mathf.Floor( a / b ); 79 | } 80 | 81 | float fixAngle( float a ) 82 | { 83 | return fmod( a + 180.0f, 360.0f ) - 180.0f; 84 | } 85 | 86 | var pos = SCALE_FACTOR * Vector3.Scale( position, new Vector3( -1, 1, 1 )); 87 | var rot = Vector3.Scale( rotation.eulerAngles, new Vector3( -1, 1, 1 )); 88 | 89 | rot.x = fixAngle( rot.x ); 90 | rot.y = fixAngle( rot.y ); 91 | rot.z = fixAngle( rot.z ); 92 | 93 | return new SM64ObjectTransform { 94 | position = vecToArr( pos ), 95 | eulerRotation = vecToArr( rot ) 96 | }; 97 | } 98 | }; 99 | 100 | [StructLayout(LayoutKind.Sequential)] 101 | struct SM64SurfaceObject 102 | { 103 | public SM64ObjectTransform transform; 104 | public uint surfaceCount; 105 | public IntPtr surfaces; 106 | } 107 | 108 | [DllImport("sm64")] 109 | static extern void sm64_global_init( IntPtr rom, IntPtr outTexture, IntPtr debugPrintFunctionPtr ); 110 | [DllImport("sm64")] 111 | static extern void sm64_global_terminate(); 112 | 113 | [DllImport("sm64")] 114 | static extern void sm64_static_surfaces_load( SM64Surface[] surfaces, ulong numSurfaces ); 115 | 116 | [DllImport("sm64")] 117 | static extern uint sm64_mario_create( short marioX, short marioY, short marioZ ); 118 | [DllImport("sm64")] 119 | static extern void sm64_mario_tick( uint marioId, ref SM64MarioInputs inputs, ref SM64MarioState outState, ref SM64MarioGeometryBuffers outBuffers ); 120 | [DllImport("sm64")] 121 | static extern void sm64_mario_delete( uint marioId ); 122 | 123 | [DllImport("sm64")] 124 | static extern uint sm64_surface_object_create( ref SM64SurfaceObject surfaceObject ); 125 | [DllImport("sm64")] 126 | static extern void sm64_surface_object_move( uint objectId, ref SM64ObjectTransform transform ); 127 | [DllImport("sm64")] 128 | static extern void sm64_surface_object_delete( uint objectId ); 129 | 130 | [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 131 | delegate void DebugPrintFuncDelegate(string str); 132 | 133 | static public Texture2D marioTexture { get; private set; } 134 | static public bool isGlobalInit { get; private set; } 135 | 136 | static void debugPrintCallback(string str) 137 | { 138 | Debug.Log("libsm64: " + str); 139 | } 140 | 141 | public static void GlobalInit( byte[] rom ) 142 | { 143 | var callbackDelegate = new DebugPrintFuncDelegate( debugPrintCallback ); 144 | var romHandle = GCHandle.Alloc( rom, GCHandleType.Pinned ); 145 | var textureData = new byte[ 4 * SM64_TEXTURE_WIDTH * SM64_TEXTURE_HEIGHT ]; 146 | var textureDataHandle = GCHandle.Alloc( textureData, GCHandleType.Pinned ); 147 | 148 | sm64_global_init( romHandle.AddrOfPinnedObject(), textureDataHandle.AddrOfPinnedObject(), Marshal.GetFunctionPointerForDelegate( callbackDelegate )); 149 | 150 | Color32[] cols = new Color32[ SM64_TEXTURE_WIDTH * SM64_TEXTURE_HEIGHT ]; 151 | marioTexture = new Texture2D( SM64_TEXTURE_WIDTH, SM64_TEXTURE_HEIGHT ); 152 | for( int ix = 0; ix < SM64_TEXTURE_WIDTH; ix++) 153 | for( int iy = 0; iy < SM64_TEXTURE_HEIGHT; iy++) 154 | { 155 | cols[ix + SM64_TEXTURE_WIDTH*iy] = new Color32( 156 | textureData[4*(ix + SM64_TEXTURE_WIDTH*iy)+0], 157 | textureData[4*(ix + SM64_TEXTURE_WIDTH*iy)+1], 158 | textureData[4*(ix + SM64_TEXTURE_WIDTH*iy)+2], 159 | textureData[4*(ix + SM64_TEXTURE_WIDTH*iy)+3] 160 | ); 161 | } 162 | marioTexture.SetPixels32( cols ); 163 | marioTexture.Apply(); 164 | 165 | romHandle.Free(); 166 | textureDataHandle.Free(); 167 | 168 | isGlobalInit = true; 169 | } 170 | 171 | public static void GlobalTerminate() 172 | { 173 | sm64_global_terminate(); 174 | marioTexture = null; 175 | isGlobalInit = false; 176 | } 177 | 178 | public static void StaticSurfacesLoad( SM64Surface[] surfaces ) 179 | { 180 | sm64_static_surfaces_load( surfaces, (ulong)surfaces.Length ); 181 | } 182 | 183 | public static uint MarioCreate( Vector3 marioPos ) 184 | { 185 | return sm64_mario_create( (short)marioPos.x, (short)marioPos.y, (short)marioPos.z ); 186 | } 187 | 188 | public static SM64MarioState MarioTick( uint marioId, SM64MarioInputs inputs, Vector3[] positionBuffer, Vector3[] normalBuffer, Vector3[] colorBuffer, Vector2[] uvBuffer ) 189 | { 190 | SM64MarioState outState = new SM64MarioState(); 191 | 192 | var posHandle = GCHandle.Alloc( positionBuffer, GCHandleType.Pinned ); 193 | var normHandle = GCHandle.Alloc( normalBuffer, GCHandleType.Pinned ); 194 | var colorHandle = GCHandle.Alloc( colorBuffer, GCHandleType.Pinned ); 195 | var uvHandle = GCHandle.Alloc( uvBuffer, GCHandleType.Pinned ); 196 | 197 | SM64MarioGeometryBuffers buff = new SM64MarioGeometryBuffers 198 | { 199 | position = posHandle.AddrOfPinnedObject(), 200 | normal = normHandle.AddrOfPinnedObject(), 201 | color = colorHandle.AddrOfPinnedObject(), 202 | uv = uvHandle.AddrOfPinnedObject() 203 | }; 204 | 205 | sm64_mario_tick( marioId, ref inputs, ref outState, ref buff ); 206 | 207 | posHandle.Free(); 208 | normHandle.Free(); 209 | colorHandle.Free(); 210 | uvHandle.Free(); 211 | 212 | return outState; 213 | } 214 | 215 | public static void MarioDelete( uint marioId ) 216 | { 217 | sm64_mario_delete( marioId ); 218 | } 219 | 220 | public static uint SurfaceObjectCreate( Vector3 position, Quaternion rotation, SM64Surface[] surfaces ) 221 | { 222 | var surfListHandle = GCHandle.Alloc( surfaces, GCHandleType.Pinned ); 223 | var t = SM64ObjectTransform.FromUnityWorld( position, rotation ); 224 | 225 | SM64SurfaceObject surfObj = new SM64SurfaceObject 226 | { 227 | transform = t, 228 | surfaceCount = (uint)surfaces.Length, 229 | surfaces = surfListHandle.AddrOfPinnedObject() 230 | }; 231 | 232 | uint result = sm64_surface_object_create( ref surfObj ); 233 | 234 | surfListHandle.Free(); 235 | 236 | return result; 237 | } 238 | 239 | public static void SurfaceObjectMove( uint id, Vector3 position, Quaternion rotation ) 240 | { 241 | var t = SM64ObjectTransform.FromUnityWorld( position, rotation ); 242 | sm64_surface_object_move( id, ref t ); 243 | } 244 | 245 | public static void SurfaceObjectDelete( uint id ) 246 | { 247 | sm64_surface_object_delete( id ); 248 | } 249 | } 250 | } 251 | -------------------------------------------------------------------------------- /Runtime/Interop.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 097f3871ed3bd6adcb820027e3618be6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/SM64Context.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.IO; 3 | using UnityEngine; 4 | 5 | namespace LibSM64 6 | { 7 | public class SM64Context : MonoBehaviour 8 | { 9 | static SM64Context s_instance = null; 10 | 11 | List _marios = new List(); 12 | List _surfaceObjects = new List(); 13 | 14 | void Awake() 15 | { 16 | Interop.GlobalInit( File.ReadAllBytes( Application.dataPath + "/../baserom.us.z64" )); 17 | RefreshStaticTerrain(); 18 | } 19 | 20 | void Update() 21 | { 22 | foreach( var o in _surfaceObjects ) 23 | o.contextUpdate(); 24 | 25 | foreach( var o in _marios ) 26 | o.contextUpdate(); 27 | } 28 | 29 | void FixedUpdate() 30 | { 31 | foreach( var o in _surfaceObjects ) 32 | o.contextFixedUpdate(); 33 | 34 | foreach( var o in _marios ) 35 | o.contextFixedUpdate(); 36 | } 37 | 38 | void OnApplicationQuit() 39 | { 40 | Interop.GlobalTerminate(); 41 | s_instance = null; 42 | } 43 | 44 | static void ensureInstanceExists() 45 | { 46 | if( s_instance == null ) 47 | { 48 | var contextGo = new GameObject( "SM64_CONTEXT" ); 49 | contextGo.hideFlags |= HideFlags.HideInHierarchy; 50 | s_instance = contextGo.AddComponent(); 51 | } 52 | } 53 | 54 | static public void RefreshStaticTerrain() 55 | { 56 | Interop.StaticSurfacesLoad( Utils.GetAllStaticSurfaces()); 57 | } 58 | 59 | static public void RegisterMario( SM64Mario mario ) 60 | { 61 | ensureInstanceExists(); 62 | 63 | if( !s_instance._marios.Contains( mario )) 64 | s_instance._marios.Add( mario ); 65 | } 66 | 67 | static public void UnregisterMario( SM64Mario mario ) 68 | { 69 | if( s_instance != null && s_instance._marios.Contains( mario )) 70 | s_instance._marios.Remove( mario ); 71 | } 72 | 73 | static public void RegisterSurfaceObject( SM64DynamicTerrain surfaceObject ) 74 | { 75 | ensureInstanceExists(); 76 | 77 | if( !s_instance._surfaceObjects.Contains( surfaceObject )) 78 | s_instance._surfaceObjects.Add( surfaceObject ); 79 | } 80 | 81 | static public void UnregisterSurfaceObject( SM64DynamicTerrain surfaceObject ) 82 | { 83 | if( s_instance != null && s_instance._surfaceObjects.Contains( surfaceObject )) 84 | s_instance._surfaceObjects.Remove( surfaceObject ); 85 | } 86 | } 87 | } -------------------------------------------------------------------------------- /Runtime/SM64Context.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e5bc95e729e9d017d9e23a309e11e72b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/SM64DynamicTerrain.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Linq; 3 | 4 | namespace LibSM64 5 | { 6 | public class SM64DynamicTerrain : MonoBehaviour 7 | { 8 | [SerializeField] SM64TerrainType terrainType = SM64TerrainType.Grass; 9 | [SerializeField] SM64SurfaceType surfaceType = SM64SurfaceType.Default; 10 | 11 | public SM64TerrainType TerrainType { get { return terrainType; }} 12 | public SM64SurfaceType SurfaceType { get { return surfaceType; }} 13 | 14 | Vector3 _position; 15 | Vector3 _lastPosition; 16 | Vector3 _nextPosition; 17 | Quaternion _rotation; 18 | Quaternion _lastRotation; 19 | Quaternion _nextRotation; 20 | uint _surfaceObjectId; 21 | 22 | public Vector3 position { get { return _position; }} 23 | public Vector3 lastPosition { get { return _lastPosition; }} 24 | public Quaternion rotation { get { return _rotation; }} 25 | public Quaternion lastRotation { get { return _lastRotation; }} 26 | 27 | void OnEnable() 28 | { 29 | SM64Context.RegisterSurfaceObject( this ); 30 | 31 | _position = transform.position; 32 | _rotation = transform.rotation; 33 | _lastPosition = _position; 34 | _lastRotation = _rotation; 35 | _nextPosition = _position; 36 | _nextRotation = _rotation; 37 | 38 | var mc = GetComponent(); 39 | var surfaces = Utils.GetSurfacesForMesh( transform.lossyScale, mc.sharedMesh, surfaceType, terrainType ); 40 | _surfaceObjectId = Interop.SurfaceObjectCreate( _position, _rotation, surfaces.ToArray() ); 41 | } 42 | 43 | void OnDisable() 44 | { 45 | if( Interop.isGlobalInit ) 46 | { 47 | SM64Context.UnregisterSurfaceObject( this ); 48 | Interop.SurfaceObjectDelete( _surfaceObjectId ); 49 | } 50 | } 51 | 52 | internal void contextFixedUpdate() 53 | { 54 | _lastPosition = _position; 55 | _lastRotation = _rotation; 56 | 57 | if( _position != _nextPosition || _rotation != _nextRotation ) 58 | { 59 | _position = _nextPosition; 60 | _rotation = _nextRotation; 61 | Interop.SurfaceObjectMove( _surfaceObjectId, _position, _rotation ); 62 | } 63 | } 64 | 65 | internal void contextUpdate() 66 | { 67 | float t = (Time.time - Time.fixedTime) / Time.fixedDeltaTime; 68 | 69 | transform.position = Vector3.LerpUnclamped( _lastPosition, _position, t ); 70 | transform.rotation = Quaternion.SlerpUnclamped( _lastRotation, _rotation, t ); 71 | } 72 | 73 | public void SetPosition( Vector3 position ) 74 | { 75 | _nextPosition = position; 76 | } 77 | 78 | public void SetRotation( Quaternion rotation ) 79 | { 80 | _nextRotation = rotation; 81 | } 82 | } 83 | } -------------------------------------------------------------------------------- /Runtime/SM64DynamicTerrain.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c20b350fc053bebea8a1d907d10860f8 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/SM64InputProvider.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace LibSM64 4 | { 5 | public abstract class SM64InputProvider : MonoBehaviour 6 | { 7 | public enum Button 8 | { 9 | Jump, 10 | Kick, 11 | Stomp 12 | }; 13 | 14 | public abstract Vector3 GetCameraLookDirection(); 15 | public abstract Vector2 GetJoystickAxes(); 16 | public abstract bool GetButtonHeld( Button button ); 17 | } 18 | } -------------------------------------------------------------------------------- /Runtime/SM64InputProvider.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f6d76531525ea4a27a0e86e52bb90bc4 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/SM64Mario.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using UnityEngine; 3 | 4 | namespace LibSM64 5 | { 6 | public class SM64Mario : MonoBehaviour 7 | { 8 | [SerializeField] Material material = null; 9 | 10 | SM64InputProvider inputProvider; 11 | 12 | Vector3[][] positionBuffers; 13 | Vector3[][] normalBuffers; 14 | Vector3[] lerpPositionBuffer; 15 | Vector3[] lerpNormalBuffer; 16 | Vector3[] colorBuffer; 17 | Color[] colorBufferColors; 18 | Vector2[] uvBuffer; 19 | int buffIndex; 20 | Interop.SM64MarioState[] states; 21 | 22 | GameObject marioRendererObject; 23 | Mesh marioMesh; 24 | uint marioId; 25 | 26 | void OnEnable() 27 | { 28 | SM64Context.RegisterMario( this ); 29 | 30 | var initPos = transform.position; 31 | marioId = Interop.MarioCreate( new Vector3( -initPos.x, initPos.y, initPos.z ) * Interop.SCALE_FACTOR ); 32 | 33 | inputProvider = GetComponent(); 34 | if( inputProvider == null ) 35 | throw new System.Exception("Need to add an input provider component to Mario"); 36 | 37 | marioRendererObject = new GameObject("MARIO"); 38 | marioRendererObject.hideFlags |= HideFlags.HideInHierarchy; 39 | 40 | var renderer = marioRendererObject.AddComponent(); 41 | var meshFilter = marioRendererObject.AddComponent(); 42 | 43 | states = new Interop.SM64MarioState[2] { 44 | new Interop.SM64MarioState(), 45 | new Interop.SM64MarioState() 46 | }; 47 | 48 | renderer.material = material; 49 | renderer.sharedMaterial.SetTexture("_MainTex", Interop.marioTexture); 50 | 51 | marioRendererObject.transform.localScale = new Vector3( -1, 1, 1 ) / Interop.SCALE_FACTOR; 52 | marioRendererObject.transform.localPosition = Vector3.zero; 53 | 54 | lerpPositionBuffer = new Vector3[3 * Interop.SM64_GEO_MAX_TRIANGLES]; 55 | lerpNormalBuffer = new Vector3[3 * Interop.SM64_GEO_MAX_TRIANGLES]; 56 | positionBuffers = new Vector3[][] { new Vector3[3 * Interop.SM64_GEO_MAX_TRIANGLES], new Vector3[3 * Interop.SM64_GEO_MAX_TRIANGLES] }; 57 | normalBuffers = new Vector3[][] { new Vector3[3 * Interop.SM64_GEO_MAX_TRIANGLES], new Vector3[3 * Interop.SM64_GEO_MAX_TRIANGLES] }; 58 | colorBuffer = new Vector3[3 * Interop.SM64_GEO_MAX_TRIANGLES]; 59 | colorBufferColors = new Color[3 * Interop.SM64_GEO_MAX_TRIANGLES]; 60 | uvBuffer = new Vector2[3 * Interop.SM64_GEO_MAX_TRIANGLES]; 61 | 62 | marioMesh = new Mesh(); 63 | marioMesh.vertices = lerpPositionBuffer; 64 | marioMesh.triangles = Enumerable.Range(0, 3*Interop.SM64_GEO_MAX_TRIANGLES).ToArray(); 65 | meshFilter.sharedMesh = marioMesh; 66 | } 67 | 68 | void OnDisable() 69 | { 70 | if( marioRendererObject != null ) 71 | { 72 | Destroy( marioRendererObject ); 73 | marioRendererObject = null; 74 | } 75 | 76 | if( Interop.isGlobalInit ) 77 | { 78 | SM64Context.UnregisterMario( this ); 79 | Interop.MarioDelete( marioId ); 80 | } 81 | } 82 | 83 | public void contextFixedUpdate() 84 | { 85 | var inputs = new Interop.SM64MarioInputs(); 86 | var look = inputProvider.GetCameraLookDirection(); 87 | look.y = 0; 88 | look = look.normalized; 89 | 90 | var joystick = inputProvider.GetJoystickAxes(); 91 | 92 | inputs.camLookX = -look.x; 93 | inputs.camLookZ = look.z; 94 | inputs.stickX = joystick.x; 95 | inputs.stickY = -joystick.y; 96 | inputs.buttonA = inputProvider.GetButtonHeld( SM64InputProvider.Button.Jump ) ? (byte)1 : (byte)0; 97 | inputs.buttonB = inputProvider.GetButtonHeld( SM64InputProvider.Button.Kick ) ? (byte)1 : (byte)0; 98 | inputs.buttonZ = inputProvider.GetButtonHeld( SM64InputProvider.Button.Stomp ) ? (byte)1 : (byte)0; 99 | 100 | states[buffIndex] = Interop.MarioTick( marioId, inputs, positionBuffers[buffIndex], normalBuffers[buffIndex], colorBuffer, uvBuffer ); 101 | 102 | for( int i = 0; i < colorBuffer.Length; ++i ) 103 | colorBufferColors[i] = new Color( colorBuffer[i].x, colorBuffer[i].y, colorBuffer[i].z, 1 ); 104 | 105 | marioMesh.colors = colorBufferColors; 106 | marioMesh.uv = uvBuffer; 107 | 108 | buffIndex = 1 - buffIndex; 109 | } 110 | 111 | public void contextUpdate() 112 | { 113 | float t = (Time.time - Time.fixedTime) / Time.fixedDeltaTime; 114 | int j = 1 - buffIndex; 115 | 116 | for( int i = 0; i < lerpPositionBuffer.Length; ++i ) 117 | { 118 | lerpPositionBuffer[i] = Vector3.LerpUnclamped( positionBuffers[buffIndex][i], positionBuffers[j][i], t ); 119 | lerpNormalBuffer[i] = Vector3.LerpUnclamped( normalBuffers[buffIndex][i], normalBuffers[j][i], t ); 120 | } 121 | 122 | transform.position = Vector3.LerpUnclamped( states[buffIndex].unityPosition, states[j].unityPosition, t ); 123 | 124 | marioMesh.vertices = lerpPositionBuffer; 125 | marioMesh.normals = lerpNormalBuffer; 126 | 127 | marioMesh.RecalculateBounds(); 128 | marioMesh.RecalculateTangents(); 129 | } 130 | 131 | void OnDrawGizmos() 132 | { 133 | if( !Application.isPlaying ) 134 | { 135 | Gizmos.color = Color.red; 136 | Gizmos.DrawSphere( transform.position, 0.5f ); 137 | } 138 | } 139 | } 140 | } -------------------------------------------------------------------------------- /Runtime/SM64Mario.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d31bc207218a3e604aff01c14f053e5e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/SM64StaticTerrain.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace LibSM64 4 | { 5 | public class SM64StaticTerrain : MonoBehaviour 6 | { 7 | [SerializeField] SM64TerrainType terrainType = SM64TerrainType.Grass; 8 | [SerializeField] SM64SurfaceType surfaceType = SM64SurfaceType.Default; 9 | 10 | public SM64TerrainType TerrainType { get { return terrainType; }} 11 | public SM64SurfaceType SurfaceType { get { return surfaceType; }} 12 | } 13 | } -------------------------------------------------------------------------------- /Runtime/SM64StaticTerrain.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1d07c4c311d4ebf7c8a3ca1785abbcb6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/SM64Types.cs: -------------------------------------------------------------------------------- 1 | namespace LibSM64 2 | { 3 | public enum SM64TerrainType 4 | { 5 | Grass = 0x0000, 6 | Stone = 0x0001, 7 | Snow = 0x0002, 8 | Sand = 0x0003, 9 | Spooky = 0x0004, 10 | Water = 0x0005, 11 | Slide = 0x0006, 12 | } 13 | 14 | public enum SM64SurfaceType 15 | { 16 | Default = 0x0000,// Environment default 17 | Burning = 0x0001,// Lava / Frostbite (in SL), but is used mostly for Lava 18 | Hangable = 0x0005,// Ceiling that Mario can climb on 19 | Slow = 0x0009,// Slow down Mario, unused 20 | VerySlippery = 0x0013,// Very slippery, mostly used for slides 21 | Slippery = 0x0014,// Slippery 22 | NotSlippery = 0x0015,// Non-slippery, climbable 23 | ShallowQuicksand = 0x0021,// Shallow Quicksand (depth of 10 units) 24 | DeepQuicksand = 0x0022,// Quicksand (lethal, slow, depth of 160 units) 25 | InstantQuicksand = 0x0023,// Quicksand (lethal, instant) 26 | Ice = 0x002E,// Slippery Ice, in snow levels and THI's water floor 27 | Hard = 0x0030,// Hard floor (Always has fall damage) 28 | HardSlippery = 0x0035,// Hard and slippery (Always has fall damage) 29 | HardVerySlippery = 0x0036,// Hard and very slippery (Always has fall damage) 30 | HardNotSlippery = 0x0037,// Hard and Non-slippery (Always has fall damage) 31 | VerticalWind = 0x0038,// Death at bottom with vertical wind 32 | } 33 | } -------------------------------------------------------------------------------- /Runtime/SM64Types.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 28cea88bae48eafe5b65394c28dbdb14 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Unity.LibSM64.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Unity.LibSM64", 3 | "references": [], 4 | "optionalUnityReferences": [], 5 | "includePlatforms": [], 6 | "excludePlatforms": [], 7 | "allowUnsafeCode": false, 8 | "overrideReferences": false, 9 | "precompiledReferences": [], 10 | "autoReferenced": true, 11 | "defineConstraints": [], 12 | "versionDefines": [] 13 | } -------------------------------------------------------------------------------- /Runtime/Unity.LibSM64.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ed75f2d559d3bb9408fa0ad67387de91 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Runtime/Utils.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using UnityEngine; 5 | 6 | namespace LibSM64 7 | { 8 | static internal class Utils 9 | { 10 | static void transformAndGetSurfaces( List outSurfaces, Mesh mesh, SM64SurfaceType surfaceType, SM64TerrainType terrainType, Func transformFunc ) 11 | { 12 | var tris = mesh.GetTriangles(0); 13 | var vertices = mesh.vertices.Select(transformFunc).ToArray(); 14 | 15 | for( int i = 0; i < tris.Length; i += 3 ) 16 | { 17 | outSurfaces.Add(new Interop.SM64Surface { 18 | force = 0, 19 | type = (short)surfaceType, 20 | terrain = (ushort)terrainType, 21 | v0x = (short)(Interop.SCALE_FACTOR * -vertices[tris[i ]].x), 22 | v0y = (short)(Interop.SCALE_FACTOR * vertices[tris[i ]].y), 23 | v0z = (short)(Interop.SCALE_FACTOR * vertices[tris[i ]].z), 24 | v1x = (short)(Interop.SCALE_FACTOR * -vertices[tris[i+2]].x), 25 | v1y = (short)(Interop.SCALE_FACTOR * vertices[tris[i+2]].y), 26 | v1z = (short)(Interop.SCALE_FACTOR * vertices[tris[i+2]].z), 27 | v2x = (short)(Interop.SCALE_FACTOR * -vertices[tris[i+1]].x), 28 | v2y = (short)(Interop.SCALE_FACTOR * vertices[tris[i+1]].y), 29 | v2z = (short)(Interop.SCALE_FACTOR * vertices[tris[i+1]].z) 30 | }); 31 | } 32 | } 33 | 34 | static public Interop.SM64Surface[] GetSurfacesForMesh( Vector3 scale, Mesh mesh, SM64SurfaceType surfaceType, SM64TerrainType terrainType ) 35 | { 36 | var surfaces = new List(); 37 | transformAndGetSurfaces( surfaces, mesh, surfaceType, terrainType, x => Vector3.Scale( scale, x )); 38 | return surfaces.ToArray(); 39 | } 40 | 41 | static public Interop.SM64Surface[] GetAllStaticSurfaces() 42 | { 43 | var surfaces = new List(); 44 | 45 | foreach( var obj in GameObject.FindObjectsOfType()) 46 | { 47 | var mc = obj.GetComponent(); 48 | transformAndGetSurfaces( surfaces, mc.sharedMesh, obj.SurfaceType, obj.TerrainType, x => mc.transform.TransformPoint( x )); 49 | } 50 | 51 | return surfaces.ToArray(); 52 | } 53 | } 54 | } -------------------------------------------------------------------------------- /Runtime/Utils.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 74991035c172eb01991b40bdb19c9196 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Samples.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aefc895fc20c6fed6a9283b17009f08d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/SampleScene.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 373fbdbe489b4438395cbe951c9e0cdf 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/SampleScene/ExampleCamera.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | using LibSM64; 4 | 5 | public class ExampleCamera : MonoBehaviour 6 | { 7 | [SerializeField] GameObject target = null; 8 | [SerializeField] float radius = 15; 9 | [SerializeField] float elevation = 5; 10 | 11 | void LateUpdate() 12 | { 13 | var m = target.transform.position; 14 | var n = transform.position; 15 | m.y = 0; 16 | n.y = 0; 17 | n = (n - m).normalized * radius; 18 | n = Quaternion.AngleAxis( Input.GetAxis("HorizontalCam"), Vector3.up ) * n; 19 | n += m; 20 | n.y = target.transform.position.y + elevation; 21 | 22 | transform.position = n; 23 | transform.LookAt( target.transform.position ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Samples/SampleScene/ExampleCamera.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e950f4e30d23590c5930ee596c555fe9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Samples/SampleScene/ExampleInputProvider.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using LibSM64; 3 | 4 | public class ExampleInputProvider : SM64InputProvider 5 | { 6 | public GameObject cameraObject = null; 7 | 8 | public override Vector3 GetCameraLookDirection() 9 | { 10 | return cameraObject.transform.forward; 11 | } 12 | 13 | public override Vector2 GetJoystickAxes() 14 | { 15 | return new Vector2( Input.GetAxis("Horizontal"), Input.GetAxis("Vertical") ); 16 | } 17 | 18 | public override bool GetButtonHeld( Button button ) 19 | { 20 | switch( button ) 21 | { 22 | case SM64InputProvider.Button.Jump: return Input.GetButton("Jump"); 23 | case SM64InputProvider.Button.Kick: return Input.GetButton("Kick"); 24 | case SM64InputProvider.Button.Stomp: return Input.GetButton("Z"); 25 | } 26 | return false; 27 | } 28 | } -------------------------------------------------------------------------------- /Samples/SampleScene/ExampleInputProvider.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e4a2dace33993b19abc35c88b9b40604 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Samples/SampleScene/ExamplePlatformMover.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using LibSM64; 3 | 4 | public class ExamplePlatformMover : MonoBehaviour 5 | { 6 | SM64DynamicTerrain platform; 7 | Quaternion rotStep; 8 | Vector3 ogPos; 9 | 10 | void Start() 11 | { 12 | ogPos = transform.position; 13 | platform = GetComponent(); 14 | rotStep = Quaternion.AngleAxis( 1f, Random.onUnitSphere ); 15 | } 16 | 17 | void FixedUpdate() 18 | { 19 | platform.SetPosition( ogPos + Vector3.right * 50.0f * Mathf.Cos( 0.1f * Time.fixedTime + Mathf.PI )); 20 | platform.SetRotation( platform.rotation * rotStep ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Samples/SampleScene/ExamplePlatformMover.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6db8a80474874cc7581a1f6bf5e5958a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Samples/SampleScene/ExampleScene.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 9 17 | m_Fog: 1 18 | m_FogColor: {r: 0, g: 0, b: 0, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.04 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.6256675, g: 0.650506, b: 0.6981132, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 3 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 705507994} 41 | m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 11 47 | m_GIWorkflowMode: 1 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 12 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_AtlasSize: 1024 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_ExtractAmbientOcclusion: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 1 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 500 79 | m_PVRBounces: 2 80 | m_PVREnvironmentSampleCount: 500 81 | m_PVREnvironmentReferencePointCount: 2048 82 | m_PVRFilteringMode: 2 83 | m_PVRDenoiserTypeDirect: 0 84 | m_PVRDenoiserTypeIndirect: 0 85 | m_PVRDenoiserTypeAO: 0 86 | m_PVRFilterTypeDirect: 0 87 | m_PVRFilterTypeIndirect: 0 88 | m_PVRFilterTypeAO: 0 89 | m_PVREnvironmentMIS: 0 90 | m_PVRCulling: 1 91 | m_PVRFilteringGaussRadiusDirect: 1 92 | m_PVRFilteringGaussRadiusIndirect: 5 93 | m_PVRFilteringGaussRadiusAO: 2 94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 96 | m_PVRFilteringAtrousPositionSigmaAO: 1 97 | m_ExportTrainingData: 0 98 | m_TrainingDataDestination: TrainingData 99 | m_LightProbeSampleCountMultiplier: 4 100 | m_LightingDataAsset: {fileID: 0} 101 | m_UseShadowmask: 1 102 | --- !u!196 &4 103 | NavMeshSettings: 104 | serializedVersion: 2 105 | m_ObjectHideFlags: 0 106 | m_BuildSettings: 107 | serializedVersion: 2 108 | agentTypeID: 0 109 | agentRadius: 0.5 110 | agentHeight: 2 111 | agentSlope: 45 112 | agentClimb: 0.4 113 | ledgeDropHeight: 0 114 | maxJumpAcrossDistance: 0 115 | minRegionArea: 2 116 | manualCellSize: 0 117 | cellSize: 0.16666667 118 | manualTileSize: 0 119 | tileSize: 256 120 | accuratePlacement: 0 121 | debug: 122 | m_Flags: 0 123 | m_NavMeshData: {fileID: 0} 124 | --- !u!1 &14833 125 | GameObject: 126 | m_ObjectHideFlags: 0 127 | m_CorrespondingSourceObject: {fileID: 0} 128 | m_PrefabInstance: {fileID: 0} 129 | m_PrefabAsset: {fileID: 0} 130 | serializedVersion: 6 131 | m_Component: 132 | - component: {fileID: 14836} 133 | - component: {fileID: 14835} 134 | - component: {fileID: 14834} 135 | m_Layer: 0 136 | m_Name: Mario (3) 137 | m_TagString: Untagged 138 | m_Icon: {fileID: 0} 139 | m_NavMeshLayer: 0 140 | m_StaticEditorFlags: 0 141 | m_IsActive: 0 142 | --- !u!114 &14834 143 | MonoBehaviour: 144 | m_ObjectHideFlags: 0 145 | m_CorrespondingSourceObject: {fileID: 0} 146 | m_PrefabInstance: {fileID: 0} 147 | m_PrefabAsset: {fileID: 0} 148 | m_GameObject: {fileID: 14833} 149 | m_Enabled: 1 150 | m_EditorHideFlags: 0 151 | m_Script: {fileID: 11500000, guid: e4a2dace33993b19abc35c88b9b40604, type: 3} 152 | m_Name: 153 | m_EditorClassIdentifier: 154 | cameraObject: {fileID: 963194225} 155 | --- !u!114 &14835 156 | MonoBehaviour: 157 | m_ObjectHideFlags: 0 158 | m_CorrespondingSourceObject: {fileID: 0} 159 | m_PrefabInstance: {fileID: 0} 160 | m_PrefabAsset: {fileID: 0} 161 | m_GameObject: {fileID: 14833} 162 | m_Enabled: 1 163 | m_EditorHideFlags: 0 164 | m_Script: {fileID: 11500000, guid: d31bc207218a3e604aff01c14f053e5e, type: 3} 165 | m_Name: 166 | m_EditorClassIdentifier: 167 | material: {fileID: 2100000, guid: 01b49c8823ed89b8eb2df235f599bf12, type: 2} 168 | --- !u!4 &14836 169 | Transform: 170 | m_ObjectHideFlags: 0 171 | m_CorrespondingSourceObject: {fileID: 0} 172 | m_PrefabInstance: {fileID: 0} 173 | m_PrefabAsset: {fileID: 0} 174 | m_GameObject: {fileID: 14833} 175 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 176 | m_LocalPosition: {x: -45.35, y: 1.39, z: 12.4} 177 | m_LocalScale: {x: 1, y: 1, z: 1} 178 | m_Children: [] 179 | m_Father: {fileID: 0} 180 | m_RootOrder: 10 181 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 182 | --- !u!1 &377237265 183 | GameObject: 184 | m_ObjectHideFlags: 0 185 | m_CorrespondingSourceObject: {fileID: 0} 186 | m_PrefabInstance: {fileID: 0} 187 | m_PrefabAsset: {fileID: 0} 188 | serializedVersion: 6 189 | m_Component: 190 | - component: {fileID: 377237268} 191 | - component: {fileID: 377237267} 192 | - component: {fileID: 377237266} 193 | m_Layer: 0 194 | m_Name: Mario (6) 195 | m_TagString: Untagged 196 | m_Icon: {fileID: 0} 197 | m_NavMeshLayer: 0 198 | m_StaticEditorFlags: 0 199 | m_IsActive: 0 200 | --- !u!114 &377237266 201 | MonoBehaviour: 202 | m_ObjectHideFlags: 0 203 | m_CorrespondingSourceObject: {fileID: 0} 204 | m_PrefabInstance: {fileID: 0} 205 | m_PrefabAsset: {fileID: 0} 206 | m_GameObject: {fileID: 377237265} 207 | m_Enabled: 1 208 | m_EditorHideFlags: 0 209 | m_Script: {fileID: 11500000, guid: e4a2dace33993b19abc35c88b9b40604, type: 3} 210 | m_Name: 211 | m_EditorClassIdentifier: 212 | cameraObject: {fileID: 963194225} 213 | --- !u!114 &377237267 214 | MonoBehaviour: 215 | m_ObjectHideFlags: 0 216 | m_CorrespondingSourceObject: {fileID: 0} 217 | m_PrefabInstance: {fileID: 0} 218 | m_PrefabAsset: {fileID: 0} 219 | m_GameObject: {fileID: 377237265} 220 | m_Enabled: 1 221 | m_EditorHideFlags: 0 222 | m_Script: {fileID: 11500000, guid: d31bc207218a3e604aff01c14f053e5e, type: 3} 223 | m_Name: 224 | m_EditorClassIdentifier: 225 | material: {fileID: 2100000, guid: 01b49c8823ed89b8eb2df235f599bf12, type: 2} 226 | --- !u!4 &377237268 227 | Transform: 228 | m_ObjectHideFlags: 0 229 | m_CorrespondingSourceObject: {fileID: 0} 230 | m_PrefabInstance: {fileID: 0} 231 | m_PrefabAsset: {fileID: 0} 232 | m_GameObject: {fileID: 377237265} 233 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 234 | m_LocalPosition: {x: -47.1, y: 5.47, z: 6.67} 235 | m_LocalScale: {x: 1, y: 1, z: 1} 236 | m_Children: [] 237 | m_Father: {fileID: 0} 238 | m_RootOrder: 14 239 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 240 | --- !u!1 &705507993 241 | GameObject: 242 | m_ObjectHideFlags: 0 243 | m_CorrespondingSourceObject: {fileID: 0} 244 | m_PrefabInstance: {fileID: 0} 245 | m_PrefabAsset: {fileID: 0} 246 | serializedVersion: 6 247 | m_Component: 248 | - component: {fileID: 705507995} 249 | - component: {fileID: 705507994} 250 | m_Layer: 0 251 | m_Name: Directional Light 252 | m_TagString: Untagged 253 | m_Icon: {fileID: 0} 254 | m_NavMeshLayer: 0 255 | m_StaticEditorFlags: 0 256 | m_IsActive: 1 257 | --- !u!108 &705507994 258 | Light: 259 | m_ObjectHideFlags: 0 260 | m_CorrespondingSourceObject: {fileID: 0} 261 | m_PrefabInstance: {fileID: 0} 262 | m_PrefabAsset: {fileID: 0} 263 | m_GameObject: {fileID: 705507993} 264 | m_Enabled: 1 265 | serializedVersion: 10 266 | m_Type: 1 267 | m_Shape: 0 268 | m_Color: {r: 0.8867924, g: 0.946922, b: 1, a: 1} 269 | m_Intensity: 1 270 | m_Range: 10 271 | m_SpotAngle: 30 272 | m_InnerSpotAngle: 21.80208 273 | m_CookieSize: 10 274 | m_Shadows: 275 | m_Type: 2 276 | m_Resolution: -1 277 | m_CustomResolution: -1 278 | m_Strength: 1 279 | m_Bias: 0.05 280 | m_NormalBias: 0.4 281 | m_NearPlane: 0.2 282 | m_CullingMatrixOverride: 283 | e00: 1 284 | e01: 0 285 | e02: 0 286 | e03: 0 287 | e10: 0 288 | e11: 1 289 | e12: 0 290 | e13: 0 291 | e20: 0 292 | e21: 0 293 | e22: 1 294 | e23: 0 295 | e30: 0 296 | e31: 0 297 | e32: 0 298 | e33: 1 299 | m_UseCullingMatrixOverride: 0 300 | m_Cookie: {fileID: 0} 301 | m_DrawHalo: 0 302 | m_Flare: {fileID: 0} 303 | m_RenderMode: 0 304 | m_CullingMask: 305 | serializedVersion: 2 306 | m_Bits: 4294967295 307 | m_RenderingLayerMask: 1 308 | m_Lightmapping: 1 309 | m_LightShadowCasterMode: 0 310 | m_AreaSize: {x: 1, y: 1} 311 | m_BounceIntensity: 1 312 | m_ColorTemperature: 6570 313 | m_UseColorTemperature: 0 314 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} 315 | m_UseBoundingSphereOverride: 0 316 | m_ShadowRadius: 0 317 | m_ShadowAngle: 0 318 | --- !u!4 &705507995 319 | Transform: 320 | m_ObjectHideFlags: 0 321 | m_CorrespondingSourceObject: {fileID: 0} 322 | m_PrefabInstance: {fileID: 0} 323 | m_PrefabAsset: {fileID: 0} 324 | m_GameObject: {fileID: 705507993} 325 | m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} 326 | m_LocalPosition: {x: 0, y: 3, z: 0} 327 | m_LocalScale: {x: 1, y: 1, z: 1} 328 | m_Children: [] 329 | m_Father: {fileID: 0} 330 | m_RootOrder: 0 331 | m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} 332 | --- !u!1 &706680202 333 | GameObject: 334 | m_ObjectHideFlags: 0 335 | m_CorrespondingSourceObject: {fileID: 0} 336 | m_PrefabInstance: {fileID: 0} 337 | m_PrefabAsset: {fileID: 0} 338 | serializedVersion: 6 339 | m_Component: 340 | - component: {fileID: 706680205} 341 | - component: {fileID: 706680204} 342 | - component: {fileID: 706680203} 343 | m_Layer: 0 344 | m_Name: Mario (1) 345 | m_TagString: Untagged 346 | m_Icon: {fileID: 0} 347 | m_NavMeshLayer: 0 348 | m_StaticEditorFlags: 0 349 | m_IsActive: 0 350 | --- !u!114 &706680203 351 | MonoBehaviour: 352 | m_ObjectHideFlags: 0 353 | m_CorrespondingSourceObject: {fileID: 0} 354 | m_PrefabInstance: {fileID: 0} 355 | m_PrefabAsset: {fileID: 0} 356 | m_GameObject: {fileID: 706680202} 357 | m_Enabled: 1 358 | m_EditorHideFlags: 0 359 | m_Script: {fileID: 11500000, guid: e4a2dace33993b19abc35c88b9b40604, type: 3} 360 | m_Name: 361 | m_EditorClassIdentifier: 362 | cameraObject: {fileID: 963194225} 363 | --- !u!114 &706680204 364 | MonoBehaviour: 365 | m_ObjectHideFlags: 0 366 | m_CorrespondingSourceObject: {fileID: 0} 367 | m_PrefabInstance: {fileID: 0} 368 | m_PrefabAsset: {fileID: 0} 369 | m_GameObject: {fileID: 706680202} 370 | m_Enabled: 1 371 | m_EditorHideFlags: 0 372 | m_Script: {fileID: 11500000, guid: d31bc207218a3e604aff01c14f053e5e, type: 3} 373 | m_Name: 374 | m_EditorClassIdentifier: 375 | material: {fileID: 2100000, guid: 01b49c8823ed89b8eb2df235f599bf12, type: 2} 376 | --- !u!4 &706680205 377 | Transform: 378 | m_ObjectHideFlags: 0 379 | m_CorrespondingSourceObject: {fileID: 0} 380 | m_PrefabInstance: {fileID: 0} 381 | m_PrefabAsset: {fileID: 0} 382 | m_GameObject: {fileID: 706680202} 383 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 384 | m_LocalPosition: {x: -49.02, y: 1.39, z: 12.4} 385 | m_LocalScale: {x: 1, y: 1, z: 1} 386 | m_Children: [] 387 | m_Father: {fileID: 0} 388 | m_RootOrder: 3 389 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 390 | --- !u!1 &846939082 391 | GameObject: 392 | m_ObjectHideFlags: 0 393 | m_CorrespondingSourceObject: {fileID: 0} 394 | m_PrefabInstance: {fileID: 0} 395 | m_PrefabAsset: {fileID: 0} 396 | serializedVersion: 6 397 | m_Component: 398 | - component: {fileID: 846939088} 399 | - component: {fileID: 846939087} 400 | - component: {fileID: 846939086} 401 | - component: {fileID: 846939085} 402 | - component: {fileID: 846939084} 403 | - component: {fileID: 846939083} 404 | m_Layer: 0 405 | m_Name: MovingPlatform (1) 406 | m_TagString: Untagged 407 | m_Icon: {fileID: 0} 408 | m_NavMeshLayer: 0 409 | m_StaticEditorFlags: 0 410 | m_IsActive: 1 411 | --- !u!64 &846939083 412 | MeshCollider: 413 | m_ObjectHideFlags: 0 414 | m_CorrespondingSourceObject: {fileID: 0} 415 | m_PrefabInstance: {fileID: 0} 416 | m_PrefabAsset: {fileID: 0} 417 | m_GameObject: {fileID: 846939082} 418 | m_Material: {fileID: 0} 419 | m_IsTrigger: 0 420 | m_Enabled: 1 421 | serializedVersion: 4 422 | m_Convex: 0 423 | m_CookingOptions: 30 424 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 425 | --- !u!23 &846939084 426 | MeshRenderer: 427 | m_ObjectHideFlags: 0 428 | m_CorrespondingSourceObject: {fileID: 0} 429 | m_PrefabInstance: {fileID: 0} 430 | m_PrefabAsset: {fileID: 0} 431 | m_GameObject: {fileID: 846939082} 432 | m_Enabled: 1 433 | m_CastShadows: 1 434 | m_ReceiveShadows: 1 435 | m_DynamicOccludee: 1 436 | m_MotionVectors: 1 437 | m_LightProbeUsage: 1 438 | m_ReflectionProbeUsage: 1 439 | m_RayTracingMode: 2 440 | m_RenderingLayerMask: 1 441 | m_RendererPriority: 0 442 | m_Materials: 443 | - {fileID: 2100000, guid: 64f0c04087780084d933dbeab8ccfb50, type: 2} 444 | m_StaticBatchInfo: 445 | firstSubMesh: 0 446 | subMeshCount: 0 447 | m_StaticBatchRoot: {fileID: 0} 448 | m_ProbeAnchor: {fileID: 0} 449 | m_LightProbeVolumeOverride: {fileID: 0} 450 | m_ScaleInLightmap: 1 451 | m_ReceiveGI: 1 452 | m_PreserveUVs: 0 453 | m_IgnoreNormalsForChartDetection: 0 454 | m_ImportantGI: 0 455 | m_StitchLightmapSeams: 1 456 | m_SelectedEditorRenderState: 3 457 | m_MinimumChartSize: 4 458 | m_AutoUVMaxDistance: 0.5 459 | m_AutoUVMaxAngle: 89 460 | m_LightmapParameters: {fileID: 0} 461 | m_SortingLayerID: 0 462 | m_SortingLayer: 0 463 | m_SortingOrder: 0 464 | --- !u!33 &846939085 465 | MeshFilter: 466 | m_ObjectHideFlags: 0 467 | m_CorrespondingSourceObject: {fileID: 0} 468 | m_PrefabInstance: {fileID: 0} 469 | m_PrefabAsset: {fileID: 0} 470 | m_GameObject: {fileID: 846939082} 471 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 472 | --- !u!114 &846939086 473 | MonoBehaviour: 474 | m_ObjectHideFlags: 0 475 | m_CorrespondingSourceObject: {fileID: 0} 476 | m_PrefabInstance: {fileID: 0} 477 | m_PrefabAsset: {fileID: 0} 478 | m_GameObject: {fileID: 846939082} 479 | m_Enabled: 1 480 | m_EditorHideFlags: 0 481 | m_Script: {fileID: 11500000, guid: 6db8a80474874cc7581a1f6bf5e5958a, type: 3} 482 | m_Name: 483 | m_EditorClassIdentifier: 484 | --- !u!114 &846939087 485 | MonoBehaviour: 486 | m_ObjectHideFlags: 0 487 | m_CorrespondingSourceObject: {fileID: 0} 488 | m_PrefabInstance: {fileID: 0} 489 | m_PrefabAsset: {fileID: 0} 490 | m_GameObject: {fileID: 846939082} 491 | m_Enabled: 1 492 | m_EditorHideFlags: 0 493 | m_Script: {fileID: 11500000, guid: c20b350fc053bebea8a1d907d10860f8, type: 3} 494 | m_Name: 495 | m_EditorClassIdentifier: 496 | terrainType: 1 497 | surfaceType: 21 498 | --- !u!4 &846939088 499 | Transform: 500 | m_ObjectHideFlags: 0 501 | m_CorrespondingSourceObject: {fileID: 0} 502 | m_PrefabInstance: {fileID: 0} 503 | m_PrefabAsset: {fileID: 0} 504 | m_GameObject: {fileID: 846939082} 505 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 506 | m_LocalPosition: {x: -4.29, y: 0.120033264, z: -7.28} 507 | m_LocalScale: {x: 6.0632, y: 5.1199994, z: 6.0632} 508 | m_Children: [] 509 | m_Father: {fileID: 0} 510 | m_RootOrder: 15 511 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 512 | --- !u!1 &856516969 513 | GameObject: 514 | m_ObjectHideFlags: 0 515 | m_CorrespondingSourceObject: {fileID: 0} 516 | m_PrefabInstance: {fileID: 0} 517 | m_PrefabAsset: {fileID: 0} 518 | serializedVersion: 6 519 | m_Component: 520 | - component: {fileID: 856516972} 521 | - component: {fileID: 856516971} 522 | - component: {fileID: 856516970} 523 | m_Layer: 0 524 | m_Name: Mario (5) 525 | m_TagString: Untagged 526 | m_Icon: {fileID: 0} 527 | m_NavMeshLayer: 0 528 | m_StaticEditorFlags: 0 529 | m_IsActive: 0 530 | --- !u!114 &856516970 531 | MonoBehaviour: 532 | m_ObjectHideFlags: 0 533 | m_CorrespondingSourceObject: {fileID: 0} 534 | m_PrefabInstance: {fileID: 0} 535 | m_PrefabAsset: {fileID: 0} 536 | m_GameObject: {fileID: 856516969} 537 | m_Enabled: 1 538 | m_EditorHideFlags: 0 539 | m_Script: {fileID: 11500000, guid: e4a2dace33993b19abc35c88b9b40604, type: 3} 540 | m_Name: 541 | m_EditorClassIdentifier: 542 | cameraObject: {fileID: 963194225} 543 | --- !u!114 &856516971 544 | MonoBehaviour: 545 | m_ObjectHideFlags: 0 546 | m_CorrespondingSourceObject: {fileID: 0} 547 | m_PrefabInstance: {fileID: 0} 548 | m_PrefabAsset: {fileID: 0} 549 | m_GameObject: {fileID: 856516969} 550 | m_Enabled: 1 551 | m_EditorHideFlags: 0 552 | m_Script: {fileID: 11500000, guid: d31bc207218a3e604aff01c14f053e5e, type: 3} 553 | m_Name: 554 | m_EditorClassIdentifier: 555 | material: {fileID: 2100000, guid: 01b49c8823ed89b8eb2df235f599bf12, type: 2} 556 | --- !u!4 &856516972 557 | Transform: 558 | m_ObjectHideFlags: 0 559 | m_CorrespondingSourceObject: {fileID: 0} 560 | m_PrefabInstance: {fileID: 0} 561 | m_PrefabAsset: {fileID: 0} 562 | m_GameObject: {fileID: 856516969} 563 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 564 | m_LocalPosition: {x: -50.77, y: 5.47, z: 10.46} 565 | m_LocalScale: {x: 1, y: 1, z: 1} 566 | m_Children: [] 567 | m_Father: {fileID: 0} 568 | m_RootOrder: 12 569 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 570 | --- !u!1 &884307342 571 | GameObject: 572 | m_ObjectHideFlags: 0 573 | m_CorrespondingSourceObject: {fileID: 0} 574 | m_PrefabInstance: {fileID: 0} 575 | m_PrefabAsset: {fileID: 0} 576 | serializedVersion: 6 577 | m_Component: 578 | - component: {fileID: 884307347} 579 | - component: {fileID: 884307346} 580 | - component: {fileID: 884307345} 581 | - component: {fileID: 884307344} 582 | - component: {fileID: 884307343} 583 | m_Layer: 0 584 | m_Name: StaticGround (2) 585 | m_TagString: Untagged 586 | m_Icon: {fileID: 0} 587 | m_NavMeshLayer: 0 588 | m_StaticEditorFlags: 0 589 | m_IsActive: 1 590 | --- !u!64 &884307343 591 | MeshCollider: 592 | m_ObjectHideFlags: 0 593 | m_CorrespondingSourceObject: {fileID: 0} 594 | m_PrefabInstance: {fileID: 0} 595 | m_PrefabAsset: {fileID: 0} 596 | m_GameObject: {fileID: 884307342} 597 | m_Material: {fileID: 0} 598 | m_IsTrigger: 0 599 | m_Enabled: 1 600 | serializedVersion: 4 601 | m_Convex: 0 602 | m_CookingOptions: 30 603 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 604 | --- !u!23 &884307344 605 | MeshRenderer: 606 | m_ObjectHideFlags: 0 607 | m_CorrespondingSourceObject: {fileID: 0} 608 | m_PrefabInstance: {fileID: 0} 609 | m_PrefabAsset: {fileID: 0} 610 | m_GameObject: {fileID: 884307342} 611 | m_Enabled: 1 612 | m_CastShadows: 1 613 | m_ReceiveShadows: 1 614 | m_DynamicOccludee: 1 615 | m_MotionVectors: 1 616 | m_LightProbeUsage: 1 617 | m_ReflectionProbeUsage: 1 618 | m_RayTracingMode: 2 619 | m_RenderingLayerMask: 1 620 | m_RendererPriority: 0 621 | m_Materials: 622 | - {fileID: 2100000, guid: 64f0c04087780084d933dbeab8ccfb50, type: 2} 623 | m_StaticBatchInfo: 624 | firstSubMesh: 0 625 | subMeshCount: 0 626 | m_StaticBatchRoot: {fileID: 0} 627 | m_ProbeAnchor: {fileID: 0} 628 | m_LightProbeVolumeOverride: {fileID: 0} 629 | m_ScaleInLightmap: 1 630 | m_ReceiveGI: 1 631 | m_PreserveUVs: 0 632 | m_IgnoreNormalsForChartDetection: 0 633 | m_ImportantGI: 0 634 | m_StitchLightmapSeams: 1 635 | m_SelectedEditorRenderState: 3 636 | m_MinimumChartSize: 4 637 | m_AutoUVMaxDistance: 0.5 638 | m_AutoUVMaxAngle: 89 639 | m_LightmapParameters: {fileID: 0} 640 | m_SortingLayerID: 0 641 | m_SortingLayer: 0 642 | m_SortingOrder: 0 643 | --- !u!33 &884307345 644 | MeshFilter: 645 | m_ObjectHideFlags: 0 646 | m_CorrespondingSourceObject: {fileID: 0} 647 | m_PrefabInstance: {fileID: 0} 648 | m_PrefabAsset: {fileID: 0} 649 | m_GameObject: {fileID: 884307342} 650 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 651 | --- !u!114 &884307346 652 | MonoBehaviour: 653 | m_ObjectHideFlags: 0 654 | m_CorrespondingSourceObject: {fileID: 0} 655 | m_PrefabInstance: {fileID: 0} 656 | m_PrefabAsset: {fileID: 0} 657 | m_GameObject: {fileID: 884307342} 658 | m_Enabled: 1 659 | m_EditorHideFlags: 0 660 | m_Script: {fileID: 11500000, guid: 1d07c4c311d4ebf7c8a3ca1785abbcb6, type: 3} 661 | m_Name: 662 | m_EditorClassIdentifier: 663 | terrainType: 1 664 | surfaceType: 0 665 | --- !u!4 &884307347 666 | Transform: 667 | m_ObjectHideFlags: 0 668 | m_CorrespondingSourceObject: {fileID: 0} 669 | m_PrefabInstance: {fileID: 0} 670 | m_PrefabAsset: {fileID: 0} 671 | m_GameObject: {fileID: 884307342} 672 | m_LocalRotation: {x: 0.18886943, y: -0, z: -0, w: 0.98200226} 673 | m_LocalPosition: {x: -64.88, y: 3.77, z: 9.18} 674 | m_LocalScale: {x: 11.869, y: 11.853061, z: 18.42289} 675 | m_Children: [] 676 | m_Father: {fileID: 0} 677 | m_RootOrder: 8 678 | m_LocalEulerAnglesHint: {x: 21.774, y: 0, z: 0} 679 | --- !u!1 &963194225 680 | GameObject: 681 | m_ObjectHideFlags: 0 682 | m_CorrespondingSourceObject: {fileID: 0} 683 | m_PrefabInstance: {fileID: 0} 684 | m_PrefabAsset: {fileID: 0} 685 | serializedVersion: 6 686 | m_Component: 687 | - component: {fileID: 963194228} 688 | - component: {fileID: 963194229} 689 | - component: {fileID: 963194227} 690 | - component: {fileID: 963194226} 691 | m_Layer: 0 692 | m_Name: Main Camera 693 | m_TagString: MainCamera 694 | m_Icon: {fileID: 0} 695 | m_NavMeshLayer: 0 696 | m_StaticEditorFlags: 0 697 | m_IsActive: 1 698 | --- !u!81 &963194226 699 | AudioListener: 700 | m_ObjectHideFlags: 0 701 | m_CorrespondingSourceObject: {fileID: 0} 702 | m_PrefabInstance: {fileID: 0} 703 | m_PrefabAsset: {fileID: 0} 704 | m_GameObject: {fileID: 963194225} 705 | m_Enabled: 1 706 | --- !u!20 &963194227 707 | Camera: 708 | m_ObjectHideFlags: 0 709 | m_CorrespondingSourceObject: {fileID: 0} 710 | m_PrefabInstance: {fileID: 0} 711 | m_PrefabAsset: {fileID: 0} 712 | m_GameObject: {fileID: 963194225} 713 | m_Enabled: 1 714 | serializedVersion: 2 715 | m_ClearFlags: 1 716 | m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0} 717 | m_projectionMatrixMode: 1 718 | m_GateFitMode: 2 719 | m_FOVAxisMode: 0 720 | m_SensorSize: {x: 36, y: 24} 721 | m_LensShift: {x: 0, y: 0} 722 | m_FocalLength: 50 723 | m_NormalizedViewPortRect: 724 | serializedVersion: 2 725 | x: 0 726 | y: 0 727 | width: 1 728 | height: 1 729 | near clip plane: 0.3 730 | far clip plane: 1000 731 | field of view: 70 732 | orthographic: 0 733 | orthographic size: 5 734 | m_Depth: -1 735 | m_CullingMask: 736 | serializedVersion: 2 737 | m_Bits: 4294967295 738 | m_RenderingPath: -1 739 | m_TargetTexture: {fileID: 0} 740 | m_TargetDisplay: 0 741 | m_TargetEye: 3 742 | m_HDR: 1 743 | m_AllowMSAA: 1 744 | m_AllowDynamicResolution: 0 745 | m_ForceIntoRT: 0 746 | m_OcclusionCulling: 1 747 | m_StereoConvergence: 10 748 | m_StereoSeparation: 0.022 749 | --- !u!4 &963194228 750 | Transform: 751 | m_ObjectHideFlags: 0 752 | m_CorrespondingSourceObject: {fileID: 0} 753 | m_PrefabInstance: {fileID: 0} 754 | m_PrefabAsset: {fileID: 0} 755 | m_GameObject: {fileID: 963194225} 756 | m_LocalRotation: {x: -0, y: -0.8720655, z: -0, w: -0.48938927} 757 | m_LocalPosition: {x: -5.711, y: 1.211, z: 3.28} 758 | m_LocalScale: {x: 1, y: 1, z: 1} 759 | m_Children: [] 760 | m_Father: {fileID: 0} 761 | m_RootOrder: 1 762 | m_LocalEulerAnglesHint: {x: 0, y: -238.601, z: 0} 763 | --- !u!114 &963194229 764 | MonoBehaviour: 765 | m_ObjectHideFlags: 0 766 | m_CorrespondingSourceObject: {fileID: 0} 767 | m_PrefabInstance: {fileID: 0} 768 | m_PrefabAsset: {fileID: 0} 769 | m_GameObject: {fileID: 963194225} 770 | m_Enabled: 1 771 | m_EditorHideFlags: 0 772 | m_Script: {fileID: 11500000, guid: e950f4e30d23590c5930ee596c555fe9, type: 3} 773 | m_Name: 774 | m_EditorClassIdentifier: 775 | target: {fileID: 1677693779} 776 | radius: 10 777 | elevation: 5 778 | --- !u!1 &1044714400 779 | GameObject: 780 | m_ObjectHideFlags: 0 781 | m_CorrespondingSourceObject: {fileID: 0} 782 | m_PrefabInstance: {fileID: 0} 783 | m_PrefabAsset: {fileID: 0} 784 | serializedVersion: 6 785 | m_Component: 786 | - component: {fileID: 1044714404} 787 | - component: {fileID: 1044714405} 788 | - component: {fileID: 1044714403} 789 | - component: {fileID: 1044714402} 790 | - component: {fileID: 1044714401} 791 | m_Layer: 0 792 | m_Name: StaticGround 793 | m_TagString: Untagged 794 | m_Icon: {fileID: 0} 795 | m_NavMeshLayer: 0 796 | m_StaticEditorFlags: 0 797 | m_IsActive: 1 798 | --- !u!64 &1044714401 799 | MeshCollider: 800 | m_ObjectHideFlags: 0 801 | m_CorrespondingSourceObject: {fileID: 0} 802 | m_PrefabInstance: {fileID: 0} 803 | m_PrefabAsset: {fileID: 0} 804 | m_GameObject: {fileID: 1044714400} 805 | m_Material: {fileID: 0} 806 | m_IsTrigger: 0 807 | m_Enabled: 1 808 | serializedVersion: 4 809 | m_Convex: 0 810 | m_CookingOptions: 30 811 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 812 | --- !u!23 &1044714402 813 | MeshRenderer: 814 | m_ObjectHideFlags: 0 815 | m_CorrespondingSourceObject: {fileID: 0} 816 | m_PrefabInstance: {fileID: 0} 817 | m_PrefabAsset: {fileID: 0} 818 | m_GameObject: {fileID: 1044714400} 819 | m_Enabled: 1 820 | m_CastShadows: 1 821 | m_ReceiveShadows: 1 822 | m_DynamicOccludee: 1 823 | m_MotionVectors: 1 824 | m_LightProbeUsage: 1 825 | m_ReflectionProbeUsage: 1 826 | m_RayTracingMode: 2 827 | m_RenderingLayerMask: 1 828 | m_RendererPriority: 0 829 | m_Materials: 830 | - {fileID: 2100000, guid: 64f0c04087780084d933dbeab8ccfb50, type: 2} 831 | m_StaticBatchInfo: 832 | firstSubMesh: 0 833 | subMeshCount: 0 834 | m_StaticBatchRoot: {fileID: 0} 835 | m_ProbeAnchor: {fileID: 0} 836 | m_LightProbeVolumeOverride: {fileID: 0} 837 | m_ScaleInLightmap: 1 838 | m_ReceiveGI: 1 839 | m_PreserveUVs: 0 840 | m_IgnoreNormalsForChartDetection: 0 841 | m_ImportantGI: 0 842 | m_StitchLightmapSeams: 1 843 | m_SelectedEditorRenderState: 3 844 | m_MinimumChartSize: 4 845 | m_AutoUVMaxDistance: 0.5 846 | m_AutoUVMaxAngle: 89 847 | m_LightmapParameters: {fileID: 0} 848 | m_SortingLayerID: 0 849 | m_SortingLayer: 0 850 | m_SortingOrder: 0 851 | --- !u!33 &1044714403 852 | MeshFilter: 853 | m_ObjectHideFlags: 0 854 | m_CorrespondingSourceObject: {fileID: 0} 855 | m_PrefabInstance: {fileID: 0} 856 | m_PrefabAsset: {fileID: 0} 857 | m_GameObject: {fileID: 1044714400} 858 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 859 | --- !u!4 &1044714404 860 | Transform: 861 | m_ObjectHideFlags: 0 862 | m_CorrespondingSourceObject: {fileID: 0} 863 | m_PrefabInstance: {fileID: 0} 864 | m_PrefabAsset: {fileID: 0} 865 | m_GameObject: {fileID: 1044714400} 866 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 867 | m_LocalPosition: {x: -59.33, y: -0.35, z: 16.08} 868 | m_LocalScale: {x: 39.291286, y: 1, z: 28.318726} 869 | m_Children: [] 870 | m_Father: {fileID: 0} 871 | m_RootOrder: 4 872 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 873 | --- !u!114 &1044714405 874 | MonoBehaviour: 875 | m_ObjectHideFlags: 0 876 | m_CorrespondingSourceObject: {fileID: 0} 877 | m_PrefabInstance: {fileID: 0} 878 | m_PrefabAsset: {fileID: 0} 879 | m_GameObject: {fileID: 1044714400} 880 | m_Enabled: 1 881 | m_EditorHideFlags: 0 882 | m_Script: {fileID: 11500000, guid: 1d07c4c311d4ebf7c8a3ca1785abbcb6, type: 3} 883 | m_Name: 884 | m_EditorClassIdentifier: 885 | terrainType: 1 886 | surfaceType: 0 887 | --- !u!1 &1296435860 888 | GameObject: 889 | m_ObjectHideFlags: 0 890 | m_CorrespondingSourceObject: {fileID: 0} 891 | m_PrefabInstance: {fileID: 0} 892 | m_PrefabAsset: {fileID: 0} 893 | serializedVersion: 6 894 | m_Component: 895 | - component: {fileID: 1296435863} 896 | - component: {fileID: 1296435862} 897 | - component: {fileID: 1296435861} 898 | m_Layer: 0 899 | m_Name: Mario (2) 900 | m_TagString: Untagged 901 | m_Icon: {fileID: 0} 902 | m_NavMeshLayer: 0 903 | m_StaticEditorFlags: 0 904 | m_IsActive: 0 905 | --- !u!114 &1296435861 906 | MonoBehaviour: 907 | m_ObjectHideFlags: 0 908 | m_CorrespondingSourceObject: {fileID: 0} 909 | m_PrefabInstance: {fileID: 0} 910 | m_PrefabAsset: {fileID: 0} 911 | m_GameObject: {fileID: 1296435860} 912 | m_Enabled: 1 913 | m_EditorHideFlags: 0 914 | m_Script: {fileID: 11500000, guid: e4a2dace33993b19abc35c88b9b40604, type: 3} 915 | m_Name: 916 | m_EditorClassIdentifier: 917 | cameraObject: {fileID: 963194225} 918 | --- !u!114 &1296435862 919 | MonoBehaviour: 920 | m_ObjectHideFlags: 0 921 | m_CorrespondingSourceObject: {fileID: 0} 922 | m_PrefabInstance: {fileID: 0} 923 | m_PrefabAsset: {fileID: 0} 924 | m_GameObject: {fileID: 1296435860} 925 | m_Enabled: 1 926 | m_EditorHideFlags: 0 927 | m_Script: {fileID: 11500000, guid: d31bc207218a3e604aff01c14f053e5e, type: 3} 928 | m_Name: 929 | m_EditorClassIdentifier: 930 | material: {fileID: 2100000, guid: 01b49c8823ed89b8eb2df235f599bf12, type: 2} 931 | --- !u!4 &1296435863 932 | Transform: 933 | m_ObjectHideFlags: 0 934 | m_CorrespondingSourceObject: {fileID: 0} 935 | m_PrefabInstance: {fileID: 0} 936 | m_PrefabAsset: {fileID: 0} 937 | m_GameObject: {fileID: 1296435860} 938 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 939 | m_LocalPosition: {x: -45.35, y: 1.39, z: 8.61} 940 | m_LocalScale: {x: 1, y: 1, z: 1} 941 | m_Children: [] 942 | m_Father: {fileID: 0} 943 | m_RootOrder: 9 944 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 945 | --- !u!1 &1358299069 946 | GameObject: 947 | m_ObjectHideFlags: 0 948 | m_CorrespondingSourceObject: {fileID: 0} 949 | m_PrefabInstance: {fileID: 0} 950 | m_PrefabAsset: {fileID: 0} 951 | serializedVersion: 6 952 | m_Component: 953 | - component: {fileID: 1358299075} 954 | - component: {fileID: 1358299074} 955 | - component: {fileID: 1358299073} 956 | - component: {fileID: 1358299072} 957 | - component: {fileID: 1358299071} 958 | - component: {fileID: 1358299070} 959 | m_Layer: 0 960 | m_Name: MovingPlatform (2) 961 | m_TagString: Untagged 962 | m_Icon: {fileID: 0} 963 | m_NavMeshLayer: 0 964 | m_StaticEditorFlags: 0 965 | m_IsActive: 1 966 | --- !u!64 &1358299070 967 | MeshCollider: 968 | m_ObjectHideFlags: 0 969 | m_CorrespondingSourceObject: {fileID: 0} 970 | m_PrefabInstance: {fileID: 0} 971 | m_PrefabAsset: {fileID: 0} 972 | m_GameObject: {fileID: 1358299069} 973 | m_Material: {fileID: 0} 974 | m_IsTrigger: 0 975 | m_Enabled: 1 976 | serializedVersion: 4 977 | m_Convex: 0 978 | m_CookingOptions: 30 979 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 980 | --- !u!23 &1358299071 981 | MeshRenderer: 982 | m_ObjectHideFlags: 0 983 | m_CorrespondingSourceObject: {fileID: 0} 984 | m_PrefabInstance: {fileID: 0} 985 | m_PrefabAsset: {fileID: 0} 986 | m_GameObject: {fileID: 1358299069} 987 | m_Enabled: 1 988 | m_CastShadows: 1 989 | m_ReceiveShadows: 1 990 | m_DynamicOccludee: 1 991 | m_MotionVectors: 1 992 | m_LightProbeUsage: 1 993 | m_ReflectionProbeUsage: 1 994 | m_RayTracingMode: 2 995 | m_RenderingLayerMask: 1 996 | m_RendererPriority: 0 997 | m_Materials: 998 | - {fileID: 2100000, guid: 64f0c04087780084d933dbeab8ccfb50, type: 2} 999 | m_StaticBatchInfo: 1000 | firstSubMesh: 0 1001 | subMeshCount: 0 1002 | m_StaticBatchRoot: {fileID: 0} 1003 | m_ProbeAnchor: {fileID: 0} 1004 | m_LightProbeVolumeOverride: {fileID: 0} 1005 | m_ScaleInLightmap: 1 1006 | m_ReceiveGI: 1 1007 | m_PreserveUVs: 0 1008 | m_IgnoreNormalsForChartDetection: 0 1009 | m_ImportantGI: 0 1010 | m_StitchLightmapSeams: 1 1011 | m_SelectedEditorRenderState: 3 1012 | m_MinimumChartSize: 4 1013 | m_AutoUVMaxDistance: 0.5 1014 | m_AutoUVMaxAngle: 89 1015 | m_LightmapParameters: {fileID: 0} 1016 | m_SortingLayerID: 0 1017 | m_SortingLayer: 0 1018 | m_SortingOrder: 0 1019 | --- !u!33 &1358299072 1020 | MeshFilter: 1021 | m_ObjectHideFlags: 0 1022 | m_CorrespondingSourceObject: {fileID: 0} 1023 | m_PrefabInstance: {fileID: 0} 1024 | m_PrefabAsset: {fileID: 0} 1025 | m_GameObject: {fileID: 1358299069} 1026 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 1027 | --- !u!114 &1358299073 1028 | MonoBehaviour: 1029 | m_ObjectHideFlags: 0 1030 | m_CorrespondingSourceObject: {fileID: 0} 1031 | m_PrefabInstance: {fileID: 0} 1032 | m_PrefabAsset: {fileID: 0} 1033 | m_GameObject: {fileID: 1358299069} 1034 | m_Enabled: 1 1035 | m_EditorHideFlags: 0 1036 | m_Script: {fileID: 11500000, guid: 6db8a80474874cc7581a1f6bf5e5958a, type: 3} 1037 | m_Name: 1038 | m_EditorClassIdentifier: 1039 | --- !u!114 &1358299074 1040 | MonoBehaviour: 1041 | m_ObjectHideFlags: 0 1042 | m_CorrespondingSourceObject: {fileID: 0} 1043 | m_PrefabInstance: {fileID: 0} 1044 | m_PrefabAsset: {fileID: 0} 1045 | m_GameObject: {fileID: 1358299069} 1046 | m_Enabled: 1 1047 | m_EditorHideFlags: 0 1048 | m_Script: {fileID: 11500000, guid: c20b350fc053bebea8a1d907d10860f8, type: 3} 1049 | m_Name: 1050 | m_EditorClassIdentifier: 1051 | terrainType: 1 1052 | surfaceType: 21 1053 | --- !u!4 &1358299075 1054 | Transform: 1055 | m_ObjectHideFlags: 0 1056 | m_CorrespondingSourceObject: {fileID: 0} 1057 | m_PrefabInstance: {fileID: 0} 1058 | m_PrefabAsset: {fileID: 0} 1059 | m_GameObject: {fileID: 1358299069} 1060 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1061 | m_LocalPosition: {x: -4.29, y: 0.120033264, z: -14.19} 1062 | m_LocalScale: {x: 6.0632, y: 5.1199994, z: 6.0632} 1063 | m_Children: [] 1064 | m_Father: {fileID: 0} 1065 | m_RootOrder: 16 1066 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1067 | --- !u!1 &1449687354 1068 | GameObject: 1069 | m_ObjectHideFlags: 0 1070 | m_CorrespondingSourceObject: {fileID: 0} 1071 | m_PrefabInstance: {fileID: 0} 1072 | m_PrefabAsset: {fileID: 0} 1073 | serializedVersion: 6 1074 | m_Component: 1075 | - component: {fileID: 1449687359} 1076 | - component: {fileID: 1449687358} 1077 | - component: {fileID: 1449687357} 1078 | - component: {fileID: 1449687356} 1079 | - component: {fileID: 1449687355} 1080 | m_Layer: 0 1081 | m_Name: StaticGround (1) 1082 | m_TagString: Untagged 1083 | m_Icon: {fileID: 0} 1084 | m_NavMeshLayer: 0 1085 | m_StaticEditorFlags: 0 1086 | m_IsActive: 1 1087 | --- !u!64 &1449687355 1088 | MeshCollider: 1089 | m_ObjectHideFlags: 0 1090 | m_CorrespondingSourceObject: {fileID: 0} 1091 | m_PrefabInstance: {fileID: 0} 1092 | m_PrefabAsset: {fileID: 0} 1093 | m_GameObject: {fileID: 1449687354} 1094 | m_Material: {fileID: 0} 1095 | m_IsTrigger: 0 1096 | m_Enabled: 1 1097 | serializedVersion: 4 1098 | m_Convex: 0 1099 | m_CookingOptions: 30 1100 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 1101 | --- !u!23 &1449687356 1102 | MeshRenderer: 1103 | m_ObjectHideFlags: 0 1104 | m_CorrespondingSourceObject: {fileID: 0} 1105 | m_PrefabInstance: {fileID: 0} 1106 | m_PrefabAsset: {fileID: 0} 1107 | m_GameObject: {fileID: 1449687354} 1108 | m_Enabled: 1 1109 | m_CastShadows: 1 1110 | m_ReceiveShadows: 1 1111 | m_DynamicOccludee: 1 1112 | m_MotionVectors: 1 1113 | m_LightProbeUsage: 1 1114 | m_ReflectionProbeUsage: 1 1115 | m_RayTracingMode: 2 1116 | m_RenderingLayerMask: 1 1117 | m_RendererPriority: 0 1118 | m_Materials: 1119 | - {fileID: 2100000, guid: 64f0c04087780084d933dbeab8ccfb50, type: 2} 1120 | m_StaticBatchInfo: 1121 | firstSubMesh: 0 1122 | subMeshCount: 0 1123 | m_StaticBatchRoot: {fileID: 0} 1124 | m_ProbeAnchor: {fileID: 0} 1125 | m_LightProbeVolumeOverride: {fileID: 0} 1126 | m_ScaleInLightmap: 1 1127 | m_ReceiveGI: 1 1128 | m_PreserveUVs: 0 1129 | m_IgnoreNormalsForChartDetection: 0 1130 | m_ImportantGI: 0 1131 | m_StitchLightmapSeams: 1 1132 | m_SelectedEditorRenderState: 3 1133 | m_MinimumChartSize: 4 1134 | m_AutoUVMaxDistance: 0.5 1135 | m_AutoUVMaxAngle: 89 1136 | m_LightmapParameters: {fileID: 0} 1137 | m_SortingLayerID: 0 1138 | m_SortingLayer: 0 1139 | m_SortingOrder: 0 1140 | --- !u!33 &1449687357 1141 | MeshFilter: 1142 | m_ObjectHideFlags: 0 1143 | m_CorrespondingSourceObject: {fileID: 0} 1144 | m_PrefabInstance: {fileID: 0} 1145 | m_PrefabAsset: {fileID: 0} 1146 | m_GameObject: {fileID: 1449687354} 1147 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 1148 | --- !u!114 &1449687358 1149 | MonoBehaviour: 1150 | m_ObjectHideFlags: 0 1151 | m_CorrespondingSourceObject: {fileID: 0} 1152 | m_PrefabInstance: {fileID: 0} 1153 | m_PrefabAsset: {fileID: 0} 1154 | m_GameObject: {fileID: 1449687354} 1155 | m_Enabled: 1 1156 | m_EditorHideFlags: 0 1157 | m_Script: {fileID: 11500000, guid: 1d07c4c311d4ebf7c8a3ca1785abbcb6, type: 3} 1158 | m_Name: 1159 | m_EditorClassIdentifier: 1160 | terrainType: 1 1161 | surfaceType: 0 1162 | --- !u!4 &1449687359 1163 | Transform: 1164 | m_ObjectHideFlags: 0 1165 | m_CorrespondingSourceObject: {fileID: 0} 1166 | m_PrefabInstance: {fileID: 0} 1167 | m_PrefabAsset: {fileID: 0} 1168 | m_GameObject: {fileID: 1449687354} 1169 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 1170 | m_LocalPosition: {x: -58.98, y: -0.35, z: 9.56} 1171 | m_LocalScale: {x: 11.869, y: 11.853061, z: 10.409} 1172 | m_Children: [] 1173 | m_Father: {fileID: 0} 1174 | m_RootOrder: 7 1175 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1176 | --- !u!1 &1489736923 1177 | GameObject: 1178 | m_ObjectHideFlags: 0 1179 | m_CorrespondingSourceObject: {fileID: 0} 1180 | m_PrefabInstance: {fileID: 0} 1181 | m_PrefabAsset: {fileID: 0} 1182 | serializedVersion: 6 1183 | m_Component: 1184 | - component: {fileID: 1489736926} 1185 | - component: {fileID: 1489736925} 1186 | - component: {fileID: 1489736924} 1187 | m_Layer: 0 1188 | m_Name: Mario (7) 1189 | m_TagString: Untagged 1190 | m_Icon: {fileID: 0} 1191 | m_NavMeshLayer: 0 1192 | m_StaticEditorFlags: 0 1193 | m_IsActive: 0 1194 | --- !u!114 &1489736924 1195 | MonoBehaviour: 1196 | m_ObjectHideFlags: 0 1197 | m_CorrespondingSourceObject: {fileID: 0} 1198 | m_PrefabInstance: {fileID: 0} 1199 | m_PrefabAsset: {fileID: 0} 1200 | m_GameObject: {fileID: 1489736923} 1201 | m_Enabled: 1 1202 | m_EditorHideFlags: 0 1203 | m_Script: {fileID: 11500000, guid: e4a2dace33993b19abc35c88b9b40604, type: 3} 1204 | m_Name: 1205 | m_EditorClassIdentifier: 1206 | cameraObject: {fileID: 963194225} 1207 | --- !u!114 &1489736925 1208 | MonoBehaviour: 1209 | m_ObjectHideFlags: 0 1210 | m_CorrespondingSourceObject: {fileID: 0} 1211 | m_PrefabInstance: {fileID: 0} 1212 | m_PrefabAsset: {fileID: 0} 1213 | m_GameObject: {fileID: 1489736923} 1214 | m_Enabled: 1 1215 | m_EditorHideFlags: 0 1216 | m_Script: {fileID: 11500000, guid: d31bc207218a3e604aff01c14f053e5e, type: 3} 1217 | m_Name: 1218 | m_EditorClassIdentifier: 1219 | material: {fileID: 2100000, guid: 01b49c8823ed89b8eb2df235f599bf12, type: 2} 1220 | --- !u!4 &1489736926 1221 | Transform: 1222 | m_ObjectHideFlags: 0 1223 | m_CorrespondingSourceObject: {fileID: 0} 1224 | m_PrefabInstance: {fileID: 0} 1225 | m_PrefabAsset: {fileID: 0} 1226 | m_GameObject: {fileID: 1489736923} 1227 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 1228 | m_LocalPosition: {x: -47.1, y: 5.47, z: 10.46} 1229 | m_LocalScale: {x: 1, y: 1, z: 1} 1230 | m_Children: [] 1231 | m_Father: {fileID: 0} 1232 | m_RootOrder: 13 1233 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1234 | --- !u!1 &1561688612 1235 | GameObject: 1236 | m_ObjectHideFlags: 0 1237 | m_CorrespondingSourceObject: {fileID: 0} 1238 | m_PrefabInstance: {fileID: 0} 1239 | m_PrefabAsset: {fileID: 0} 1240 | serializedVersion: 6 1241 | m_Component: 1242 | - component: {fileID: 1561688616} 1243 | - component: {fileID: 1561688613} 1244 | - component: {fileID: 1561688618} 1245 | - component: {fileID: 1561688615} 1246 | - component: {fileID: 1561688614} 1247 | - component: {fileID: 1561688617} 1248 | m_Layer: 0 1249 | m_Name: MovingPlatform 1250 | m_TagString: Untagged 1251 | m_Icon: {fileID: 0} 1252 | m_NavMeshLayer: 0 1253 | m_StaticEditorFlags: 0 1254 | m_IsActive: 1 1255 | --- !u!114 &1561688613 1256 | MonoBehaviour: 1257 | m_ObjectHideFlags: 0 1258 | m_CorrespondingSourceObject: {fileID: 0} 1259 | m_PrefabInstance: {fileID: 0} 1260 | m_PrefabAsset: {fileID: 0} 1261 | m_GameObject: {fileID: 1561688612} 1262 | m_Enabled: 1 1263 | m_EditorHideFlags: 0 1264 | m_Script: {fileID: 11500000, guid: c20b350fc053bebea8a1d907d10860f8, type: 3} 1265 | m_Name: 1266 | m_EditorClassIdentifier: 1267 | terrainType: 1 1268 | surfaceType: 21 1269 | --- !u!23 &1561688614 1270 | MeshRenderer: 1271 | m_ObjectHideFlags: 0 1272 | m_CorrespondingSourceObject: {fileID: 0} 1273 | m_PrefabInstance: {fileID: 0} 1274 | m_PrefabAsset: {fileID: 0} 1275 | m_GameObject: {fileID: 1561688612} 1276 | m_Enabled: 1 1277 | m_CastShadows: 1 1278 | m_ReceiveShadows: 1 1279 | m_DynamicOccludee: 1 1280 | m_MotionVectors: 1 1281 | m_LightProbeUsage: 1 1282 | m_ReflectionProbeUsage: 1 1283 | m_RayTracingMode: 2 1284 | m_RenderingLayerMask: 1 1285 | m_RendererPriority: 0 1286 | m_Materials: 1287 | - {fileID: 2100000, guid: 64f0c04087780084d933dbeab8ccfb50, type: 2} 1288 | m_StaticBatchInfo: 1289 | firstSubMesh: 0 1290 | subMeshCount: 0 1291 | m_StaticBatchRoot: {fileID: 0} 1292 | m_ProbeAnchor: {fileID: 0} 1293 | m_LightProbeVolumeOverride: {fileID: 0} 1294 | m_ScaleInLightmap: 1 1295 | m_ReceiveGI: 1 1296 | m_PreserveUVs: 0 1297 | m_IgnoreNormalsForChartDetection: 0 1298 | m_ImportantGI: 0 1299 | m_StitchLightmapSeams: 1 1300 | m_SelectedEditorRenderState: 3 1301 | m_MinimumChartSize: 4 1302 | m_AutoUVMaxDistance: 0.5 1303 | m_AutoUVMaxAngle: 89 1304 | m_LightmapParameters: {fileID: 0} 1305 | m_SortingLayerID: 0 1306 | m_SortingLayer: 0 1307 | m_SortingOrder: 0 1308 | --- !u!33 &1561688615 1309 | MeshFilter: 1310 | m_ObjectHideFlags: 0 1311 | m_CorrespondingSourceObject: {fileID: 0} 1312 | m_PrefabInstance: {fileID: 0} 1313 | m_PrefabAsset: {fileID: 0} 1314 | m_GameObject: {fileID: 1561688612} 1315 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 1316 | --- !u!4 &1561688616 1317 | Transform: 1318 | m_ObjectHideFlags: 0 1319 | m_CorrespondingSourceObject: {fileID: 0} 1320 | m_PrefabInstance: {fileID: 0} 1321 | m_PrefabAsset: {fileID: 0} 1322 | m_GameObject: {fileID: 1561688612} 1323 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1324 | m_LocalPosition: {x: -4.29, y: 0.120033264, z: 0.5} 1325 | m_LocalScale: {x: 6.0632, y: 5.1199994, z: 6.0632} 1326 | m_Children: [] 1327 | m_Father: {fileID: 0} 1328 | m_RootOrder: 6 1329 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1330 | --- !u!64 &1561688617 1331 | MeshCollider: 1332 | m_ObjectHideFlags: 0 1333 | m_CorrespondingSourceObject: {fileID: 0} 1334 | m_PrefabInstance: {fileID: 0} 1335 | m_PrefabAsset: {fileID: 0} 1336 | m_GameObject: {fileID: 1561688612} 1337 | m_Material: {fileID: 0} 1338 | m_IsTrigger: 0 1339 | m_Enabled: 1 1340 | serializedVersion: 4 1341 | m_Convex: 0 1342 | m_CookingOptions: 30 1343 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 1344 | --- !u!114 &1561688618 1345 | MonoBehaviour: 1346 | m_ObjectHideFlags: 0 1347 | m_CorrespondingSourceObject: {fileID: 0} 1348 | m_PrefabInstance: {fileID: 0} 1349 | m_PrefabAsset: {fileID: 0} 1350 | m_GameObject: {fileID: 1561688612} 1351 | m_Enabled: 1 1352 | m_EditorHideFlags: 0 1353 | m_Script: {fileID: 11500000, guid: 6db8a80474874cc7581a1f6bf5e5958a, type: 3} 1354 | m_Name: 1355 | m_EditorClassIdentifier: 1356 | --- !u!1 &1677693779 1357 | GameObject: 1358 | m_ObjectHideFlags: 0 1359 | m_CorrespondingSourceObject: {fileID: 0} 1360 | m_PrefabInstance: {fileID: 0} 1361 | m_PrefabAsset: {fileID: 0} 1362 | serializedVersion: 6 1363 | m_Component: 1364 | - component: {fileID: 1677693781} 1365 | - component: {fileID: 1677693780} 1366 | - component: {fileID: 1677693782} 1367 | m_Layer: 0 1368 | m_Name: Mario 1369 | m_TagString: Untagged 1370 | m_Icon: {fileID: 0} 1371 | m_NavMeshLayer: 0 1372 | m_StaticEditorFlags: 0 1373 | m_IsActive: 1 1374 | --- !u!114 &1677693780 1375 | MonoBehaviour: 1376 | m_ObjectHideFlags: 0 1377 | m_CorrespondingSourceObject: {fileID: 0} 1378 | m_PrefabInstance: {fileID: 0} 1379 | m_PrefabAsset: {fileID: 0} 1380 | m_GameObject: {fileID: 1677693779} 1381 | m_Enabled: 1 1382 | m_EditorHideFlags: 0 1383 | m_Script: {fileID: 11500000, guid: d31bc207218a3e604aff01c14f053e5e, type: 3} 1384 | m_Name: 1385 | m_EditorClassIdentifier: 1386 | material: {fileID: 2100000, guid: 01b49c8823ed89b8eb2df235f599bf12, type: 2} 1387 | --- !u!4 &1677693781 1388 | Transform: 1389 | m_ObjectHideFlags: 0 1390 | m_CorrespondingSourceObject: {fileID: 0} 1391 | m_PrefabInstance: {fileID: 0} 1392 | m_PrefabAsset: {fileID: 0} 1393 | m_GameObject: {fileID: 1677693779} 1394 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 1395 | m_LocalPosition: {x: -49.02, y: 1.39, z: 8.61} 1396 | m_LocalScale: {x: 1, y: 1, z: 1} 1397 | m_Children: [] 1398 | m_Father: {fileID: 0} 1399 | m_RootOrder: 2 1400 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1401 | --- !u!114 &1677693782 1402 | MonoBehaviour: 1403 | m_ObjectHideFlags: 0 1404 | m_CorrespondingSourceObject: {fileID: 0} 1405 | m_PrefabInstance: {fileID: 0} 1406 | m_PrefabAsset: {fileID: 0} 1407 | m_GameObject: {fileID: 1677693779} 1408 | m_Enabled: 1 1409 | m_EditorHideFlags: 0 1410 | m_Script: {fileID: 11500000, guid: e4a2dace33993b19abc35c88b9b40604, type: 3} 1411 | m_Name: 1412 | m_EditorClassIdentifier: 1413 | cameraObject: {fileID: 963194225} 1414 | --- !u!1 &1683195583 1415 | GameObject: 1416 | m_ObjectHideFlags: 0 1417 | m_CorrespondingSourceObject: {fileID: 0} 1418 | m_PrefabInstance: {fileID: 0} 1419 | m_PrefabAsset: {fileID: 0} 1420 | serializedVersion: 6 1421 | m_Component: 1422 | - component: {fileID: 1683195587} 1423 | - component: {fileID: 1683195588} 1424 | - component: {fileID: 1683195586} 1425 | - component: {fileID: 1683195585} 1426 | - component: {fileID: 1683195584} 1427 | m_Layer: 0 1428 | m_Name: DeathFloor 1429 | m_TagString: Untagged 1430 | m_Icon: {fileID: 0} 1431 | m_NavMeshLayer: 0 1432 | m_StaticEditorFlags: 0 1433 | m_IsActive: 1 1434 | --- !u!64 &1683195584 1435 | MeshCollider: 1436 | m_ObjectHideFlags: 0 1437 | m_CorrespondingSourceObject: {fileID: 0} 1438 | m_PrefabInstance: {fileID: 0} 1439 | m_PrefabAsset: {fileID: 0} 1440 | m_GameObject: {fileID: 1683195583} 1441 | m_Material: {fileID: 0} 1442 | m_IsTrigger: 0 1443 | m_Enabled: 1 1444 | serializedVersion: 4 1445 | m_Convex: 0 1446 | m_CookingOptions: 30 1447 | m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} 1448 | --- !u!23 &1683195585 1449 | MeshRenderer: 1450 | m_ObjectHideFlags: 0 1451 | m_CorrespondingSourceObject: {fileID: 0} 1452 | m_PrefabInstance: {fileID: 0} 1453 | m_PrefabAsset: {fileID: 0} 1454 | m_GameObject: {fileID: 1683195583} 1455 | m_Enabled: 1 1456 | m_CastShadows: 1 1457 | m_ReceiveShadows: 1 1458 | m_DynamicOccludee: 1 1459 | m_MotionVectors: 1 1460 | m_LightProbeUsage: 1 1461 | m_ReflectionProbeUsage: 1 1462 | m_RayTracingMode: 2 1463 | m_RenderingLayerMask: 1 1464 | m_RendererPriority: 0 1465 | m_Materials: 1466 | - {fileID: 2100000, guid: 64f0c04087780084d933dbeab8ccfb50, type: 2} 1467 | m_StaticBatchInfo: 1468 | firstSubMesh: 0 1469 | subMeshCount: 0 1470 | m_StaticBatchRoot: {fileID: 0} 1471 | m_ProbeAnchor: {fileID: 0} 1472 | m_LightProbeVolumeOverride: {fileID: 0} 1473 | m_ScaleInLightmap: 1 1474 | m_ReceiveGI: 1 1475 | m_PreserveUVs: 0 1476 | m_IgnoreNormalsForChartDetection: 0 1477 | m_ImportantGI: 0 1478 | m_StitchLightmapSeams: 1 1479 | m_SelectedEditorRenderState: 3 1480 | m_MinimumChartSize: 4 1481 | m_AutoUVMaxDistance: 0.5 1482 | m_AutoUVMaxAngle: 89 1483 | m_LightmapParameters: {fileID: 0} 1484 | m_SortingLayerID: 0 1485 | m_SortingLayer: 0 1486 | m_SortingOrder: 0 1487 | --- !u!33 &1683195586 1488 | MeshFilter: 1489 | m_ObjectHideFlags: 0 1490 | m_CorrespondingSourceObject: {fileID: 0} 1491 | m_PrefabInstance: {fileID: 0} 1492 | m_PrefabAsset: {fileID: 0} 1493 | m_GameObject: {fileID: 1683195583} 1494 | m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} 1495 | --- !u!4 &1683195587 1496 | Transform: 1497 | m_ObjectHideFlags: 0 1498 | m_CorrespondingSourceObject: {fileID: 0} 1499 | m_PrefabInstance: {fileID: 0} 1500 | m_PrefabAsset: {fileID: 0} 1501 | m_GameObject: {fileID: 1683195583} 1502 | m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} 1503 | m_LocalPosition: {x: 0, y: -4.98, z: 0} 1504 | m_LocalScale: {x: 200, y: 200, z: 1} 1505 | m_Children: [] 1506 | m_Father: {fileID: 0} 1507 | m_RootOrder: 5 1508 | m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} 1509 | --- !u!114 &1683195588 1510 | MonoBehaviour: 1511 | m_ObjectHideFlags: 0 1512 | m_CorrespondingSourceObject: {fileID: 0} 1513 | m_PrefabInstance: {fileID: 0} 1514 | m_PrefabAsset: {fileID: 0} 1515 | m_GameObject: {fileID: 1683195583} 1516 | m_Enabled: 1 1517 | m_EditorHideFlags: 0 1518 | m_Script: {fileID: 11500000, guid: 1d07c4c311d4ebf7c8a3ca1785abbcb6, type: 3} 1519 | m_Name: 1520 | m_EditorClassIdentifier: 1521 | terrainType: 2 1522 | surfaceType: 0 1523 | --- !u!1 &1790994032 1524 | GameObject: 1525 | m_ObjectHideFlags: 0 1526 | m_CorrespondingSourceObject: {fileID: 0} 1527 | m_PrefabInstance: {fileID: 0} 1528 | m_PrefabAsset: {fileID: 0} 1529 | serializedVersion: 6 1530 | m_Component: 1531 | - component: {fileID: 1790994035} 1532 | - component: {fileID: 1790994034} 1533 | - component: {fileID: 1790994033} 1534 | m_Layer: 0 1535 | m_Name: Mario (4) 1536 | m_TagString: Untagged 1537 | m_Icon: {fileID: 0} 1538 | m_NavMeshLayer: 0 1539 | m_StaticEditorFlags: 0 1540 | m_IsActive: 0 1541 | --- !u!114 &1790994033 1542 | MonoBehaviour: 1543 | m_ObjectHideFlags: 0 1544 | m_CorrespondingSourceObject: {fileID: 0} 1545 | m_PrefabInstance: {fileID: 0} 1546 | m_PrefabAsset: {fileID: 0} 1547 | m_GameObject: {fileID: 1790994032} 1548 | m_Enabled: 1 1549 | m_EditorHideFlags: 0 1550 | m_Script: {fileID: 11500000, guid: e4a2dace33993b19abc35c88b9b40604, type: 3} 1551 | m_Name: 1552 | m_EditorClassIdentifier: 1553 | cameraObject: {fileID: 963194225} 1554 | --- !u!114 &1790994034 1555 | MonoBehaviour: 1556 | m_ObjectHideFlags: 0 1557 | m_CorrespondingSourceObject: {fileID: 0} 1558 | m_PrefabInstance: {fileID: 0} 1559 | m_PrefabAsset: {fileID: 0} 1560 | m_GameObject: {fileID: 1790994032} 1561 | m_Enabled: 1 1562 | m_EditorHideFlags: 0 1563 | m_Script: {fileID: 11500000, guid: d31bc207218a3e604aff01c14f053e5e, type: 3} 1564 | m_Name: 1565 | m_EditorClassIdentifier: 1566 | material: {fileID: 2100000, guid: 01b49c8823ed89b8eb2df235f599bf12, type: 2} 1567 | --- !u!4 &1790994035 1568 | Transform: 1569 | m_ObjectHideFlags: 0 1570 | m_CorrespondingSourceObject: {fileID: 0} 1571 | m_PrefabInstance: {fileID: 0} 1572 | m_PrefabAsset: {fileID: 0} 1573 | m_GameObject: {fileID: 1790994032} 1574 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 1575 | m_LocalPosition: {x: -50.77, y: 5.47, z: 6.67} 1576 | m_LocalScale: {x: 1, y: 1, z: 1} 1577 | m_Children: [] 1578 | m_Father: {fileID: 0} 1579 | m_RootOrder: 11 1580 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1581 | -------------------------------------------------------------------------------- /Samples/SampleScene/ExampleScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9efb29e56b14b0295ac888083bda1aa3 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples/SampleScene/checker.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: checker 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 5, y: 5} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 5, y: 5} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 2800000, guid: f3c8067349308e64884bab83abe38647, type: 3} 44 | m_Scale: {x: 5, y: 5} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 1, b: 1, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Samples/SampleScene/checker.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 64f0c04087780084d933dbeab8ccfb50 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/SampleScene/checker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libsm64/libsm64-unity/21f67378a9834e0cd91616acc253ee49eafbf426/Samples/SampleScene/checker.png -------------------------------------------------------------------------------- /Samples/SampleScene/checker.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f3c8067349308e64884bab83abe38647 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | spriteSheet: 75 | serializedVersion: 2 76 | sprites: [] 77 | outline: [] 78 | physicsShape: [] 79 | bones: [] 80 | spriteID: 81 | internalID: 0 82 | vertices: [] 83 | indices: 84 | edges: [] 85 | weights: [] 86 | secondaryTextures: [] 87 | spritePackingTag: 88 | pSDRemoveMatte: 0 89 | pSDShowRemoveMatteOption: 0 90 | userData: 91 | assetBundleName: 92 | assetBundleVariant: 93 | -------------------------------------------------------------------------------- /Samples/SampleScene/pipe.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: pipe 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 1 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0, g: 1, b: 0, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Samples/SampleScene/pipe.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e1a3300cbd2dc00cba7c148ad17aa357 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/SampleScene/spicy.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: spicy 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: _EMISSION 13 | m_LightmapFlags: 2 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 0.23319061, b: 0.103773594, a: 1} 77 | - _EmissionColor: {r: 0.43527526, g: 0.36358288, b: 0.21678415, a: 1} 78 | -------------------------------------------------------------------------------- /Samples/SampleScene/spicy.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: db0929541b7d4e749826b59a52ac58e3 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.libsm64.libsm64-unity", 3 | "version": "0.0.1", 4 | "displayName": "LibSM64 for Unity", 5 | "description": "Embeddable Mario", 6 | "unity": "2019.3", 7 | "samples": [{ 8 | "displayName": "Sample Scene", 9 | "description": "A sample scene", 10 | "path": "Samples/SampleScene" 11 | }] 12 | } 13 | -------------------------------------------------------------------------------- /package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 29de0eda0918d7d99b38a972938f46d0 3 | PackageManifestImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | --------------------------------------------------------------------------------