├── .gitignore ├── Assets ├── Plugins.meta ├── Plugins │ ├── WebGL.meta │ └── WebGL │ │ ├── Microphone.cs │ │ ├── Microphone.cs.meta │ │ ├── MicrophonePlugin.jslib │ │ └── MicrophonePlugin.jslib.meta ├── UnityWebGLMicrophone.meta └── UnityWebGLMicrophone │ ├── Scenes.meta │ ├── Scenes │ ├── DisplayMics.unity │ └── DisplayMics.unity.meta │ ├── Scripts.meta │ └── Scripts │ ├── DisplayMics.cs │ └── DisplayMics.cs.meta ├── Build ├── ScriptInstallServer.cmd ├── ScriptStartServer.cmd ├── ServerNode.js ├── index.html └── package.json ├── LICENSE ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset └── UnityConnectSettings.asset ├── README.md ├── Test ├── ScriptInstallServer.cmd ├── ScriptStartServer.cmd ├── ServerNode.js ├── index.html └── package.json ├── images └── image_1.png └── open_vs_code.cmd /.gitignore: -------------------------------------------------------------------------------- 1 | Library/ 2 | Temp/ 3 | .vs/ 4 | obj/ 5 | UnityWebGLMicrophone.sln 6 | Assembly-CSharp.csproj 7 | Assembly-CSharp-firstpass.csproj 8 | Test/package-lock.json 9 | Test/node_modules/ 10 | UnityWebGLMicrophone.csproj 11 | UnityWebGLMicrophone.Plugins.csproj 12 | Build/Build/ 13 | Build/node_modules/ 14 | Build/TemplateData/ 15 | -------------------------------------------------------------------------------- /Assets/Plugins.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d9b77510df599ef43b1b53c50b9a6ef4 3 | folderAsset: yes 4 | timeCreated: 1482170526 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Plugins/WebGL.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 74a55658d47885d45adbb75603a9374f 3 | folderAsset: yes 4 | timeCreated: 1482170538 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Plugins/WebGL/Microphone.cs: -------------------------------------------------------------------------------- 1 | #if UNITY_WEBGL && !UNITY_EDITOR 2 | 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Runtime.InteropServices; 6 | 7 | namespace UnityEngine 8 | { 9 | public class Microphone 10 | { 11 | [DllImport("__Internal")] 12 | public static extern void Init(); 13 | 14 | [DllImport("__Internal")] 15 | public static extern void QueryAudioInput(); 16 | 17 | [DllImport("__Internal")] 18 | private static extern int GetNumberOfMicrophones(); 19 | 20 | [DllImport("__Internal")] 21 | private static extern string GetMicrophoneDeviceName(int index); 22 | 23 | [DllImport("__Internal")] 24 | private static extern float GetMicrophoneVolume(int index); 25 | 26 | private static List _sActions = new List(); 27 | 28 | public static void Update() 29 | { 30 | for (int i = 0; i < _sActions.Count; ++i) 31 | { 32 | Action action = _sActions[i]; 33 | action.Invoke(); 34 | } 35 | } 36 | 37 | public static string[] devices 38 | { 39 | get 40 | { 41 | List list = new List(); 42 | int size = GetNumberOfMicrophones(); 43 | for (int index = 0; index < size; ++index) 44 | { 45 | string deviceName = GetMicrophoneDeviceName(index); 46 | list.Add(deviceName); 47 | } 48 | return list.ToArray(); 49 | } 50 | } 51 | 52 | public static float[] volumes 53 | { 54 | get 55 | { 56 | List list = new List(); 57 | int size = GetNumberOfMicrophones(); 58 | for (int index = 0; index < size; ++index) 59 | { 60 | float volume = GetMicrophoneVolume(index); 61 | list.Add(volume); 62 | } 63 | return list.ToArray(); 64 | } 65 | } 66 | 67 | public static bool IsRecording(string deviceName) 68 | { 69 | return false; 70 | } 71 | 72 | public static void GetDeviceCaps(string deviceName, out int minFreq, out int maxFreq) 73 | { 74 | minFreq = 0; 75 | maxFreq = 0; 76 | } 77 | 78 | public static void End(string deviceName) 79 | { 80 | } 81 | } 82 | } 83 | 84 | #endif -------------------------------------------------------------------------------- /Assets/Plugins/WebGL/Microphone.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dc8de8dbe3174d24aaf7352e9ff48966 3 | timeCreated: 1482170647 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Plugins/WebGL/MicrophonePlugin.jslib: -------------------------------------------------------------------------------- 1 | var MicrophonePlugin = { 2 | 3 | buffer: undefined, 4 | 5 | Init: function() { 6 | 7 | console.log("Init:"); 8 | 9 | // START - used to read the volume 10 | document.volume = 0; 11 | var byteOffset = 0; 12 | var length = 1024; 13 | this.buffer = new ArrayBuffer(4 * length); 14 | document.dataArray = new Float32Array(this.buffer, byteOffset, length); 15 | // END - used to read the volume 16 | 17 | navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia; 18 | 19 | if (navigator.getUserMedia) { 20 | 21 | var constraints = { 22 | audio: { 23 | optional: [{ 24 | sourceId: "audioSource" 25 | }] 26 | } 27 | }; 28 | navigator.getUserMedia = ( navigator.getUserMedia || 29 | navigator.webkitGetUserMedia || 30 | navigator.mozGetUserMedia || 31 | navigator.msGetUserMedia); 32 | navigator.getUserMedia(constraints, function(stream) { 33 | console.log('navigator.getUserMedia successCallback: ', stream); 34 | 35 | document.position = 0; 36 | 37 | document.audioContext = new AudioContext(); 38 | document.tempSize = 1024; 39 | document.tempArray = new Float32Array(document.tempSize) 40 | document.analyser = document.audioContext.createAnalyser(); 41 | document.analyser.minDecibels = -90; 42 | document.analyser.maxDecibels = -10; 43 | document.analyser.smoothingTimeConstant = 0.85; 44 | 45 | document.mediaRecorder = new MediaRecorder(stream); 46 | 47 | document.source = document.audioContext.createMediaStreamSource(stream); 48 | 49 | document.source.connect(document.analyser); 50 | 51 | document.mediaRecorder.start(); 52 | console.log(document.mediaRecorder.state); 53 | 54 | document.readDataOnInterval = function() { 55 | 56 | if (document.dataArray == undefined) { 57 | setTimeout(document.readDataOnInterval, 250); //wait to be set 58 | return; 59 | } 60 | 61 | document.tempInterval = Math.floor(document.tempSize / document.dataArray.length * 250); 62 | 63 | // read the next chunk after interval 64 | setTimeout(document.readDataOnInterval, document.tempInterval); //if mic is still active 65 | 66 | if (document.dataArray == undefined) { 67 | return; 68 | } 69 | 70 | //read the temp data buffer 71 | document.analyser.getFloatTimeDomainData(document.tempArray); 72 | 73 | // use the amplitude to get volume 74 | document.volume = 0; 75 | 76 | var j = (document.position + document.dataArray.length - document.tempSize) % document.dataArray.length; 77 | for (var i = 0; i < document.tempSize; ++i) { 78 | document.volume = Math.max(document.volume, Math.abs(document.tempArray[i])); 79 | document.dataArray[j] = document.tempArray[i]; 80 | j = (j + 1) % document.dataArray.length; 81 | } 82 | document.position = (document.position + document.tempSize) % document.dataArray.length; 83 | 84 | }; 85 | 86 | document.readDataOnInterval(); 87 | 88 | 89 | }, function(error) { 90 | console.error('navigator.getUserMedia errorCallback: ', error); 91 | }); 92 | } 93 | }, 94 | 95 | QueryAudioInput: function() { 96 | 97 | console.log("QueryAudioInput"); 98 | 99 | document.mMicrophones = []; 100 | 101 | if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) { 102 | console.log("enumerateDevices() not supported."); 103 | } else { 104 | // List microphones 105 | navigator.mediaDevices.enumerateDevices() 106 | .then(function(devices) { 107 | devices.forEach(function(device) { 108 | console.log("QueryAudioInput: kind="+device.kind + " device=", device, " label=" + device.label); 109 | if (device.kind === 'audioinput') { 110 | document.mMicrophones.push(device.label); 111 | } 112 | }); 113 | }) 114 | .catch(function(err) { 115 | console.error(err.name + ": " + err.message); 116 | }); 117 | } 118 | }, 119 | 120 | GetNumberOfMicrophones: function() { 121 | console.log("GetNumberOfMicrophones"); 122 | var microphones = document.mMicrophones; 123 | if (microphones == undefined) { 124 | console.log("GetNumberOfMicrophones", 0); 125 | return 0; 126 | } 127 | console.log("GetNumberOfMicrophones length="+microphones.length); 128 | return microphones.length; 129 | }, 130 | 131 | GetMicrophoneDeviceName: function(index) { 132 | //console.log("GetMicrophoneDeviceName"); 133 | var returnStr = "Not Set"; 134 | var microphones = document.mMicrophones; 135 | if (microphones != undefined) { 136 | if (index >= 0 && index < microphones.length) { 137 | if (microphones[index] != undefined) { 138 | returnStr = microphones[index]; 139 | } 140 | } 141 | } 142 | console.log("GetMicrophoneDeviceName", returnStr); 143 | var buffer = _malloc(lengthBytesUTF8(returnStr) + 1); 144 | writeStringToMemory(returnStr, buffer); 145 | return buffer; 146 | }, 147 | 148 | GetMicrophoneVolume: function(index) { 149 | console.log("GetMicrophoneVolume"); 150 | if (document.volume == undefined) { 151 | return 0; 152 | } 153 | console.log("GetMicrophoneVolume", document.volume); 154 | return document.volume; 155 | } 156 | }; 157 | 158 | mergeInto(LibraryManager.library, MicrophonePlugin); 159 | -------------------------------------------------------------------------------- /Assets/Plugins/WebGL/MicrophonePlugin.jslib.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 896ade07724ca1c46ba94e7dc026f82e 3 | timeCreated: 1482170554 4 | licenseType: Pro 5 | PluginImporter: 6 | serializedVersion: 1 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | Any: 13 | enabled: 0 14 | settings: {} 15 | Editor: 16 | enabled: 0 17 | settings: 18 | DefaultValueInitialized: true 19 | WebGL: 20 | enabled: 1 21 | settings: {} 22 | userData: 23 | assetBundleName: 24 | assetBundleVariant: 25 | -------------------------------------------------------------------------------- /Assets/UnityWebGLMicrophone.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 16522159619a9f5468fc4624dda4714f 3 | folderAsset: yes 4 | timeCreated: 1482170360 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/UnityWebGLMicrophone/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4708dd376578885429fdc9b7620d9717 3 | folderAsset: yes 4 | timeCreated: 1482170372 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/UnityWebGLMicrophone/Scenes/DisplayMics.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: 7 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, 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: 0 28 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 29 | m_HaloStrength: 0.5 30 | m_FlareStrength: 1 31 | m_FlareFadeSpeed: 3 32 | m_HaloTexture: {fileID: 0} 33 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 34 | m_DefaultReflectionMode: 0 35 | m_DefaultReflectionResolution: 128 36 | m_ReflectionBounces: 1 37 | m_ReflectionIntensity: 1 38 | m_CustomReflection: {fileID: 0} 39 | m_Sun: {fileID: 0} 40 | m_IndirectSpecularColor: {r: 0.44657844, g: 0.49641222, b: 0.57481694, a: 1} 41 | --- !u!157 &3 42 | LightmapSettings: 43 | m_ObjectHideFlags: 0 44 | serializedVersion: 7 45 | m_GIWorkflowMode: 0 46 | m_GISettings: 47 | serializedVersion: 2 48 | m_BounceScale: 1 49 | m_IndirectOutputScale: 1 50 | m_AlbedoBoost: 1 51 | m_TemporalCoherenceThreshold: 1 52 | m_EnvironmentLightingMode: 0 53 | m_EnableBakedLightmaps: 1 54 | m_EnableRealtimeLightmaps: 1 55 | m_LightmapEditorSettings: 56 | serializedVersion: 4 57 | m_Resolution: 2 58 | m_BakeResolution: 40 59 | m_TextureWidth: 1024 60 | m_TextureHeight: 1024 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_Padding: 2 66 | m_LightmapParameters: {fileID: 0} 67 | m_LightmapsBakeMode: 1 68 | m_TextureCompression: 1 69 | m_DirectLightInLightProbes: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_LightingDataAsset: {fileID: 0} 75 | m_RuntimeCPUUsage: 25 76 | --- !u!196 &4 77 | NavMeshSettings: 78 | serializedVersion: 2 79 | m_ObjectHideFlags: 0 80 | m_BuildSettings: 81 | serializedVersion: 2 82 | agentTypeID: 0 83 | agentRadius: 0.5 84 | agentHeight: 2 85 | agentSlope: 45 86 | agentClimb: 0.4 87 | ledgeDropHeight: 0 88 | maxJumpAcrossDistance: 0 89 | minRegionArea: 2 90 | manualCellSize: 0 91 | cellSize: 0.16666667 92 | accuratePlacement: 0 93 | m_NavMeshData: {fileID: 0} 94 | --- !u!1 &643666789 95 | GameObject: 96 | m_ObjectHideFlags: 0 97 | m_PrefabParentObject: {fileID: 0} 98 | m_PrefabInternal: {fileID: 0} 99 | serializedVersion: 5 100 | m_Component: 101 | - component: {fileID: 643666794} 102 | - component: {fileID: 643666793} 103 | - component: {fileID: 643666792} 104 | - component: {fileID: 643666791} 105 | - component: {fileID: 643666790} 106 | m_Layer: 0 107 | m_Name: Main Camera 108 | m_TagString: MainCamera 109 | m_Icon: {fileID: 0} 110 | m_NavMeshLayer: 0 111 | m_StaticEditorFlags: 0 112 | m_IsActive: 1 113 | --- !u!81 &643666790 114 | AudioListener: 115 | m_ObjectHideFlags: 0 116 | m_PrefabParentObject: {fileID: 0} 117 | m_PrefabInternal: {fileID: 0} 118 | m_GameObject: {fileID: 643666789} 119 | m_Enabled: 1 120 | --- !u!124 &643666791 121 | Behaviour: 122 | m_ObjectHideFlags: 0 123 | m_PrefabParentObject: {fileID: 0} 124 | m_PrefabInternal: {fileID: 0} 125 | m_GameObject: {fileID: 643666789} 126 | m_Enabled: 1 127 | --- !u!92 &643666792 128 | Behaviour: 129 | m_ObjectHideFlags: 0 130 | m_PrefabParentObject: {fileID: 0} 131 | m_PrefabInternal: {fileID: 0} 132 | m_GameObject: {fileID: 643666789} 133 | m_Enabled: 1 134 | --- !u!20 &643666793 135 | Camera: 136 | m_ObjectHideFlags: 0 137 | m_PrefabParentObject: {fileID: 0} 138 | m_PrefabInternal: {fileID: 0} 139 | m_GameObject: {fileID: 643666789} 140 | m_Enabled: 1 141 | serializedVersion: 2 142 | m_ClearFlags: 2 143 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 144 | m_NormalizedViewPortRect: 145 | serializedVersion: 2 146 | x: 0 147 | y: 0 148 | width: 1 149 | height: 1 150 | near clip plane: 0.3 151 | far clip plane: 1000 152 | field of view: 60 153 | orthographic: 0 154 | orthographic size: 5 155 | m_Depth: -1 156 | m_CullingMask: 157 | serializedVersion: 2 158 | m_Bits: 4294967295 159 | m_RenderingPath: -1 160 | m_TargetTexture: {fileID: 0} 161 | m_TargetDisplay: 0 162 | m_TargetEye: 3 163 | m_HDR: 0 164 | m_OcclusionCulling: 1 165 | m_StereoConvergence: 10 166 | m_StereoSeparation: 0.022 167 | m_StereoMirrorMode: 0 168 | --- !u!4 &643666794 169 | Transform: 170 | m_ObjectHideFlags: 0 171 | m_PrefabParentObject: {fileID: 0} 172 | m_PrefabInternal: {fileID: 0} 173 | m_GameObject: {fileID: 643666789} 174 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 175 | m_LocalPosition: {x: 0, y: 1, z: -10} 176 | m_LocalScale: {x: 1, y: 1, z: 1} 177 | m_Children: [] 178 | m_Father: {fileID: 0} 179 | m_RootOrder: 0 180 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 181 | --- !u!1 &976824612 182 | GameObject: 183 | m_ObjectHideFlags: 0 184 | m_PrefabParentObject: {fileID: 0} 185 | m_PrefabInternal: {fileID: 0} 186 | serializedVersion: 5 187 | m_Component: 188 | - component: {fileID: 976824614} 189 | - component: {fileID: 976824613} 190 | m_Layer: 0 191 | m_Name: Directional Light 192 | m_TagString: Untagged 193 | m_Icon: {fileID: 0} 194 | m_NavMeshLayer: 0 195 | m_StaticEditorFlags: 0 196 | m_IsActive: 1 197 | --- !u!108 &976824613 198 | Light: 199 | m_ObjectHideFlags: 0 200 | m_PrefabParentObject: {fileID: 0} 201 | m_PrefabInternal: {fileID: 0} 202 | m_GameObject: {fileID: 976824612} 203 | m_Enabled: 1 204 | serializedVersion: 7 205 | m_Type: 1 206 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 207 | m_Intensity: 1 208 | m_Range: 10 209 | m_SpotAngle: 30 210 | m_CookieSize: 10 211 | m_Shadows: 212 | m_Type: 2 213 | m_Resolution: -1 214 | m_CustomResolution: -1 215 | m_Strength: 1 216 | m_Bias: 0.05 217 | m_NormalBias: 0.4 218 | m_NearPlane: 0.2 219 | m_Cookie: {fileID: 0} 220 | m_DrawHalo: 0 221 | m_Flare: {fileID: 0} 222 | m_RenderMode: 0 223 | m_CullingMask: 224 | serializedVersion: 2 225 | m_Bits: 4294967295 226 | m_Lightmapping: 4 227 | m_AreaSize: {x: 1, y: 1} 228 | m_BounceIntensity: 1 229 | m_ShadowRadius: 0 230 | m_ShadowAngle: 0 231 | --- !u!4 &976824614 232 | Transform: 233 | m_ObjectHideFlags: 0 234 | m_PrefabParentObject: {fileID: 0} 235 | m_PrefabInternal: {fileID: 0} 236 | m_GameObject: {fileID: 976824612} 237 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 238 | m_LocalPosition: {x: 0, y: 3, z: 0} 239 | m_LocalScale: {x: 1, y: 1, z: 1} 240 | m_Children: [] 241 | m_Father: {fileID: 0} 242 | m_RootOrder: 1 243 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 244 | --- !u!1 &1051761611 245 | GameObject: 246 | m_ObjectHideFlags: 0 247 | m_PrefabParentObject: {fileID: 0} 248 | m_PrefabInternal: {fileID: 0} 249 | serializedVersion: 5 250 | m_Component: 251 | - component: {fileID: 1051761613} 252 | - component: {fileID: 1051761612} 253 | m_Layer: 0 254 | m_Name: DisplayMics 255 | m_TagString: Untagged 256 | m_Icon: {fileID: 0} 257 | m_NavMeshLayer: 0 258 | m_StaticEditorFlags: 0 259 | m_IsActive: 1 260 | --- !u!114 &1051761612 261 | MonoBehaviour: 262 | m_ObjectHideFlags: 0 263 | m_PrefabParentObject: {fileID: 0} 264 | m_PrefabInternal: {fileID: 0} 265 | m_GameObject: {fileID: 1051761611} 266 | m_Enabled: 1 267 | m_EditorHideFlags: 0 268 | m_Script: {fileID: 11500000, guid: 2eb2827cf8e95be4d97d539cc91c6fd8, type: 3} 269 | m_Name: 270 | m_EditorClassIdentifier: 271 | --- !u!4 &1051761613 272 | Transform: 273 | m_ObjectHideFlags: 0 274 | m_PrefabParentObject: {fileID: 0} 275 | m_PrefabInternal: {fileID: 0} 276 | m_GameObject: {fileID: 1051761611} 277 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 278 | m_LocalPosition: {x: 0, y: 0, z: 0} 279 | m_LocalScale: {x: 1, y: 1, z: 1} 280 | m_Children: [] 281 | m_Father: {fileID: 0} 282 | m_RootOrder: 2 283 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 284 | -------------------------------------------------------------------------------- /Assets/UnityWebGLMicrophone/Scenes/DisplayMics.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 60014a8c4f0852447ad1dfd9290e18b5 3 | timeCreated: 1482170986 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UnityWebGLMicrophone/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bb31f595ab599de49a84fe9f341bb267 3 | folderAsset: yes 4 | timeCreated: 1482170948 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/UnityWebGLMicrophone/Scripts/DisplayMics.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace UnityWebGLMicrophone 4 | { 5 | public class DisplayMics : MonoBehaviour 6 | { 7 | #if UNITY_WEBGL && !UNITY_EDITOR 8 | void Awake() 9 | { 10 | Microphone.Init(); 11 | Microphone.QueryAudioInput(); 12 | } 13 | #endif 14 | 15 | #if UNITY_WEBGL && !UNITY_EDITOR 16 | void Update() 17 | { 18 | Microphone.Update(); 19 | } 20 | #endif 21 | 22 | void OnGUI() 23 | { 24 | GUILayout.BeginVertical(GUILayout.Height(Screen.height)); 25 | GUILayout.FlexibleSpace(); 26 | 27 | string[] devices = Microphone.devices; 28 | 29 | #if UNITY_WEBGL && !UNITY_EDITOR 30 | float[] volumes = Microphone.volumes; 31 | #endif 32 | 33 | GUILayout.BeginHorizontal(GUILayout.Width(Screen.width)); 34 | GUILayout.FlexibleSpace(); 35 | GUILayout.Label(string.Format("Microphone count={0}", devices.Length)); 36 | GUILayout.FlexibleSpace(); 37 | GUILayout.EndHorizontal(); 38 | 39 | for (int index = 0; index < devices.Length; ++index) 40 | { 41 | string deviceName = devices[index]; 42 | if (deviceName == null) 43 | { 44 | deviceName = string.Empty; 45 | } 46 | 47 | GUILayout.BeginHorizontal(GUILayout.Width(Screen.width)); 48 | GUILayout.FlexibleSpace(); 49 | #if UNITY_WEBGL && !UNITY_EDITOR 50 | GUILayout.Label(string.Format("Device Name={0} Volume={1}", deviceName, volumes[index])); 51 | #else 52 | GUILayout.Label(string.Format("Device Name={0}", deviceName)); 53 | #endif 54 | GUILayout.FlexibleSpace(); 55 | GUILayout.EndHorizontal(); 56 | } 57 | 58 | GUILayout.FlexibleSpace(); 59 | GUILayout.EndVertical(); 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /Assets/UnityWebGLMicrophone/Scripts/DisplayMics.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2eb2827cf8e95be4d97d539cc91c6fd8 3 | timeCreated: 1482171001 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Build/ScriptInstallServer.cmd: -------------------------------------------------------------------------------- 1 | CALL npm install 2 | PAUSE 3 | -------------------------------------------------------------------------------- /Build/ScriptStartServer.cmd: -------------------------------------------------------------------------------- 1 | start "" "http://localhost:5001/index.html" 2 | node ServerNode.js 3 | -------------------------------------------------------------------------------- /Build/ServerNode.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const app = express(); 3 | app.use(function (req, res, next) { 4 | res.setHeader('Access-Control-Allow-Origin', '*'); 5 | next(); 6 | }); 7 | 8 | app.use(express.static('.')); 9 | 10 | app.use(express.static('..')); 11 | 12 | app.listen(5001, function () { 13 | console.log('Example app listening on port 5001!'); 14 | }) 15 | -------------------------------------------------------------------------------- /Build/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Unity WebGL Player | UnityWebGLMicrophone 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 |
17 |
18 | 23 |
24 | 25 | -------------------------------------------------------------------------------- /Build/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chromanode", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "express": "^4.14.0", 13 | "nodemon": "^1.11.0" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Tim Graupmann 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | m_Volume: 1 7 | Rolloff Scale: 1 8 | Doppler Factor: 1 9 | Default Speaker Mode: 2 10 | m_SampleRate: 0 11 | m_DSPBufferSize: 0 12 | m_VirtualVoiceCount: 512 13 | m_RealVoiceCount: 32 14 | m_SpatializerPlugin: 15 | m_DisableAudio: 0 16 | m_VirtualizeEffects: 1 17 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 3 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_EnablePCM: 1 18 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 19 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 1 9 | path: Assets/UnityWebGLMicrophone/Scenes/DisplayMics.unity 10 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 3 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_DefaultBehaviorMode: 0 10 | m_SpritePackerMode: 2 11 | m_SpritePackerPaddingPower: 1 12 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd 13 | m_ProjectGenerationRootNamespace: 14 | m_UserGeneratedProjectSuffix: 15 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | - {fileID: 10782, guid: 0000000000000000f000000000000000, type: 0} 39 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} 40 | m_PreloadedShaders: [] 41 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 42 | type: 0} 43 | m_CustomRenderPipeline: {fileID: 0} 44 | m_TransparencySortMode: 0 45 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 46 | m_DefaultRenderingPath: 1 47 | m_DefaultMobileRenderingPath: 1 48 | m_TierSettings: [] 49 | m_LightmapStripping: 0 50 | m_FogStripping: 0 51 | m_InstancingStripping: 0 52 | m_LightmapKeepPlain: 1 53 | m_LightmapKeepDirCombined: 1 54 | m_LightmapKeepDynamicPlain: 1 55 | m_LightmapKeepDynamicDirCombined: 1 56 | m_LightmapKeepShadowMask: 1 57 | m_LightmapKeepSubtractive: 1 58 | m_FogKeepLinear: 1 59 | m_FogKeepExp: 1 60 | m_FogKeepExp2: 1 61 | m_AlbedoSwatchInfos: [] 62 | m_LightsUseLinearIntensity: 0 63 | m_LightsUseColorTemperature: 0 64 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_MinPenetrationForPenalty: 0.01 17 | m_BaumgarteScale: 0.2 18 | m_BaumgarteTimeOfImpactScale: 0.75 19 | m_TimeToSleep: 0.5 20 | m_LinearSleepTolerance: 0.01 21 | m_AngularSleepTolerance: 2 22 | m_QueriesHitTriggers: 1 23 | m_QueriesStartInColliders: 1 24 | m_ChangeStopsCallbacks: 0 25 | m_AlwaysShowColliders: 0 26 | m_ShowColliderSleep: 1 27 | m_ShowColliderContacts: 0 28 | m_ShowColliderAABB: 0 29 | m_ContactArrowScale: 0.2 30 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 31 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 32 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 33 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 34 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 35 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | productGUID: 2f813c2b1662dfb4cb33a66e2acb80ac 8 | AndroidProfiler: 0 9 | defaultScreenOrientation: 4 10 | targetDevice: 2 11 | useOnDemandResources: 0 12 | accelerometerFrequency: 60 13 | companyName: DefaultCompany 14 | productName: UnityWebGLMicrophone 15 | defaultCursor: {fileID: 0} 16 | cursorHotspot: {x: 0, y: 0} 17 | m_SplashScreenBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21176471, a: 1} 18 | m_ShowUnitySplashScreen: 1 19 | m_ShowUnitySplashLogo: 1 20 | m_SplashScreenOverlayOpacity: 1 21 | m_SplashScreenAnimation: 1 22 | m_SplashScreenLogoStyle: 1 23 | m_SplashScreenDrawMode: 0 24 | m_SplashScreenBackgroundAnimationZoom: 1 25 | m_SplashScreenLogoAnimationZoom: 1 26 | m_SplashScreenBackgroundLandscapeAspect: 1 27 | m_SplashScreenBackgroundPortraitAspect: 1 28 | m_SplashScreenBackgroundLandscapeUvs: 29 | serializedVersion: 2 30 | x: 0 31 | y: 0 32 | width: 1 33 | height: 1 34 | m_SplashScreenBackgroundPortraitUvs: 35 | serializedVersion: 2 36 | x: 0 37 | y: 0 38 | width: 1 39 | height: 1 40 | m_SplashScreenLogos: [] 41 | m_SplashScreenBackgroundLandscape: {fileID: 0} 42 | m_SplashScreenBackgroundPortrait: {fileID: 0} 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1024 46 | defaultScreenHeight: 768 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 0 51 | m_MTRendering: 1 52 | m_MobileMTRendering: 0 53 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 54 | iosShowActivityIndicatorOnLoading: -1 55 | androidShowActivityIndicatorOnLoading: -1 56 | tizenShowActivityIndicatorOnLoading: -1 57 | iosAppInBackgroundBehavior: 0 58 | displayResolutionDialog: 1 59 | iosAllowHTTPDownload: 1 60 | allowedAutorotateToPortrait: 1 61 | allowedAutorotateToPortraitUpsideDown: 1 62 | allowedAutorotateToLandscapeRight: 1 63 | allowedAutorotateToLandscapeLeft: 1 64 | useOSAutorotation: 1 65 | use32BitDisplayBuffer: 1 66 | disableDepthAndStencilBuffers: 0 67 | defaultIsFullScreen: 1 68 | defaultIsNativeResolution: 1 69 | runInBackground: 1 70 | captureSingleScreen: 0 71 | muteOtherAudioSources: 0 72 | Prepare IOS For Recording: 0 73 | submitAnalytics: 1 74 | usePlayerLog: 1 75 | bakeCollisionMeshes: 0 76 | forceSingleInstance: 0 77 | resizableWindow: 0 78 | useMacAppStoreValidation: 0 79 | macAppStoreCategory: public.app-category.games 80 | gpuSkinning: 0 81 | graphicsJobs: 0 82 | xboxPIXTextureCapture: 0 83 | xboxEnableAvatar: 0 84 | xboxEnableKinect: 0 85 | xboxEnableKinectAutoTracking: 0 86 | xboxEnableFitness: 0 87 | visibleInBackground: 0 88 | allowFullscreenSwitch: 1 89 | graphicsJobMode: 0 90 | macFullscreenMode: 2 91 | d3d9FullscreenMode: 1 92 | d3d11FullscreenMode: 1 93 | xboxSpeechDB: 0 94 | xboxEnableHeadOrientation: 0 95 | xboxEnableGuest: 0 96 | xboxEnablePIXSampling: 0 97 | n3dsDisableStereoscopicView: 0 98 | n3dsEnableSharedListOpt: 1 99 | n3dsEnableVSync: 0 100 | ignoreAlphaClear: 0 101 | xboxOneResolution: 0 102 | xboxOneMonoLoggingLevel: 0 103 | xboxOneLoggingLevel: 1 104 | videoMemoryForVertexBuffers: 0 105 | psp2PowerMode: 0 106 | psp2AcquireBGM: 1 107 | wiiUTVResolution: 0 108 | wiiUGamePadMSAA: 1 109 | wiiUSupportsNunchuk: 0 110 | wiiUSupportsClassicController: 0 111 | wiiUSupportsBalanceBoard: 0 112 | wiiUSupportsMotionPlus: 0 113 | wiiUSupportsProController: 0 114 | wiiUAllowScreenCapture: 1 115 | wiiUControllerCount: 0 116 | m_SupportedAspectRatios: 117 | 4:3: 1 118 | 5:4: 1 119 | 16:10: 1 120 | 16:9: 1 121 | Others: 1 122 | bundleVersion: 1.0 123 | preloadedAssets: [] 124 | metroInputSource: 0 125 | m_HolographicPauseOnTrackingLoss: 1 126 | xboxOneDisableKinectGpuReservation: 0 127 | xboxOneEnable7thCore: 0 128 | vrSettings: 129 | cardboard: 130 | depthFormat: 0 131 | enableTransitionView: 0 132 | daydream: 133 | depthFormat: 0 134 | useSustainedPerformanceMode: 0 135 | hololens: 136 | depthFormat: 1 137 | protectGraphicsMemory: 0 138 | useHDRDisplay: 0 139 | applicationIdentifier: 140 | Android: com.Company.ProductName 141 | Standalone: unity.DefaultCompany.UnityWebGLMicrophone 142 | Tizen: com.Company.ProductName 143 | iOS: com.Company.ProductName 144 | tvOS: com.Company.ProductName 145 | buildNumber: 146 | iOS: 0 147 | AndroidBundleVersionCode: 1 148 | AndroidMinSdkVersion: 16 149 | AndroidTargetSdkVersion: 0 150 | AndroidPreferredInstallLocation: 1 151 | aotOptions: 152 | stripEngineCode: 1 153 | iPhoneStrippingLevel: 0 154 | iPhoneScriptCallOptimization: 0 155 | ForceInternetPermission: 0 156 | ForceSDCardPermission: 0 157 | CreateWallpaper: 0 158 | APKExpansionFiles: 0 159 | keepLoadedShadersAlive: 0 160 | StripUnusedMeshComponents: 0 161 | VertexChannelCompressionMask: 162 | serializedVersion: 2 163 | m_Bits: 238 164 | iPhoneSdkVersion: 988 165 | iOSTargetOSVersionString: 166 | tvOSSdkVersion: 0 167 | tvOSRequireExtendedGameController: 0 168 | tvOSTargetOSVersionString: 169 | uIPrerenderedIcon: 0 170 | uIRequiresPersistentWiFi: 0 171 | uIRequiresFullScreen: 1 172 | uIStatusBarHidden: 1 173 | uIExitOnSuspend: 0 174 | uIStatusBarStyle: 0 175 | iPhoneSplashScreen: {fileID: 0} 176 | iPhoneHighResSplashScreen: {fileID: 0} 177 | iPhoneTallHighResSplashScreen: {fileID: 0} 178 | iPhone47inSplashScreen: {fileID: 0} 179 | iPhone55inPortraitSplashScreen: {fileID: 0} 180 | iPhone55inLandscapeSplashScreen: {fileID: 0} 181 | iPadPortraitSplashScreen: {fileID: 0} 182 | iPadHighResPortraitSplashScreen: {fileID: 0} 183 | iPadLandscapeSplashScreen: {fileID: 0} 184 | iPadHighResLandscapeSplashScreen: {fileID: 0} 185 | appleTVSplashScreen: {fileID: 0} 186 | tvOSSmallIconLayers: [] 187 | tvOSLargeIconLayers: [] 188 | tvOSTopShelfImageLayers: [] 189 | tvOSTopShelfImageWideLayers: [] 190 | iOSLaunchScreenType: 0 191 | iOSLaunchScreenPortrait: {fileID: 0} 192 | iOSLaunchScreenLandscape: {fileID: 0} 193 | iOSLaunchScreenBackgroundColor: 194 | serializedVersion: 2 195 | rgba: 0 196 | iOSLaunchScreenFillPct: 100 197 | iOSLaunchScreenSize: 100 198 | iOSLaunchScreenCustomXibPath: 199 | iOSLaunchScreeniPadType: 0 200 | iOSLaunchScreeniPadImage: {fileID: 0} 201 | iOSLaunchScreeniPadBackgroundColor: 202 | serializedVersion: 2 203 | rgba: 0 204 | iOSLaunchScreeniPadFillPct: 100 205 | iOSLaunchScreeniPadSize: 100 206 | iOSLaunchScreeniPadCustomXibPath: 207 | iOSDeviceRequirements: [] 208 | iOSURLSchemes: [] 209 | iOSBackgroundModes: 0 210 | iOSMetalForceHardShadows: 0 211 | metalEditorSupport: 1 212 | metalAPIValidation: 1 213 | iOSRenderExtraFrameOnPause: 1 214 | appleDeveloperTeamID: 215 | iOSManualSigningProvisioningProfileID: 216 | tvOSManualSigningProvisioningProfileID: 217 | appleEnableAutomaticSigning: 0 218 | AndroidTargetDevice: 0 219 | AndroidSplashScreenScale: 0 220 | androidSplashScreen: {fileID: 0} 221 | AndroidKeystoreName: 222 | AndroidKeyaliasName: 223 | AndroidTVCompatibility: 1 224 | AndroidIsGame: 1 225 | androidEnableBanner: 1 226 | m_AndroidBanners: 227 | - width: 320 228 | height: 180 229 | banner: {fileID: 0} 230 | androidGamepadSupportLevel: 0 231 | resolutionDialogBanner: {fileID: 0} 232 | m_BuildTargetIcons: [] 233 | m_BuildTargetBatching: [] 234 | m_BuildTargetGraphicsAPIs: [] 235 | m_BuildTargetVRSettings: [] 236 | openGLRequireES31: 0 237 | openGLRequireES31AEP: 0 238 | webPlayerTemplate: APPLICATION:Default 239 | m_TemplateCustomTags: {} 240 | wiiUTitleID: 0005000011000000 241 | wiiUGroupID: 00010000 242 | wiiUCommonSaveSize: 4096 243 | wiiUAccountSaveSize: 2048 244 | wiiUOlvAccessKey: 0 245 | wiiUTinCode: 0 246 | wiiUJoinGameId: 0 247 | wiiUJoinGameModeMask: 0000000000000000 248 | wiiUCommonBossSize: 0 249 | wiiUAccountBossSize: 0 250 | wiiUAddOnUniqueIDs: [] 251 | wiiUMainThreadStackSize: 3072 252 | wiiULoaderThreadStackSize: 1024 253 | wiiUSystemHeapSize: 128 254 | wiiUTVStartupScreen: {fileID: 0} 255 | wiiUGamePadStartupScreen: {fileID: 0} 256 | wiiUDrcBufferDisabled: 0 257 | wiiUProfilerLibPath: 258 | playModeTestRunnerEnabled: 0 259 | actionOnDotNetUnhandledException: 1 260 | enableInternalProfiler: 0 261 | logObjCUncaughtExceptions: 1 262 | enableCrashReportAPI: 0 263 | cameraUsageDescription: 264 | locationUsageDescription: 265 | microphoneUsageDescription: 266 | switchNetLibKey: 267 | switchSocketMemoryPoolSize: 6144 268 | switchSocketAllocatorPoolSize: 128 269 | switchSocketConcurrencyLimit: 14 270 | switchScreenResolutionBehavior: 2 271 | switchUseCPUProfiler: 0 272 | switchApplicationID: 0x01004b9000490000 273 | switchNSODependencies: 274 | switchTitleNames_0: 275 | switchTitleNames_1: 276 | switchTitleNames_2: 277 | switchTitleNames_3: 278 | switchTitleNames_4: 279 | switchTitleNames_5: 280 | switchTitleNames_6: 281 | switchTitleNames_7: 282 | switchTitleNames_8: 283 | switchTitleNames_9: 284 | switchTitleNames_10: 285 | switchTitleNames_11: 286 | switchPublisherNames_0: 287 | switchPublisherNames_1: 288 | switchPublisherNames_2: 289 | switchPublisherNames_3: 290 | switchPublisherNames_4: 291 | switchPublisherNames_5: 292 | switchPublisherNames_6: 293 | switchPublisherNames_7: 294 | switchPublisherNames_8: 295 | switchPublisherNames_9: 296 | switchPublisherNames_10: 297 | switchPublisherNames_11: 298 | switchIcons_0: {fileID: 0} 299 | switchIcons_1: {fileID: 0} 300 | switchIcons_2: {fileID: 0} 301 | switchIcons_3: {fileID: 0} 302 | switchIcons_4: {fileID: 0} 303 | switchIcons_5: {fileID: 0} 304 | switchIcons_6: {fileID: 0} 305 | switchIcons_7: {fileID: 0} 306 | switchIcons_8: {fileID: 0} 307 | switchIcons_9: {fileID: 0} 308 | switchIcons_10: {fileID: 0} 309 | switchIcons_11: {fileID: 0} 310 | switchSmallIcons_0: {fileID: 0} 311 | switchSmallIcons_1: {fileID: 0} 312 | switchSmallIcons_2: {fileID: 0} 313 | switchSmallIcons_3: {fileID: 0} 314 | switchSmallIcons_4: {fileID: 0} 315 | switchSmallIcons_5: {fileID: 0} 316 | switchSmallIcons_6: {fileID: 0} 317 | switchSmallIcons_7: {fileID: 0} 318 | switchSmallIcons_8: {fileID: 0} 319 | switchSmallIcons_9: {fileID: 0} 320 | switchSmallIcons_10: {fileID: 0} 321 | switchSmallIcons_11: {fileID: 0} 322 | switchManualHTML: 323 | switchAccessibleURLs: 324 | switchLegalInformation: 325 | switchMainThreadStackSize: 1048576 326 | switchPresenceGroupId: 327 | switchLogoHandling: 0 328 | switchReleaseVersion: 0 329 | switchDisplayVersion: 1.0.0 330 | switchStartupUserAccount: 0 331 | switchTouchScreenUsage: 0 332 | switchSupportedLanguagesMask: 0 333 | switchLogoType: 0 334 | switchApplicationErrorCodeCategory: 335 | switchUserAccountSaveDataSize: 0 336 | switchUserAccountSaveDataJournalSize: 0 337 | switchApplicationAttribute: 0 338 | switchCardSpecSize: -1 339 | switchCardSpecClock: -1 340 | switchRatingsMask: 0 341 | switchRatingsInt_0: 0 342 | switchRatingsInt_1: 0 343 | switchRatingsInt_2: 0 344 | switchRatingsInt_3: 0 345 | switchRatingsInt_4: 0 346 | switchRatingsInt_5: 0 347 | switchRatingsInt_6: 0 348 | switchRatingsInt_7: 0 349 | switchRatingsInt_8: 0 350 | switchRatingsInt_9: 0 351 | switchRatingsInt_10: 0 352 | switchRatingsInt_11: 0 353 | switchLocalCommunicationIds_0: 354 | switchLocalCommunicationIds_1: 355 | switchLocalCommunicationIds_2: 356 | switchLocalCommunicationIds_3: 357 | switchLocalCommunicationIds_4: 358 | switchLocalCommunicationIds_5: 359 | switchLocalCommunicationIds_6: 360 | switchLocalCommunicationIds_7: 361 | switchParentalControl: 0 362 | switchAllowsScreenshot: 1 363 | switchDataLossConfirmation: 0 364 | switchSupportedNpadStyles: 3 365 | switchSocketConfigEnabled: 0 366 | switchTcpInitialSendBufferSize: 32 367 | switchTcpInitialReceiveBufferSize: 64 368 | switchTcpAutoSendBufferSizeMax: 256 369 | switchTcpAutoReceiveBufferSizeMax: 256 370 | switchUdpSendBufferSize: 9 371 | switchUdpReceiveBufferSize: 42 372 | switchSocketBufferEfficiency: 4 373 | ps4NPAgeRating: 12 374 | ps4NPTitleSecret: 375 | ps4NPTrophyPackPath: 376 | ps4ParentalLevel: 1 377 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 378 | ps4Category: 0 379 | ps4MasterVersion: 01.00 380 | ps4AppVersion: 01.00 381 | ps4AppType: 0 382 | ps4ParamSfxPath: 383 | ps4VideoOutPixelFormat: 0 384 | ps4VideoOutInitialWidth: 1920 385 | ps4VideoOutBaseModeInitialWidth: 1920 386 | ps4VideoOutReprojectionRate: 120 387 | ps4PronunciationXMLPath: 388 | ps4PronunciationSIGPath: 389 | ps4BackgroundImagePath: 390 | ps4StartupImagePath: 391 | ps4SaveDataImagePath: 392 | ps4SdkOverride: 393 | ps4BGMPath: 394 | ps4ShareFilePath: 395 | ps4ShareOverlayImagePath: 396 | ps4PrivacyGuardImagePath: 397 | ps4NPtitleDatPath: 398 | ps4RemotePlayKeyAssignment: -1 399 | ps4RemotePlayKeyMappingDir: 400 | ps4PlayTogetherPlayerCount: 0 401 | ps4EnterButtonAssignment: 1 402 | ps4ApplicationParam1: 0 403 | ps4ApplicationParam2: 0 404 | ps4ApplicationParam3: 0 405 | ps4ApplicationParam4: 0 406 | ps4DownloadDataSize: 0 407 | ps4GarlicHeapSize: 2048 408 | ps4ProGarlicHeapSize: 2560 409 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 410 | ps4UseDebugIl2cppLibs: 0 411 | ps4pnSessions: 1 412 | ps4pnPresence: 1 413 | ps4pnFriends: 1 414 | ps4pnGameCustomData: 1 415 | playerPrefsSupport: 0 416 | restrictedAudioUsageRights: 0 417 | ps4UseResolutionFallback: 0 418 | ps4ReprojectionSupport: 0 419 | ps4UseAudio3dBackend: 0 420 | ps4SocialScreenEnabled: 0 421 | ps4ScriptOptimizationLevel: 3 422 | ps4Audio3dVirtualSpeakerCount: 14 423 | ps4attribCpuUsage: 0 424 | ps4PatchPkgPath: 425 | ps4PatchLatestPkgPath: 426 | ps4PatchChangeinfoPath: 427 | ps4PatchDayOne: 0 428 | ps4attribUserManagement: 0 429 | ps4attribMoveSupport: 0 430 | ps4attrib3DSupport: 0 431 | ps4attribShareSupport: 0 432 | ps4attribExclusiveVR: 0 433 | ps4disableAutoHideSplash: 0 434 | ps4videoRecordingFeaturesUsed: 0 435 | ps4contentSearchFeaturesUsed: 0 436 | ps4attribEyeToEyeDistanceSettingVR: 0 437 | ps4IncludedModules: [] 438 | monoEnv: 439 | psp2Splashimage: {fileID: 0} 440 | psp2NPTrophyPackPath: 441 | psp2NPSupportGBMorGJP: 0 442 | psp2NPAgeRating: 12 443 | psp2NPTitleDatPath: 444 | psp2NPCommsID: 445 | psp2NPCommunicationsID: 446 | psp2NPCommsPassphrase: 447 | psp2NPCommsSig: 448 | psp2ParamSfxPath: 449 | psp2ManualPath: 450 | psp2LiveAreaGatePath: 451 | psp2LiveAreaBackroundPath: 452 | psp2LiveAreaPath: 453 | psp2LiveAreaTrialPath: 454 | psp2PatchChangeInfoPath: 455 | psp2PatchOriginalPackage: 456 | psp2PackagePassword: F69AzBlax3CF3EDNhm3soLBPh71Yexui 457 | psp2KeystoneFile: 458 | psp2MemoryExpansionMode: 0 459 | psp2DRMType: 0 460 | psp2StorageType: 0 461 | psp2MediaCapacity: 0 462 | psp2DLCConfigPath: 463 | psp2ThumbnailPath: 464 | psp2BackgroundPath: 465 | psp2SoundPath: 466 | psp2TrophyCommId: 467 | psp2TrophyPackagePath: 468 | psp2PackagedResourcesPath: 469 | psp2SaveDataQuota: 10240 470 | psp2ParentalLevel: 1 471 | psp2ShortTitle: Not Set 472 | psp2ContentID: IV0000-ABCD12345_00-0123456789ABCDEF 473 | psp2Category: 0 474 | psp2MasterVersion: 01.00 475 | psp2AppVersion: 01.00 476 | psp2TVBootMode: 0 477 | psp2EnterButtonAssignment: 2 478 | psp2TVDisableEmu: 0 479 | psp2AllowTwitterDialog: 1 480 | psp2Upgradable: 0 481 | psp2HealthWarning: 0 482 | psp2UseLibLocation: 0 483 | psp2InfoBarOnStartup: 0 484 | psp2InfoBarColor: 0 485 | psp2UseDebugIl2cppLibs: 0 486 | psmSplashimage: {fileID: 0} 487 | splashScreenBackgroundSourceLandscape: {fileID: 0} 488 | splashScreenBackgroundSourcePortrait: {fileID: 0} 489 | spritePackerPolicy: 490 | webGLMemorySize: 256 491 | webGLExceptionSupport: 1 492 | webGLNameFilesAsHashes: 0 493 | webGLDataCaching: 0 494 | webGLDebugSymbols: 0 495 | webGLEmscriptenArgs: 496 | webGLModulesDirectory: 497 | webGLTemplate: APPLICATION:Default 498 | webGLAnalyzeBuildSize: 0 499 | webGLUseEmbeddedResources: 0 500 | webGLUseWasm: 0 501 | webGLCompressionFormat: 1 502 | scriptingDefineSymbols: {} 503 | platformArchitecture: {} 504 | scriptingBackend: {} 505 | incrementalIl2cppBuild: {} 506 | additionalIl2CppArgs: 507 | apiCompatibilityLevelPerPlatform: {} 508 | m_RenderingPath: 1 509 | m_MobileRenderingPath: 1 510 | metroPackageName: UnityWebGLMicrophone 511 | metroPackageVersion: 512 | metroCertificatePath: 513 | metroCertificatePassword: 514 | metroCertificateSubject: 515 | metroCertificateIssuer: 516 | metroCertificateNotAfter: 0000000000000000 517 | metroApplicationDescription: UnityWebGLMicrophone 518 | wsaImages: {} 519 | metroTileShortName: 520 | metroCommandLineArgsFile: 521 | metroTileShowName: 0 522 | metroMediumTileShowName: 0 523 | metroLargeTileShowName: 0 524 | metroWideTileShowName: 0 525 | metroDefaultTileSize: 1 526 | metroTileForegroundText: 2 527 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 528 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 529 | a: 1} 530 | metroSplashScreenUseBackgroundColor: 0 531 | platformCapabilities: {} 532 | metroFTAName: 533 | metroFTAFileTypes: [] 534 | metroProtocolName: 535 | metroCompilationOverrides: 1 536 | tizenProductDescription: 537 | tizenProductURL: 538 | tizenSigningProfileName: 539 | tizenGPSPermissions: 0 540 | tizenMicrophonePermissions: 0 541 | tizenDeploymentTarget: 542 | tizenDeploymentTargetType: 0 543 | tizenMinOSVersion: 1 544 | n3dsUseExtSaveData: 0 545 | n3dsCompressStaticMem: 1 546 | n3dsExtSaveDataNumber: 0x12345 547 | n3dsStackSize: 131072 548 | n3dsTargetPlatform: 2 549 | n3dsRegion: 7 550 | n3dsMediaSize: 0 551 | n3dsLogoStyle: 3 552 | n3dsTitle: GameName 553 | n3dsProductCode: 554 | n3dsApplicationId: 0xFF3FF 555 | stvDeviceAddress: 556 | stvProductDescription: 557 | stvProductAuthor: 558 | stvProductAuthorEmail: 559 | stvProductLink: 560 | stvProductCategory: 0 561 | XboxOneProductId: 562 | XboxOneUpdateKey: 563 | XboxOneSandboxId: 564 | XboxOneContentId: 565 | XboxOneTitleId: 566 | XboxOneSCId: 567 | XboxOneGameOsOverridePath: 568 | XboxOnePackagingOverridePath: 569 | XboxOneAppManifestOverridePath: 570 | XboxOnePackageEncryption: 0 571 | XboxOnePackageUpdateGranularity: 2 572 | XboxOneDescription: 573 | XboxOneLanguage: 574 | - enus 575 | XboxOneCapability: [] 576 | XboxOneGameRating: {} 577 | XboxOneIsContentPackage: 0 578 | XboxOneEnableGPUVariability: 0 579 | XboxOneSockets: {} 580 | XboxOneSplashScreen: {fileID: 0} 581 | XboxOneAllowedProductIds: [] 582 | XboxOnePersistentLocalStorageSize: 0 583 | xboxOneScriptCompiler: 0 584 | vrEditorSettings: 585 | daydream: 586 | daydreamIconForeground: {fileID: 0} 587 | daydreamIconBackground: {fileID: 0} 588 | cloudServicesEnabled: {} 589 | facebookSdkVersion: 7.9.1 590 | apiCompatibilityLevel: 2 591 | cloudProjectId: 8a88724e-3ca7-4e09-8d5e-feae04064612 592 | projectName: UnityWebGLMicrophone 593 | organizationId: tgraupmann 594 | cloudEnabled: 0 595 | enableNewInputSystem: 0 596 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 5.6.2f1 2 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 5 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Fastest 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | blendWeights: 1 21 | textureQuality: 1 22 | anisotropicTextures: 0 23 | antiAliasing: 0 24 | softParticles: 0 25 | softVegetation: 0 26 | realtimeReflectionProbes: 0 27 | billboardsFaceCameraPosition: 0 28 | vSyncCount: 0 29 | lodBias: 0.3 30 | maximumLODLevel: 0 31 | particleRaycastBudget: 4 32 | asyncUploadTimeSlice: 2 33 | asyncUploadBufferSize: 4 34 | excludedTargetPlatforms: [] 35 | - serializedVersion: 2 36 | name: Fast 37 | pixelLightCount: 0 38 | shadows: 0 39 | shadowResolution: 0 40 | shadowProjection: 1 41 | shadowCascades: 1 42 | shadowDistance: 20 43 | shadowNearPlaneOffset: 3 44 | shadowCascade2Split: 0.33333334 45 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 46 | blendWeights: 2 47 | textureQuality: 0 48 | anisotropicTextures: 0 49 | antiAliasing: 0 50 | softParticles: 0 51 | softVegetation: 0 52 | realtimeReflectionProbes: 0 53 | billboardsFaceCameraPosition: 0 54 | vSyncCount: 0 55 | lodBias: 0.4 56 | maximumLODLevel: 0 57 | particleRaycastBudget: 16 58 | asyncUploadTimeSlice: 2 59 | asyncUploadBufferSize: 4 60 | excludedTargetPlatforms: [] 61 | - serializedVersion: 2 62 | name: Simple 63 | pixelLightCount: 1 64 | shadows: 1 65 | shadowResolution: 0 66 | shadowProjection: 1 67 | shadowCascades: 1 68 | shadowDistance: 20 69 | shadowNearPlaneOffset: 3 70 | shadowCascade2Split: 0.33333334 71 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 72 | blendWeights: 2 73 | textureQuality: 0 74 | anisotropicTextures: 1 75 | antiAliasing: 0 76 | softParticles: 0 77 | softVegetation: 0 78 | realtimeReflectionProbes: 0 79 | billboardsFaceCameraPosition: 0 80 | vSyncCount: 1 81 | lodBias: 0.7 82 | maximumLODLevel: 0 83 | particleRaycastBudget: 64 84 | asyncUploadTimeSlice: 2 85 | asyncUploadBufferSize: 4 86 | excludedTargetPlatforms: [] 87 | - serializedVersion: 2 88 | name: Good 89 | pixelLightCount: 2 90 | shadows: 2 91 | shadowResolution: 1 92 | shadowProjection: 1 93 | shadowCascades: 2 94 | shadowDistance: 40 95 | shadowNearPlaneOffset: 3 96 | shadowCascade2Split: 0.33333334 97 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 98 | blendWeights: 2 99 | textureQuality: 0 100 | anisotropicTextures: 1 101 | antiAliasing: 0 102 | softParticles: 0 103 | softVegetation: 1 104 | realtimeReflectionProbes: 1 105 | billboardsFaceCameraPosition: 1 106 | vSyncCount: 1 107 | lodBias: 1 108 | maximumLODLevel: 0 109 | particleRaycastBudget: 256 110 | asyncUploadTimeSlice: 2 111 | asyncUploadBufferSize: 4 112 | excludedTargetPlatforms: [] 113 | - serializedVersion: 2 114 | name: Beautiful 115 | pixelLightCount: 3 116 | shadows: 2 117 | shadowResolution: 2 118 | shadowProjection: 1 119 | shadowCascades: 2 120 | shadowDistance: 70 121 | shadowNearPlaneOffset: 3 122 | shadowCascade2Split: 0.33333334 123 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 124 | blendWeights: 4 125 | textureQuality: 0 126 | anisotropicTextures: 2 127 | antiAliasing: 2 128 | softParticles: 1 129 | softVegetation: 1 130 | realtimeReflectionProbes: 1 131 | billboardsFaceCameraPosition: 1 132 | vSyncCount: 1 133 | lodBias: 1.5 134 | maximumLODLevel: 0 135 | particleRaycastBudget: 1024 136 | asyncUploadTimeSlice: 2 137 | asyncUploadBufferSize: 4 138 | excludedTargetPlatforms: [] 139 | - serializedVersion: 2 140 | name: Fantastic 141 | pixelLightCount: 4 142 | shadows: 2 143 | shadowResolution: 2 144 | shadowProjection: 1 145 | shadowCascades: 4 146 | shadowDistance: 150 147 | shadowNearPlaneOffset: 3 148 | shadowCascade2Split: 0.33333334 149 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 150 | blendWeights: 4 151 | textureQuality: 0 152 | anisotropicTextures: 2 153 | antiAliasing: 2 154 | softParticles: 1 155 | softVegetation: 1 156 | realtimeReflectionProbes: 1 157 | billboardsFaceCameraPosition: 1 158 | vSyncCount: 1 159 | lodBias: 2 160 | maximumLODLevel: 0 161 | particleRaycastBudget: 4096 162 | asyncUploadTimeSlice: 2 163 | asyncUploadBufferSize: 4 164 | excludedTargetPlatforms: [] 165 | m_PerPlatformDefaultQuality: 166 | Android: 2 167 | Nintendo 3DS: 5 168 | PS4: 5 169 | PSM: 5 170 | PSP2: 2 171 | Samsung TV: 2 172 | Standalone: 5 173 | Tizen: 2 174 | Web: 5 175 | WebGL: 3 176 | WiiU: 5 177 | Windows Store Apps: 5 178 | XboxOne: 5 179 | iPhone: 2 180 | tvOS: 5 181 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | m_Enabled: 0 7 | m_TestMode: 0 8 | m_TestEventUrl: 9 | m_TestConfigUrl: 10 | CrashReportingSettings: 11 | m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes 12 | m_Enabled: 0 13 | m_CaptureEditorExceptions: 1 14 | UnityPurchasingSettings: 15 | m_Enabled: 0 16 | m_TestMode: 0 17 | UnityAnalyticsSettings: 18 | m_Enabled: 1 19 | m_InitializeOnStartup: 1 20 | m_TestMode: 0 21 | m_TestEventUrl: 22 | m_TestConfigUrl: 23 | UnityAdsSettings: 24 | m_Enabled: 0 25 | m_InitializeOnStartup: 1 26 | m_TestMode: 0 27 | m_EnabledPlatforms: 4294967295 28 | m_IosGameId: 29 | m_AndroidGameId: 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # UnityWebGLMicrophone 2 | WebGL Microphone module for Unity 3 | 4 | ![image_1](images/image_1.png) 5 | 6 | This package provides a WebGL module that allows the `UnityEngine.Microphone` API to be used on the `WebGL` with the sample interface. 7 | 8 | That is, with one exception as the following script is needed in the scene to relay Microphone updates from `WebGL` to `C#`. 9 | 10 | ```C# 11 | #if UNITY_WEBGL && !UNITY_EDITOR 12 | void Awake() 13 | { 14 | Microphone.Init(); 15 | Microphone.QueryAudioInput(); 16 | } 17 | #endif 18 | 19 | #if UNITY_WEBGL && !UNITY_EDITOR 20 | void Update() 21 | { 22 | Microphone.Update(); 23 | } 24 | #endif 25 | ``` 26 | -------------------------------------------------------------------------------- /Test/ScriptInstallServer.cmd: -------------------------------------------------------------------------------- 1 | CALL npm install 2 | PAUSE 3 | -------------------------------------------------------------------------------- /Test/ScriptStartServer.cmd: -------------------------------------------------------------------------------- 1 | start "" "http://localhost:5001/index.html" 2 | node ServerNode.js 3 | -------------------------------------------------------------------------------- /Test/ServerNode.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const app = express(); 3 | app.use(function (req, res, next) { 4 | res.setHeader('Access-Control-Allow-Origin', '*'); 5 | next(); 6 | }); 7 | 8 | app.use(express.static('.')); 9 | 10 | app.use(express.static('..')); 11 | 12 | app.listen(5001, function () { 13 | console.log('Example app listening on port 5001!'); 14 | }) 15 | -------------------------------------------------------------------------------- /Test/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WebGL Microphone 5 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |
18 |
19 | 20 | 21 | 22 |
23 | 24 | 25 |
26 | 27 | 28 | 29 |
30 | 31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 | 39 | 388 | 389 | 390 | 391 | -------------------------------------------------------------------------------- /Test/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chromanode", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "express": "^4.14.0", 13 | "nodemon": "^1.11.0" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /images/image_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tgraupmann/UnityWebGLMicrophone/747b656d309ec4f416a12b83a741783c85d5c792/images/image_1.png -------------------------------------------------------------------------------- /open_vs_code.cmd: -------------------------------------------------------------------------------- 1 | code . 2 | --------------------------------------------------------------------------------