Init
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5798647846fc4410d899580bde6b8015
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,82 @@
|
||||
using System;
|
||||
using PXR_Audio.Spatializer;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
[CustomEditor(typeof(PXR_Audio_Spatializer_AudioSource))]
|
||||
[CanEditMultipleObjects]
|
||||
public class PXR_Audio_Spatializer_AudioSourceEditor : Editor
|
||||
{
|
||||
private SerializedProperty sourceGainDBProperty;
|
||||
private SerializedProperty reflectionGainDBProperty;
|
||||
private SerializedProperty sourceSizeProperty;
|
||||
private SerializedProperty enableDopplerProperty;
|
||||
private SerializedProperty sourceAttenuationModeProperty;
|
||||
private SerializedProperty minAttenuationDistanceProperty;
|
||||
private SerializedProperty maxAttenuationDistanceProperty;
|
||||
private SerializedProperty directivityAlphaProperty;
|
||||
private SerializedProperty directivityOrderProperty;
|
||||
|
||||
private bool showAdvancedOptions = false;
|
||||
private bool showDirectivityOptions = false;
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
sourceGainDBProperty = serializedObject.FindProperty("sourceGainDB");
|
||||
reflectionGainDBProperty = serializedObject.FindProperty("reflectionGainDB");
|
||||
sourceSizeProperty = serializedObject.FindProperty("sourceSize");
|
||||
enableDopplerProperty = serializedObject.FindProperty("enableDoppler");
|
||||
sourceAttenuationModeProperty = serializedObject.FindProperty("sourceAttenuationMode");
|
||||
minAttenuationDistanceProperty = serializedObject.FindProperty("minAttenuationDistance");
|
||||
maxAttenuationDistanceProperty = serializedObject.FindProperty("maxAttenuationDistance");
|
||||
directivityAlphaProperty = serializedObject.FindProperty("directivityAlpha");
|
||||
directivityOrderProperty = serializedObject.FindProperty("directivityOrder");
|
||||
}
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
serializedObject.Update();
|
||||
|
||||
EditorGUILayout.PropertyField(sourceGainDBProperty,
|
||||
new GUIContent("Source Gain (dB)", "Master gain of this sound source in dBFS"));
|
||||
EditorGUILayout.PropertyField(reflectionGainDBProperty,
|
||||
new GUIContent("Reflection Gain (dB)", "Gain of the reflection sound of this sound source in dBFS"));
|
||||
EditorGUILayout.PropertyField(sourceSizeProperty,
|
||||
new GUIContent("Source Size (meters)", "Volumetric radius of this sound source in meters"));
|
||||
|
||||
showAdvancedOptions = EditorGUILayout.Foldout(showAdvancedOptions, "Advanced Options");
|
||||
if (showAdvancedOptions)
|
||||
{
|
||||
EditorGUI.indentLevel++;
|
||||
|
||||
EditorGUILayout.PropertyField(enableDopplerProperty);
|
||||
|
||||
EditorGUI.BeginDisabledGroup(Application.isPlaying);
|
||||
EditorGUILayout.PropertyField(sourceAttenuationModeProperty);
|
||||
EditorGUI.EndDisabledGroup();
|
||||
var attenuationMode = (SourceAttenuationMode)sourceAttenuationModeProperty.enumValueIndex;
|
||||
if (attenuationMode == SourceAttenuationMode.InverseSquare ||
|
||||
attenuationMode == SourceAttenuationMode.Customized)
|
||||
{
|
||||
EditorGUI.indentLevel++;
|
||||
EditorGUILayout.PropertyField(minAttenuationDistanceProperty);
|
||||
EditorGUILayout.PropertyField(maxAttenuationDistanceProperty);
|
||||
EditorGUI.indentLevel--;
|
||||
}
|
||||
|
||||
showDirectivityOptions = EditorGUILayout.Foldout(showDirectivityOptions,
|
||||
new GUIContent("Directivity", "Setup radiation polar pattern of sound energy of this source."));
|
||||
if (showDirectivityOptions)
|
||||
{
|
||||
EditorGUI.indentLevel++;
|
||||
EditorGUILayout.PropertyField(directivityAlphaProperty, new GUIContent("Alpha"));
|
||||
EditorGUILayout.PropertyField(directivityOrderProperty, new GUIContent("Order"));
|
||||
EditorGUI.indentLevel--;
|
||||
}
|
||||
|
||||
EditorGUI.indentLevel--;
|
||||
}
|
||||
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7b905f32fd564591a492987708e5d090
|
||||
timeCreated: 1710728832
|
||||
@@ -0,0 +1,92 @@
|
||||
using System;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
[CustomEditor(typeof(PXR_Audio_Spatializer_Context))]
|
||||
[CanEditMultipleObjects]
|
||||
public class PXR_Audio_Spatializer_ContextEditor : Editor
|
||||
{
|
||||
private SerializedProperty meshBakingLayerMask;
|
||||
private bool showMeshBakingUtilsFlag = true;
|
||||
private string meshBakingUtilitiesTitle = "Static mesh baking utilities";
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
meshBakingLayerMask = serializedObject.FindProperty("meshBakingLayerMask");
|
||||
}
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
base.OnInspectorGUI();
|
||||
|
||||
// Static mesh baking utilities
|
||||
serializedObject.Update();
|
||||
showMeshBakingUtilsFlag = EditorGUILayout.Foldout(showMeshBakingUtilsFlag, meshBakingUtilitiesTitle);
|
||||
if (showMeshBakingUtilsFlag)
|
||||
{
|
||||
EditorGUI.indentLevel++;
|
||||
|
||||
EditorGUILayout.PropertyField(meshBakingLayerMask, new GUIContent("Layer", "Layers of game objects that will trigger mesh baking."));
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
GUILayout.Space(EditorGUI.indentLevel * 15);
|
||||
if (GUILayout.Button(new GUIContent("Bake all", "Bake all acoustic geometries in this scene. Affected by 'Layer'")))
|
||||
{
|
||||
var start = Time.realtimeSinceStartup;
|
||||
|
||||
Undo.IncrementCurrentGroup();
|
||||
var undoGroupIndex = Undo.GetCurrentGroup();
|
||||
|
||||
string bakedObjectNames = "";
|
||||
int meshCount = 0;
|
||||
var sceneGeometries = FindObjectsOfType<PXR_Audio_Spatializer_SceneGeometry>();
|
||||
foreach (PXR_Audio_Spatializer_SceneGeometry geometry in sceneGeometries)
|
||||
{
|
||||
bakedObjectNames += geometry.name + ", ";
|
||||
|
||||
Undo.RecordObject(geometry, "");
|
||||
meshCount += geometry.BakeStaticMesh(meshBakingLayerMask.intValue);
|
||||
PrefabUtility.RecordPrefabInstancePropertyModifications(geometry);
|
||||
}
|
||||
|
||||
Undo.SetCurrentGroupName("Bake static meshes for gameObject: " + bakedObjectNames);
|
||||
Undo.CollapseUndoOperations(undoGroupIndex);
|
||||
|
||||
var durationMs = (Time.realtimeSinceStartup - start) * 1000;
|
||||
Debug.LogFormat("Baked static {0} meshes for gameObject: {1}in {2:f4} ms", meshCount, bakedObjectNames,
|
||||
durationMs);
|
||||
}
|
||||
|
||||
if (GUILayout.Button(new GUIContent("Clear all", "Clear all baked acoustic geometries in this scene.")))
|
||||
{
|
||||
Undo.IncrementCurrentGroup();
|
||||
var undoGroupIndex = Undo.GetCurrentGroup();
|
||||
string bakedObjectNames = "";
|
||||
|
||||
var sceneGeometries = FindObjectsOfType<PXR_Audio_Spatializer_SceneGeometry>();
|
||||
foreach (PXR_Audio_Spatializer_SceneGeometry geometry in sceneGeometries)
|
||||
{
|
||||
bakedObjectNames += geometry.name + ", ";
|
||||
|
||||
Undo.RecordObject(geometry, "");
|
||||
geometry.ClearBakeStaticMesh();
|
||||
PrefabUtility.RecordPrefabInstancePropertyModifications(geometry);
|
||||
}
|
||||
|
||||
Undo.SetCurrentGroupName("Clear baked static meshes for gameObject: " + bakedObjectNames);
|
||||
Undo.CollapseUndoOperations(undoGroupIndex);
|
||||
|
||||
Debug.LogFormat("Cleared baked static meshes for gameObject: {0}", bakedObjectNames);
|
||||
}
|
||||
|
||||
GUILayout.Space(EditorGUI.indentLevel * 15 - 15);
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
EditorGUI.indentLevel--;
|
||||
}
|
||||
else
|
||||
{
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f86288d700dd5404ab527def8df8c36c
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,105 @@
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
[CustomEditor(typeof(PXR_Audio_Spatializer_SceneGeometry))]
|
||||
[CanEditMultipleObjects]
|
||||
public class PXR_Audio_Spatializer_SceneGeometryEditor : Editor
|
||||
{
|
||||
private SerializedProperty includeChildren;
|
||||
private SerializedProperty visualizeMeshInEditor;
|
||||
private SerializedProperty bakedStaticMesh;
|
||||
private SerializedProperty meshBakingLayerMask;
|
||||
private bool showMeshBakingUtilsFlag = true;
|
||||
private string meshBakingUtilitiesTitle = "Static mesh baking utilities";
|
||||
|
||||
void OnEnable()
|
||||
{
|
||||
includeChildren = serializedObject.FindProperty("includeChildren");
|
||||
visualizeMeshInEditor = serializedObject.FindProperty("visualizeMeshInEditor");
|
||||
bakedStaticMesh = serializedObject.FindProperty("bakedStaticMesh");
|
||||
meshBakingLayerMask = serializedObject.FindProperty("meshBakingLayerMask");
|
||||
}
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
serializedObject.Update();
|
||||
|
||||
// Boolean flags
|
||||
EditorGUILayout.PropertyField(includeChildren);
|
||||
EditorGUILayout.PropertyField(visualizeMeshInEditor);
|
||||
|
||||
// Static mesh baking utilities
|
||||
showMeshBakingUtilsFlag = EditorGUILayout.Foldout(showMeshBakingUtilsFlag, meshBakingUtilitiesTitle);
|
||||
if (showMeshBakingUtilsFlag)
|
||||
{
|
||||
EditorGUI.indentLevel++;
|
||||
|
||||
EditorGUILayout.PropertyField(meshBakingLayerMask,
|
||||
new GUIContent("Layer", "Layers of game objects that will trigger mesh baking."));
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
GUILayout.Space(EditorGUI.indentLevel * 15);
|
||||
if (GUILayout.Button(new GUIContent("Bake", "Bake acoustic meshes for this acoustic geometry\n" +
|
||||
" - affected by your 'Layer' setting.")))
|
||||
{
|
||||
var start = Time.realtimeSinceStartup;
|
||||
|
||||
Undo.IncrementCurrentGroup();
|
||||
var undoGroupIndex = Undo.GetCurrentGroup();
|
||||
|
||||
string bakedObjectNames = "";
|
||||
int meshCount = 0;
|
||||
foreach (var t in targets)
|
||||
{
|
||||
PXR_Audio_Spatializer_SceneGeometry geometry = (PXR_Audio_Spatializer_SceneGeometry)t;
|
||||
bakedObjectNames += geometry.name + ", ";
|
||||
|
||||
Undo.RecordObject(geometry, "");
|
||||
meshCount += geometry.BakeStaticMesh(meshBakingLayerMask.intValue);
|
||||
PrefabUtility.RecordPrefabInstancePropertyModifications(geometry);
|
||||
}
|
||||
|
||||
Undo.SetCurrentGroupName("Bake static meshes for gameObject: " + bakedObjectNames);
|
||||
Undo.CollapseUndoOperations(undoGroupIndex);
|
||||
|
||||
var durationMs = (Time.realtimeSinceStartup - start) * 1000;
|
||||
Debug.LogFormat("Baked static {0} meshes for gameObject: {1}in {2:f4} ms", meshCount, bakedObjectNames,
|
||||
durationMs);
|
||||
}
|
||||
|
||||
if (GUILayout.Button(new GUIContent("Clear", "Clear the baked mesh")))
|
||||
{
|
||||
Undo.IncrementCurrentGroup();
|
||||
var undoGroupIndex = Undo.GetCurrentGroup();
|
||||
string bakedObjectNames = "";
|
||||
foreach (var t in targets)
|
||||
{
|
||||
PXR_Audio_Spatializer_SceneGeometry geometry = (PXR_Audio_Spatializer_SceneGeometry)t;
|
||||
bakedObjectNames += geometry.name + ", ";
|
||||
|
||||
Undo.RecordObject(geometry, "");
|
||||
geometry.ClearBakeStaticMesh();
|
||||
PrefabUtility.RecordPrefabInstancePropertyModifications(geometry);
|
||||
}
|
||||
|
||||
Undo.SetCurrentGroupName("Clear baked static meshes for gameObject: " + bakedObjectNames);
|
||||
Undo.CollapseUndoOperations(undoGroupIndex);
|
||||
|
||||
Debug.LogFormat("Cleared baked static meshes for gameObject: {0}", bakedObjectNames);
|
||||
}
|
||||
|
||||
GUILayout.Space(EditorGUI.indentLevel * 15 - 15);
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
serializedObject.Update();
|
||||
EditorGUILayout.PropertyField(bakedStaticMesh);
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
|
||||
EditorGUI.indentLevel--;
|
||||
}
|
||||
else
|
||||
{
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 09493c449b7ba41da8978c862fb59643
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,43 @@
|
||||
using System;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
[CustomEditor(typeof(PXR_Audio_Spatializer_SceneMaterial))]
|
||||
[CanEditMultipleObjects]
|
||||
public class PXR_Audio_Spatializer_SceneMaterialEditor : Editor
|
||||
{
|
||||
private SerializedProperty materialPresetProperty;
|
||||
private SerializedProperty absorptionProperty;
|
||||
private SerializedProperty scatteringProperty;
|
||||
private SerializedProperty transmissionProperty;
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
materialPresetProperty = serializedObject.FindProperty("materialPreset");
|
||||
absorptionProperty = serializedObject.FindProperty("absorption");
|
||||
scatteringProperty = serializedObject.FindProperty("scattering");
|
||||
transmissionProperty = serializedObject.FindProperty("transmission");
|
||||
}
|
||||
|
||||
private static int[] bandCenters = { 1000, 2000, 4000, 8000 };
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
serializedObject.Update();
|
||||
|
||||
EditorGUILayout.PropertyField(materialPresetProperty);
|
||||
|
||||
for (int i = 0; i < absorptionProperty.arraySize; i++)
|
||||
{
|
||||
SerializedProperty elementProperty = absorptionProperty.GetArrayElementAtIndex(i);
|
||||
string elementName = $"Absorption band {bandCenters[i]} Hz";
|
||||
string tooltips = $"Ratio of sound energy absorbed by each reflection for band {bandCenters[i]} Hz";
|
||||
EditorGUILayout.PropertyField(elementProperty, new GUIContent(elementName, tooltips));
|
||||
}
|
||||
|
||||
EditorGUILayout.PropertyField(scatteringProperty);
|
||||
EditorGUILayout.PropertyField(transmissionProperty);
|
||||
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 738f0726e7684c8192c01c6a022b96c4
|
||||
timeCreated: 1710310935
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"name": "Pico.Spatializer.Editor",
|
||||
"rootNamespace": "",
|
||||
"references": ["GUID:b3d620f74d91148829d3deb288af824d"],
|
||||
"includePlatforms": [
|
||||
"Editor"
|
||||
],
|
||||
"excludePlatforms": [],
|
||||
"allowUnsafeCode": false,
|
||||
"overrideReferences": false,
|
||||
"precompiledReferences": [],
|
||||
"autoReferenced": true,
|
||||
"defineConstraints": [],
|
||||
"versionDefines": [],
|
||||
"noEngineReferences": false
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c64abb93d730f406cbeaa719424a4ae9
|
||||
AssemblyDefinitionImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "Pico.Spatializer",
|
||||
"rootNamespace": "",
|
||||
"references": [
|
||||
"Unity.XR.PICO"
|
||||
],
|
||||
"includePlatforms": [
|
||||
"Android",
|
||||
"Editor",
|
||||
"macOSStandalone",
|
||||
"WindowsStandalone64"
|
||||
],
|
||||
"excludePlatforms": [],
|
||||
"allowUnsafeCode": false,
|
||||
"overrideReferences": false,
|
||||
"precompiledReferences": [],
|
||||
"autoReferenced": true,
|
||||
"defineConstraints": [],
|
||||
"versionDefines": [],
|
||||
"noEngineReferences": false
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b3d620f74d91148829d3deb288af824d
|
||||
AssemblyDefinitionImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0f4b28a3e20c24e27891c01c5cf0c33f
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3b4d436dea0a3484789c36666a50c8ef
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fcf7418fce5254839acc4d7bb674c680
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
arm64-v8a/libPicoSpatializer.so.meta filter=lfs diff=lfs merge=lfs -text
|
||||
arm64-v8a/libPicoAmbisonicDecoder.so filter=lfs diff=lfs merge=lfs -text
|
||||
arm64-v8a/libPicoAmbisonicDecoder.so.meta filter=lfs diff=lfs merge=lfs -text
|
||||
arm64-v8a/libPicoSpatializer.so filter=lfs diff=lfs merge=lfs -text
|
||||
armeabi-v7a/libPicoAmbisonicDecoder.so filter=lfs diff=lfs merge=lfs -text
|
||||
armeabi-v7a/libPicoAmbisonicDecoder.so.meta filter=lfs diff=lfs merge=lfs -text
|
||||
armeabi-v7a/libPicoSpatializer.so filter=lfs diff=lfs merge=lfs -text
|
||||
armeabi-v7a/libPicoSpatializer.so.meta filter=lfs diff=lfs merge=lfs -text
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2c0cb1d24f1b34863ab8f9e7a0447332
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Plugins/Android/libs/arm64-v8a/libPicoAmbisonicDecoder.so
(Stored with Git LFS)
Normal file
BIN
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Plugins/Android/libs/arm64-v8a/libPicoAmbisonicDecoder.so
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Plugins/Android/libs/arm64-v8a/libPicoAmbisonicDecoder.so.meta
(Stored with Git LFS)
Normal file
BIN
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Plugins/Android/libs/arm64-v8a/libPicoAmbisonicDecoder.so.meta
(Stored with Git LFS)
Normal file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,27 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3d25a15a13483482f8e5d6d5bcd02388
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 1
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Plugins/Android/libs/arm64-v8a/libPicoSpatializer.so
(Stored with Git LFS)
Normal file
BIN
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Plugins/Android/libs/arm64-v8a/libPicoSpatializer.so
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Plugins/Android/libs/arm64-v8a/libPicoSpatializer.so.meta
(Stored with Git LFS)
Normal file
BIN
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Plugins/Android/libs/arm64-v8a/libPicoSpatializer.so.meta
(Stored with Git LFS)
Normal file
Binary file not shown.
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 024502ac0b4ab45f8abfe746bd0c0d73
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Plugins/Android/libs/armeabi-v7a/libPicoAmbisonicDecoder.so
(Stored with Git LFS)
Normal file
BIN
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Plugins/Android/libs/armeabi-v7a/libPicoAmbisonicDecoder.so
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Plugins/Android/libs/armeabi-v7a/libPicoAmbisonicDecoder.so.meta
(Stored with Git LFS)
Normal file
BIN
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Plugins/Android/libs/armeabi-v7a/libPicoAmbisonicDecoder.so.meta
(Stored with Git LFS)
Normal file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,27 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2e20817fcd8e84b408548d0cec6a789e
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 1
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Plugins/Android/libs/armeabi-v7a/libPicoSpatializer.so
(Stored with Git LFS)
Normal file
BIN
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Plugins/Android/libs/armeabi-v7a/libPicoSpatializer.so
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Plugins/Android/libs/armeabi-v7a/libPicoSpatializer.so.meta
(Stored with Git LFS)
Normal file
BIN
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Plugins/Android/libs/armeabi-v7a/libPicoSpatializer.so.meta
(Stored with Git LFS)
Normal file
Binary file not shown.
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b983814d488b14a38a6aec8d9157efca
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
4
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Plugins/OSX/.gitattributes
vendored
Normal file
4
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Plugins/OSX/.gitattributes
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
x86_64/libPicoAmbisonicDecoder.dylib filter=lfs diff=lfs merge=lfs -text
|
||||
x86_64/libPicoAmbisonicDecoder.dylib.meta filter=lfs diff=lfs merge=lfs -text
|
||||
x86_64/libPicoSpatializer.dylib filter=lfs diff=lfs merge=lfs -text
|
||||
x86_64/libPicoSpatializer.dylib.meta filter=lfs diff=lfs merge=lfs -text
|
||||
Binary file not shown.
@@ -0,0 +1,33 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d3282e44a0b624919846f8fc8530904d
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 1
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
- first:
|
||||
Standalone: OSXUniversal
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,33 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e12610f73d4ba4d4b90618d263d93d78
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 1
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
- first:
|
||||
Standalone: OSXUniversal
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,33 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 94f88c6d4c64a4281a949a8dc31efc8e
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 1
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
- first:
|
||||
Standalone: OSXUniversal
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 475554b08d2b14b60b6c44f8bc68def3
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
4
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Plugins/Win/.gitattributes
vendored
Normal file
4
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Plugins/Win/.gitattributes
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
x64/libPicoSpatializer.dll.meta filter=lfs diff=lfs merge=lfs -text
|
||||
x64/libPicoAmbisonicDecoder.dll filter=lfs diff=lfs merge=lfs -text
|
||||
x64/libPicoAmbisonicDecoder.dll.meta filter=lfs diff=lfs merge=lfs -text
|
||||
x64/libPicoSpatializer.dll filter=lfs diff=lfs merge=lfs -text
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3ca9f64c272fa4b85857d01b73ffc99a
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,70 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3b5219917b2df4d6cb47a2e5365ac256
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 1
|
||||
isOverridable: 1
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
: Any
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
Exclude Android: 1
|
||||
Exclude Editor: 0
|
||||
Exclude Linux64: 0
|
||||
Exclude OSXUniversal: 0
|
||||
Exclude Win: 1
|
||||
Exclude Win64: 0
|
||||
- first:
|
||||
Android: Android
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: ARMv7
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: x86_64
|
||||
DefaultValueInitialized: true
|
||||
OS: Windows
|
||||
- first:
|
||||
Standalone: Linux64
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: OSXUniversal
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: Win
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: Win64
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: x86_64
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,70 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 643d0d397ffb849919630d337cb6247f
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 1
|
||||
isOverridable: 1
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
: Any
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
Exclude Android: 1
|
||||
Exclude Editor: 0
|
||||
Exclude Linux64: 0
|
||||
Exclude OSXUniversal: 0
|
||||
Exclude Win: 1
|
||||
Exclude Win64: 0
|
||||
- first:
|
||||
Android: Android
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: ARMv7
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: x86_64
|
||||
DefaultValueInitialized: true
|
||||
OS: Windows
|
||||
- first:
|
||||
Standalone: Linux64
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: OSXUniversal
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: Win
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: Win64
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: x86_64
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,70 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9f7928ddffe4f416ea4bdce00c73a32a
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
: Any
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
Exclude Android: 1
|
||||
Exclude Editor: 0
|
||||
Exclude Linux64: 0
|
||||
Exclude OSXUniversal: 0
|
||||
Exclude Win: 1
|
||||
Exclude Win64: 0
|
||||
- first:
|
||||
Android: Android
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: ARMv7
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: x86_64
|
||||
DefaultValueInitialized: true
|
||||
OS: Windows
|
||||
- first:
|
||||
Standalone: Linux64
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: OSXUniversal
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: Win
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: Win64
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
CPU: x86_64
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 073013c70085048fdb5f347a3a19679a
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,109 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &3236988477222230519
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3236988477222230516}
|
||||
- component: {fileID: 3236988477222230517}
|
||||
m_Layer: 0
|
||||
m_Name: mesh
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &3236988477222230516
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3236988477222230519}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3236988478114267042}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &3236988477222230517
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3236988477222230519}
|
||||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!1 &3236988478114267045
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3236988478114267042}
|
||||
- component: {fileID: 377690412601563115}
|
||||
- component: {fileID: 8005667578126866580}
|
||||
m_Layer: 0
|
||||
m_Name: PicoSoundReflectionObject
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &3236988478114267042
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3236988478114267045}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children:
|
||||
- {fileID: 3236988477222230516}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &377690412601563115
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3236988478114267045}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 555afd84b04c3471788b8eada321c090, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
includeChildren: 1
|
||||
ignoreStatic: 0
|
||||
visualizeMeshInEditor: 1
|
||||
--- !u!114 &8005667578126866580
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3236988478114267045}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 22d37993d4d3e4235b77205c1aa2ff46, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
materialPreset: 29
|
||||
absorption:
|
||||
- 0
|
||||
- 0
|
||||
- 0
|
||||
- 0
|
||||
scattering: 0
|
||||
transmission: 0
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 47fe7805a1eb441a68e5ff2377a3bdd8
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b2552ca3471324cde83c2a0fd434690e
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 72b2687315f3a4375aceab7d9de97c79
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,39 @@
|
||||
// Copyright © 2015-2021 Pico Technology Co., Ltd. All Rights Reserved.
|
||||
|
||||
using UnityEngine;
|
||||
|
||||
[RequireComponent(typeof(AudioSource))]
|
||||
public class PXR_Audio_Spatializer_AmbisonicSource : MonoBehaviour
|
||||
{
|
||||
private AudioSource nativeSource;
|
||||
|
||||
private float playheadPosition = 0.0f;
|
||||
private bool wasPlaying = false;
|
||||
|
||||
/// <summary>
|
||||
/// Resume audio playing status.
|
||||
/// </summary>
|
||||
public void Resume()
|
||||
{
|
||||
if (nativeSource)
|
||||
{
|
||||
nativeSource.time = playheadPosition;
|
||||
if (wasPlaying)
|
||||
{
|
||||
nativeSource.Play();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Awake()
|
||||
{
|
||||
nativeSource = GetComponent<AudioSource>();
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
if (nativeSource.isPlaying)
|
||||
playheadPosition = nativeSource.time;
|
||||
wasPlaying = nativeSource.isPlaying;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a36d16e4ff48444b8ac021c183d3e3fd
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,117 @@
|
||||
// Copyright © 2015-2022 Pico Technology Co., Ltd. All Rights Reserved.
|
||||
|
||||
using System.Collections;
|
||||
using System.Runtime.InteropServices;
|
||||
using PXR_Audio.Spatializer;
|
||||
using UnityEngine;
|
||||
|
||||
[RequireComponent(typeof(AudioListener))]
|
||||
public class PXR_Audio_Spatializer_AudioListener : MonoBehaviour
|
||||
{
|
||||
private enum OutputMethod
|
||||
{
|
||||
OnAudioFilterRead,
|
||||
PicoAudioRouter
|
||||
}
|
||||
|
||||
[Tooltip("Determine where the output spatial audio signal goes:\n" +
|
||||
" - On Audio Filter Read: Spatial audio signal got mixed with the rest of the game.\n" +
|
||||
" - Pico Audio Router: Spatial audio signal got transmitted to one or more 'Pico Audio Router' effects in the Unity Audio Mixer to gain more control to your mix.")]
|
||||
[SerializeField]
|
||||
private OutputMethod outputMethod = OutputMethod.OnAudioFilterRead;
|
||||
|
||||
private float[] temp_output_buffer = new float[2048];
|
||||
|
||||
private bool isActive;
|
||||
|
||||
private PXR_Audio_Spatializer_Context context;
|
||||
|
||||
private PXR_Audio_Spatializer_Context Context
|
||||
{
|
||||
get
|
||||
{
|
||||
if (context == null)
|
||||
context = PXR_Audio_Spatializer_Context.Instance;
|
||||
return context;
|
||||
}
|
||||
}
|
||||
|
||||
private float[] positionArray = new float[3] { 0.0f, 0.0f, 0.0f };
|
||||
private float[] frontArray = new float[3] { 0.0f, 0.0f, 0.0f };
|
||||
private float[] upArray = new float[3] { 0.0f, 0.0f, 0.0f };
|
||||
|
||||
private bool isAudioDSPInProgress = false;
|
||||
|
||||
public bool IsAudioDSPInProgress
|
||||
{
|
||||
get { return isAudioDSPInProgress; }
|
||||
}
|
||||
|
||||
internal void RegisterInternal()
|
||||
{
|
||||
// Initialize listener pose
|
||||
if (Context.spatializerApiImpl != SpatializerApiImpl.wwise)
|
||||
{
|
||||
UpdatePose();
|
||||
}
|
||||
|
||||
isActive = true;
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
// Wait for context to be initialized
|
||||
if (Context != null && Context.Initialized)
|
||||
RegisterInternal();
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
if (isActive && context != null && context.Initialized && transform.hasChanged &&
|
||||
context.spatializerApiImpl != SpatializerApiImpl.wwise)
|
||||
{
|
||||
UpdatePose();
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
isActive = false;
|
||||
isAudioDSPInProgress = false;
|
||||
}
|
||||
|
||||
void UpdatePose()
|
||||
{
|
||||
positionArray[0] = transform.position.x;
|
||||
positionArray[1] = transform.position.y;
|
||||
positionArray[2] = -transform.position.z;
|
||||
frontArray[0] = transform.forward.x;
|
||||
frontArray[1] = transform.forward.y;
|
||||
frontArray[2] = -transform.forward.z;
|
||||
upArray[0] = transform.up.x;
|
||||
upArray[1] = transform.up.y;
|
||||
upArray[2] = -transform.up.z;
|
||||
Context.SetListenerPose(positionArray, frontArray, upArray);
|
||||
}
|
||||
|
||||
[DllImport("PicoAudioRouter", EntryPoint = "yggdrasil_audio_unity_audio_router_input")]
|
||||
private static extern void PicoAudioRouterInput(float[] inBuffer, int inBufferSize, int inChannels);
|
||||
|
||||
private void OnAudioFilterRead(float[] data, int channels)
|
||||
{
|
||||
if (!isActive || context == null || !context.Initialized ||
|
||||
Context.spatializerApiImpl == SpatializerApiImpl.wwise)
|
||||
return;
|
||||
|
||||
isAudioDSPInProgress = true;
|
||||
if (outputMethod == OutputMethod.OnAudioFilterRead)
|
||||
context.GetInterleavedBinauralBuffer(data, (uint)(data.Length / channels), true);
|
||||
else if (outputMethod == OutputMethod.PicoAudioRouter)
|
||||
{
|
||||
context.GetInterleavedBinauralBuffer(temp_output_buffer, (uint)(data.Length / channels), false);
|
||||
PicoAudioRouterInput(temp_output_buffer, data.Length / channels, channels);
|
||||
}
|
||||
|
||||
isAudioDSPInProgress = false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 67f4b0fc61d6d4b6499b28a0a4461b6f
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,586 @@
|
||||
// Copyright © 2015-2022 Pico Technology Co., Ltd. All Rights Reserved.
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using PXR_Audio.Spatializer;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
[RequireComponent(typeof(AudioSource))]
|
||||
public class PXR_Audio_Spatializer_AudioSource : MonoBehaviour
|
||||
{
|
||||
[SerializeField] [Range(0.0f, 24.0f)]
|
||||
private float sourceGainDB = 0.0f;
|
||||
|
||||
private float sourceGainAmplitude = 1.0f;
|
||||
|
||||
[SerializeField] [Range(-120.0f, 48.0f)]
|
||||
private float reflectionGainDB = 0.0f;
|
||||
|
||||
private float reflectionGainAmplitude = 1.0f;
|
||||
|
||||
[SerializeField] [Range(0.0f, 100000.0f)]
|
||||
private float sourceSize = 0.0f;
|
||||
|
||||
[Tooltip(
|
||||
"Whether Pico Doppler Simulation is enabled for this sound source, which affects both direct and reflection path of it.\n" +
|
||||
" - If you disabled this option before run or build, you cannot turn it on during runtime, since doppler effect unit is not initialized to save memory.")]
|
||||
[SerializeField]
|
||||
private bool enableDoppler = true;
|
||||
|
||||
[Tooltip(
|
||||
"Mode of distance attenuation of this sound source.\n" +
|
||||
" - None && Fixed: Source volume doesn't decrease when source-listener distance increases.\n" +
|
||||
" - Inversed Squared: Source volume decrease when source-listener distance increases, just like the real world.\n" +
|
||||
" - Customized: Don't use it!!!!")]
|
||||
[SerializeField]
|
||||
public SourceAttenuationMode sourceAttenuationMode = SourceAttenuationMode.InverseSquare;
|
||||
|
||||
[Tooltip(
|
||||
"Source volume will not further increase when source-listener distance is less than this.\n" +
|
||||
" - Only effective when source attenuation mode == Inversed Squared")]
|
||||
[SerializeField]
|
||||
public float minAttenuationDistance = 1.0f;
|
||||
|
||||
[Tooltip(
|
||||
"Source volume will not further decrease when source-listener distance is more than this.\n" +
|
||||
" - Only effective when source attenuation mode == Inversed Squared")]
|
||||
[SerializeField]
|
||||
public float maxAttenuationDistance = 100.0f;
|
||||
|
||||
[Tooltip("Determine shape of the radiation polar pattern of this sound source.\n" +
|
||||
" - Alpha = 0 gives you omnidirectional polar pattern\n" +
|
||||
" - Alpha = 0.5 gives you cardioid polar pattern\n" +
|
||||
" - Alpha = 1 gives you figure-8 polar pattern")]
|
||||
[SerializeField] [Range(0.0f, 1.0f)] private float directivityAlpha = 0.0f;
|
||||
|
||||
[Tooltip("Determine width of the radiation polar pattern of this sound source.\n" +
|
||||
" - Larger order gives you narrower radiation pattern.")]
|
||||
[SerializeField] [Range(0.0f, 1000.0f)]
|
||||
private float directivityOrder = 1.0f;
|
||||
|
||||
#if UNITY_EDITOR
|
||||
private Mesh directivityDisplayMesh;
|
||||
#endif
|
||||
|
||||
private SourceConfig sourceConfig;
|
||||
private uint sourcePropertyMask = 0;
|
||||
|
||||
private bool isActive;
|
||||
private bool isAudioDSPInProgress = false;
|
||||
|
||||
public bool IsAudioDSPInProgress
|
||||
{
|
||||
get { return isAudioDSPInProgress; }
|
||||
}
|
||||
|
||||
private PXR_Audio_Spatializer_Context context;
|
||||
|
||||
private PXR_Audio_Spatializer_Context Context
|
||||
{
|
||||
get
|
||||
{
|
||||
if (context == null)
|
||||
context = PXR_Audio_Spatializer_Context.Instance;
|
||||
return context;
|
||||
}
|
||||
}
|
||||
|
||||
private AudioSource nativeSource;
|
||||
|
||||
private int sourceId = -1;
|
||||
|
||||
private int currentContextUuid = -2;
|
||||
|
||||
private float[] positionArray = new float[3] { 0.0f, 0.0f, 0.0f };
|
||||
|
||||
private float playheadPosition = 0.0f;
|
||||
private bool wasPlaying = false;
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
if (Context != null && Context.Initialized)
|
||||
{
|
||||
if (Context.UUID == currentContextUuid)
|
||||
isActive = true;
|
||||
else
|
||||
RegisterInternal();
|
||||
}
|
||||
else
|
||||
{
|
||||
sourceId = -1;
|
||||
currentContextUuid = -2;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Register this audio source in spatializer
|
||||
/// </summary>
|
||||
internal void RegisterInternal()
|
||||
{
|
||||
nativeSource = GetComponent<AudioSource>();
|
||||
|
||||
positionArray[0] = transform.position.x;
|
||||
positionArray[1] = transform.position.y;
|
||||
positionArray[2] = -transform.position.z;
|
||||
|
||||
sourceConfig = new SourceConfig(PXR_Audio.Spatializer.SourceMode.Spatialize);
|
||||
sourcePropertyMask = 0;
|
||||
|
||||
sourceConfig.position.x = positionArray[0];
|
||||
sourceConfig.position.y = positionArray[1];
|
||||
sourceConfig.position.z = positionArray[2];
|
||||
sourceConfig.front.x = transform.forward.x;
|
||||
sourceConfig.front.y = transform.forward.y;
|
||||
sourceConfig.front.z = -transform.forward.z;
|
||||
sourceConfig.up.x = transform.up.x;
|
||||
sourceConfig.up.y = transform.up.y;
|
||||
sourceConfig.up.z = -transform.up.z;
|
||||
sourceConfig.enableDoppler = enableDoppler;
|
||||
sourceGainAmplitude = DB2Mag(sourceGainDB);
|
||||
sourceConfig.sourceGain = sourceGainAmplitude;
|
||||
reflectionGainAmplitude = DB2Mag(reflectionGainDB);
|
||||
sourceConfig.reflectionGain = reflectionGainAmplitude;
|
||||
sourceConfig.radius = sourceSize;
|
||||
sourceConfig.attenuationMode = sourceAttenuationMode;
|
||||
sourceConfig.minAttenuationDistance = minAttenuationDistance;
|
||||
sourceConfig.maxAttenuationDistance = maxAttenuationDistance;
|
||||
sourceConfig.directivityAlpha = directivityAlpha;
|
||||
sourceConfig.directivityOrder = directivityOrder;
|
||||
|
||||
PXR_Audio.Spatializer.Result ret = Context.AddSourceWithConfig(
|
||||
ref sourceConfig,
|
||||
ref sourceId,
|
||||
false);
|
||||
if (ret != PXR_Audio.Spatializer.Result.Success)
|
||||
{
|
||||
Debug.LogError("Failed to add source.");
|
||||
return;
|
||||
}
|
||||
|
||||
isActive = true;
|
||||
currentContextUuid = Context.UUID;
|
||||
|
||||
Debug.Log("Source #" + sourceId + " is added.");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Resume playing status of this source
|
||||
/// </summary>
|
||||
public void Resume()
|
||||
{
|
||||
nativeSource.time = playheadPosition;
|
||||
if (wasPlaying)
|
||||
{
|
||||
nativeSource.Play();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Setup source gain in dB
|
||||
/// </summary>
|
||||
/// <param name="gainDB">Gain in dB</param>
|
||||
public void SetGainDB(float gainDB)
|
||||
{
|
||||
// if (Mathf.Abs(gainDB - sourceGainDB) < 1e-7) return;
|
||||
sourceGainDB = gainDB;
|
||||
sourceConfig.sourceGain = sourceGainAmplitude = DB2Mag(gainDB);
|
||||
sourcePropertyMask |= (uint)SourceProperty.SourceGain;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get source gain in dB
|
||||
/// </summary>
|
||||
public float GetGainDB()
|
||||
{
|
||||
return sourceGainDB;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Setup source gain in Amplitude
|
||||
/// </summary>
|
||||
/// <param name="gainAmplitude">Gain in Amplitude</param>
|
||||
public void SetGainAmplitude(float gainAmplitude)
|
||||
{
|
||||
sourceConfig.sourceGain = sourceGainAmplitude = gainAmplitude;
|
||||
sourceGainDB = Mag2DB(gainAmplitude);
|
||||
sourcePropertyMask |= (uint)SourceProperty.SourceGain;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Setup source reflection gain in dB
|
||||
/// </summary>
|
||||
/// <param name="gainDB">Gain in dB</param>
|
||||
public void SetReflectionGainDB(float gainDB)
|
||||
{
|
||||
reflectionGainDB = gainDB;
|
||||
sourceConfig.reflectionGain = reflectionGainAmplitude = DB2Mag(gainDB);
|
||||
sourcePropertyMask |= (uint)SourceProperty.ReflectionGain;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get source reflection gain in dB
|
||||
/// </summary>
|
||||
public float GetReflectionGainDB()
|
||||
{
|
||||
return reflectionGainDB;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Setup source radius in meters
|
||||
/// </summary>
|
||||
/// <param name="radius">source radius in meter</param>
|
||||
public void SetSize(float radius)
|
||||
{
|
||||
sourceConfig.radius = sourceSize = radius;
|
||||
sourcePropertyMask |= (uint)SourceProperty.VolumetricRadius;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get source radius in meters
|
||||
/// </summary>
|
||||
public float GetSize()
|
||||
{
|
||||
return sourceSize;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Turn on/off in-engine doppler effect
|
||||
/// </summary>
|
||||
/// <param name="on">Turn doppler effect on/off </param>
|
||||
public void SetDopplerStatus(bool on)
|
||||
{
|
||||
sourceConfig.enableDoppler = enableDoppler = on;
|
||||
sourcePropertyMask |= (uint)SourceProperty.DopplerOnOff;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get in-engine doppler effect status
|
||||
/// </summary>
|
||||
public bool GetDopplerStatus()
|
||||
{
|
||||
return sourceConfig.enableDoppler;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get source attenuation mode
|
||||
/// </summary>
|
||||
public SourceAttenuationMode GetAttenuationMode()
|
||||
{
|
||||
return sourceConfig.attenuationMode;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Setup min attenuation range
|
||||
/// </summary>
|
||||
/// <param name="min"> Minimum attenuation range. Source loudness would stop increasing when source-listener
|
||||
/// distance is shorter than this </param>
|
||||
public void SetMinAttenuationRange(float min)
|
||||
{
|
||||
sourceConfig.minAttenuationDistance = minAttenuationDistance = min;
|
||||
sourcePropertyMask |= (uint)SourceProperty.RangeMin;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get min attenuation range
|
||||
/// </summary>
|
||||
public float GetMinAttenuationRange()
|
||||
{
|
||||
return sourceConfig.minAttenuationDistance;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Setup max attenuation range
|
||||
/// </summary>
|
||||
/// <param name="max"> Maximum attenuation range. Source loudness would stop decreasing when source-listener
|
||||
/// distance is further than this </param>
|
||||
public void SetMaxAttenuationRange(float max)
|
||||
{
|
||||
sourceConfig.maxAttenuationDistance = maxAttenuationDistance = max;
|
||||
sourcePropertyMask |= (uint)SourceProperty.RangeMax;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get max attenuation range
|
||||
/// </summary>
|
||||
public float GetMaxAttenuationRange()
|
||||
{
|
||||
return sourceConfig.maxAttenuationDistance;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Setup the radiation polar pattern of source, which describes the gain of initial sound wave radiated towards
|
||||
/// different directions. The relation between sound emission direction, alpha, and order can be described as
|
||||
/// follows: Let theta equals the angle between radiation direction and source front direction, the directivity
|
||||
/// gain g is:
|
||||
/// g = (|1 - alpha| + alpha * cos(theta)) ^ order;
|
||||
/// </summary>
|
||||
/// <param name="alpha"> Define the shape of the directivity pattern.
|
||||
/// <param name="order"> Indicates how sharp the source polar pattern is.
|
||||
public void SetDirectivity(float alpha, float order)
|
||||
{
|
||||
sourceConfig.directivityAlpha = directivityAlpha = alpha;
|
||||
sourceConfig.directivityOrder = directivityOrder = order;
|
||||
sourcePropertyMask |= (uint)SourceProperty.Directivity;
|
||||
}
|
||||
|
||||
public float GetDirectivityAlpha()
|
||||
{
|
||||
return sourceConfig.directivityAlpha;
|
||||
}
|
||||
|
||||
public float GetDirectivityOrder()
|
||||
{
|
||||
return sourceConfig.directivityOrder;
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
if (isActive && sourceId >= 0 && context != null && context.Initialized)
|
||||
{
|
||||
if (transform.hasChanged)
|
||||
{
|
||||
sourceConfig.position.x = transform.position.x;
|
||||
sourceConfig.position.y = transform.position.y;
|
||||
sourceConfig.position.z = -transform.position.z;
|
||||
sourceConfig.front.x = transform.forward.x;
|
||||
sourceConfig.front.y = transform.forward.y;
|
||||
sourceConfig.front.z = -transform.forward.z;
|
||||
sourceConfig.up.x = transform.up.x;
|
||||
sourceConfig.up.y = transform.up.y;
|
||||
sourceConfig.up.z = -transform.up.z;
|
||||
|
||||
sourcePropertyMask |= (uint)SourceProperty.Position | (uint)SourceProperty.Orientation;
|
||||
transform.hasChanged = false;
|
||||
}
|
||||
|
||||
if (sourcePropertyMask != 0)
|
||||
{
|
||||
var ret = Context.SetSourceConfig(sourceId, ref sourceConfig, sourcePropertyMask);
|
||||
if (ret == Result.Success)
|
||||
sourcePropertyMask = 0;
|
||||
}
|
||||
|
||||
if (nativeSource.isPlaying)
|
||||
playheadPosition = nativeSource.time;
|
||||
wasPlaying = nativeSource.isPlaying;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
isActive = false;
|
||||
isAudioDSPInProgress = false;
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
DestroyInternal();
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
void OnValidate()
|
||||
{
|
||||
if (EditorApplication.isPlaying)
|
||||
{
|
||||
SetGainDB(sourceGainDB);
|
||||
SetReflectionGainDB(reflectionGainDB);
|
||||
SetSize(sourceSize);
|
||||
SetDopplerStatus(enableDoppler);
|
||||
SetDirectivity(directivityAlpha, directivityOrder);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
private void DestroyInternal()
|
||||
{
|
||||
isActive = false;
|
||||
if (context != null && context.Initialized)
|
||||
{
|
||||
var ret = context.RemoveSource(sourceId);
|
||||
if (ret != PXR_Audio.Spatializer.Result.Success)
|
||||
{
|
||||
Debug.LogError("Failed to delete source #" + sourceId + ", error code is: " + ret);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("Source #" + sourceId + " is deleted.");
|
||||
}
|
||||
}
|
||||
|
||||
isAudioDSPInProgress = false;
|
||||
sourceId = -1;
|
||||
}
|
||||
|
||||
private void OnAudioFilterRead(float[] data, int channels)
|
||||
{
|
||||
if (!isActive || sourceId < 0 || context == null || !context.Initialized)
|
||||
{
|
||||
// Mute Original signal
|
||||
for (int i = 0; i < data.Length; ++i)
|
||||
data[i] = 0.0f;
|
||||
return;
|
||||
}
|
||||
|
||||
isAudioDSPInProgress = true;
|
||||
int numFrames = data.Length / channels;
|
||||
float oneOverChannelsF = 1.0f / ((float)channels);
|
||||
|
||||
// force to mono
|
||||
if (channels > 1)
|
||||
{
|
||||
for (int frame = 0; frame < numFrames; ++frame)
|
||||
{
|
||||
float sample = 0.0f;
|
||||
for (int channel = 0; channel < channels; ++channel)
|
||||
{
|
||||
sample += data[frame * channels + channel];
|
||||
}
|
||||
|
||||
data[frame] = sample * oneOverChannelsF;
|
||||
}
|
||||
}
|
||||
|
||||
Context.SubmitSourceBuffer(sourceId, data, (uint)numFrames);
|
||||
|
||||
// Mute Original signal
|
||||
for (int i = 0; i < data.Length; ++i)
|
||||
data[i] = 0.0f;
|
||||
isAudioDSPInProgress = false;
|
||||
}
|
||||
|
||||
private float DB2Mag(float db)
|
||||
{
|
||||
return Mathf.Pow(10.0f, db / 20.0f);
|
||||
}
|
||||
|
||||
private float Mag2DB(float mag)
|
||||
{
|
||||
return 20 * Mathf.Log10(mag);
|
||||
}
|
||||
|
||||
void OnDrawGizmos()
|
||||
{
|
||||
Color c;
|
||||
const float colorSolidAlpha = 0.1f;
|
||||
|
||||
// VolumetricRadius (purple)
|
||||
c.r = 1.0f;
|
||||
c.g = 0.0f;
|
||||
c.b = 1.0f;
|
||||
c.a = 1.0f;
|
||||
Gizmos.color = c;
|
||||
Gizmos.DrawWireSphere(transform.position, sourceSize);
|
||||
c.a = colorSolidAlpha;
|
||||
Gizmos.color = c;
|
||||
Gizmos.DrawSphere(transform.position, sourceSize);
|
||||
|
||||
// Attenuation distance (min && max)
|
||||
if (sourceAttenuationMode == SourceAttenuationMode.InverseSquare)
|
||||
{
|
||||
// min
|
||||
c.r = 1.0f;
|
||||
c.g = 0.35f;
|
||||
c.b = 0.0f;
|
||||
c.a = 1.0f;
|
||||
Gizmos.color = c;
|
||||
Gizmos.DrawWireSphere(transform.position, minAttenuationDistance);
|
||||
c.a = colorSolidAlpha;
|
||||
Gizmos.color = c;
|
||||
Gizmos.DrawSphere(transform.position, minAttenuationDistance);
|
||||
|
||||
// max
|
||||
c.r = 0.0f;
|
||||
c.g = 1.0f;
|
||||
c.b = 1.0f;
|
||||
c.a = 1.0f;
|
||||
Gizmos.color = c;
|
||||
Gizmos.DrawWireSphere(transform.position, maxAttenuationDistance);
|
||||
c.a = colorSolidAlpha;
|
||||
Gizmos.color = c;
|
||||
Gizmos.DrawSphere(transform.position, maxAttenuationDistance);
|
||||
}
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
private void OnDrawGizmosSelected()
|
||||
{
|
||||
// Draw directivity mesh
|
||||
GeneratePolarPatternMesh(directivityDisplayMesh, directivityAlpha, directivityOrder);
|
||||
}
|
||||
|
||||
private void GeneratePolarPatternMesh(Mesh mesh, float alpha, float order)
|
||||
{
|
||||
if (mesh == null)
|
||||
mesh = new Mesh();
|
||||
Vector2[] cardioidVertices2D = GeneratePolarPatternVertices2D(alpha, order, 90);
|
||||
int numVertices = cardioidVertices2D.Length * 2;
|
||||
Vector3[] vertices = new Vector3[numVertices];
|
||||
for (int i = 0; i < cardioidVertices2D.Length; ++i)
|
||||
{
|
||||
var vertex2D = cardioidVertices2D[i];
|
||||
vertices[i] = new Vector3(vertex2D.x, 0.0f, vertex2D.y);
|
||||
vertices[cardioidVertices2D.Length + i] = Quaternion.AngleAxis(45, Vector3.forward) *
|
||||
new Vector3(vertex2D.x, 0.0f, vertex2D.y);
|
||||
}
|
||||
|
||||
int[] indices = new int[cardioidVertices2D.Length * 2 * 3];
|
||||
int idx = 0;
|
||||
for (idx = 0; idx < cardioidVertices2D.Length - 1; ++idx)
|
||||
{
|
||||
indices[idx * 6 + 0] = idx;
|
||||
indices[idx * 6 + 1] = idx + 1;
|
||||
indices[idx * 6 + 2] = idx + cardioidVertices2D.Length;
|
||||
indices[idx * 6 + 3] = idx + 1;
|
||||
indices[idx * 6 + 4] = idx + cardioidVertices2D.Length + 1;
|
||||
indices[idx * 6 + 5] = idx + cardioidVertices2D.Length;
|
||||
}
|
||||
|
||||
// Construct a new mesh for the gizmo.
|
||||
mesh.vertices = vertices;
|
||||
mesh.triangles = indices;
|
||||
mesh.RecalculateNormals();
|
||||
// Draw the mesh.
|
||||
Vector3 scale = 2.0f * Mathf.Max(transform.lossyScale.x, transform.lossyScale.z) * Vector3.one;
|
||||
Color c;
|
||||
c.r = 0.2f;
|
||||
c.g = 0.5f;
|
||||
c.b = 0.7f;
|
||||
c.a = 0.5f;
|
||||
Gizmos.color = c;
|
||||
Gizmos.DrawMesh(mesh, transform.position, transform.rotation, scale);
|
||||
Gizmos.DrawMesh(mesh, transform.position, transform.rotation * Quaternion.AngleAxis(45, Vector3.forward),
|
||||
scale);
|
||||
Gizmos.DrawMesh(mesh, transform.position, transform.rotation * Quaternion.AngleAxis(90, Vector3.forward),
|
||||
scale);
|
||||
Gizmos.DrawMesh(mesh, transform.position, transform.rotation * Quaternion.AngleAxis(135, Vector3.forward),
|
||||
scale);
|
||||
Gizmos.DrawMesh(mesh, transform.position, transform.rotation * Quaternion.AngleAxis(180, Vector3.forward),
|
||||
scale);
|
||||
Gizmos.DrawMesh(mesh, transform.position, transform.rotation * Quaternion.AngleAxis(225, Vector3.forward),
|
||||
scale);
|
||||
Gizmos.DrawMesh(mesh, transform.position, transform.rotation * Quaternion.AngleAxis(270, Vector3.forward),
|
||||
scale);
|
||||
Gizmos.DrawMesh(mesh, transform.position, transform.rotation * Quaternion.AngleAxis(315, Vector3.forward),
|
||||
scale);
|
||||
}
|
||||
|
||||
private Vector2[] GeneratePolarPatternVertices2D(float alpha, float order, int numVertices)
|
||||
{
|
||||
Vector2[] points = new Vector2[numVertices];
|
||||
float interval = Mathf.PI / (numVertices - 1);
|
||||
for (int i = 0; i < numVertices; ++i)
|
||||
{
|
||||
float theta = 0.0f;
|
||||
if (i != numVertices - 1)
|
||||
theta = i * interval;
|
||||
else
|
||||
theta = Mathf.PI;
|
||||
// Magnitude |r| for |theta| in radians.
|
||||
float r = Mathf.Pow(Mathf.Abs((1 - alpha) + alpha * Mathf.Cos(theta)), order);
|
||||
points[i] = new Vector2(r * Mathf.Sin(theta), r * Mathf.Cos(theta));
|
||||
}
|
||||
|
||||
return points;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 30f78ed5e5eb44c188a740990ce49414
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,654 @@
|
||||
// Copyright © 2015-2022 Pico Technology Co., Ltd. All Rights Reserved.
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using PXR_Audio.Spatializer;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
#if UNITY_EDITOR
|
||||
using UnityEditor;
|
||||
#endif
|
||||
|
||||
public partial class PXR_Audio_Spatializer_Context : MonoBehaviour
|
||||
{
|
||||
[Tooltip("Audio backend you prefer to use")] [SerializeField]
|
||||
public SpatializerApiImpl spatializerApiImpl = SpatializerApiImpl.unity;
|
||||
|
||||
private static PXR_Audio.Spatializer.Api _api = null;
|
||||
|
||||
#if UNITY_EDITOR
|
||||
private static SpatializerApiImpl _lastSpatializerApiImpl;
|
||||
#endif
|
||||
public PXR_Audio.Spatializer.Api PXR_Audio_Spatializer_Api
|
||||
{
|
||||
get
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
if (_api == null ||
|
||||
(_lastSpatializerApiImpl != spatializerApiImpl && !EditorApplication.isPlaying))
|
||||
#else
|
||||
if (_api == null)
|
||||
#endif
|
||||
{
|
||||
if (spatializerApiImpl == SpatializerApiImpl.unity)
|
||||
_api = new ApiUnityImpl();
|
||||
else if (spatializerApiImpl == SpatializerApiImpl.wwise)
|
||||
_api = new ApiWwiseImpl();
|
||||
#if UNITY_EDITOR
|
||||
_lastSpatializerApiImpl = spatializerApiImpl;
|
||||
#endif
|
||||
}
|
||||
|
||||
return _api;
|
||||
}
|
||||
}
|
||||
|
||||
private static PXR_Audio_Spatializer_Context _instance;
|
||||
|
||||
public static PXR_Audio_Spatializer_Context Instance => _instance;
|
||||
|
||||
private IntPtr context = IntPtr.Zero;
|
||||
|
||||
private bool initialized = false;
|
||||
|
||||
private bool isSceneDirty = false;
|
||||
|
||||
public bool Initialized
|
||||
{
|
||||
get => initialized;
|
||||
}
|
||||
|
||||
[Tooltip(
|
||||
"Rendering quality for Pico Spatial Audio system. Higher quality gives you better accuracy to real world, while lower quality saves you more computation.\n" +
|
||||
" - You need to re-enable this component after your changed quality during runtime.")]
|
||||
[SerializeField]
|
||||
private PXR_Audio.Spatializer.RenderingMode renderingQuality = PXR_Audio.Spatializer.RenderingMode.MediumQuality;
|
||||
|
||||
#region EDITOR-ONLY SerializedFields
|
||||
|
||||
#if UNITY_EDITOR
|
||||
[SerializeField, HideInInspector] private LayerMask meshBakingLayerMask = ~0;
|
||||
#endif
|
||||
|
||||
#endregion
|
||||
|
||||
public PXR_Audio.Spatializer.RenderingMode RenderingQuality => renderingQuality;
|
||||
|
||||
[Tooltip("Customizable event executed right before Pico Spatial Audio system is initialized for this game.")]
|
||||
[SerializeField]
|
||||
private UnityEvent preInitEvent;
|
||||
|
||||
[Tooltip("Customizable event executed right after Pico Spatial Audio system is initialized for this game.")]
|
||||
[SerializeField]
|
||||
private UnityEvent lateInitEvent;
|
||||
|
||||
private AudioConfiguration audioConfig;
|
||||
|
||||
public AudioConfiguration AudioConfig => audioConfig;
|
||||
|
||||
private bool bypass = true;
|
||||
|
||||
private bool Bypass => bypass;
|
||||
|
||||
static int uuidCounter = 0;
|
||||
|
||||
private static int GetUuid()
|
||||
{
|
||||
var temp = uuidCounter;
|
||||
uuidCounter = (uuidCounter == Int32.MaxValue) ? 0 : (uuidCounter + 1);
|
||||
return temp;
|
||||
}
|
||||
|
||||
private int uuid = -1;
|
||||
public int UUID => uuid;
|
||||
|
||||
public PXR_Audio.Spatializer.Result SubmitMesh(
|
||||
float[] vertices,
|
||||
int verticesCount,
|
||||
int[] indices,
|
||||
int indicesCount,
|
||||
PXR_Audio.Spatializer.AcousticsMaterial material,
|
||||
ref int geometryId)
|
||||
{
|
||||
isSceneDirty = true;
|
||||
return PXR_Audio_Spatializer_Api.SubmitMesh(
|
||||
context,
|
||||
vertices,
|
||||
verticesCount,
|
||||
indices,
|
||||
indicesCount,
|
||||
material,
|
||||
ref geometryId);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result SubmitMeshAndMaterialFactor(
|
||||
float[] vertices,
|
||||
int verticesCount,
|
||||
int[] indices,
|
||||
int indicesCount,
|
||||
float[] absorptionFactor,
|
||||
float scatteringFactor,
|
||||
float transmissionFactor,
|
||||
ref int geometryId)
|
||||
{
|
||||
isSceneDirty = true;
|
||||
return PXR_Audio_Spatializer_Api.SubmitMeshAndMaterialFactor(
|
||||
context,
|
||||
vertices,
|
||||
verticesCount,
|
||||
indices,
|
||||
indicesCount,
|
||||
absorptionFactor,
|
||||
scatteringFactor,
|
||||
transmissionFactor,
|
||||
ref geometryId);
|
||||
}
|
||||
|
||||
public Result SubmitMeshWithConfig(float[] vertices, int verticesCount, int[] indices, int indicesCount,
|
||||
ref MeshConfig config, ref int geometryId)
|
||||
{
|
||||
isSceneDirty = true;
|
||||
return PXR_Audio_Spatializer_Api.SubmitMeshWithConfig(context, vertices, verticesCount, indices, indicesCount,
|
||||
ref config, ref geometryId);
|
||||
}
|
||||
|
||||
public Result UpdateMesh(int geometryId, float[] newVertices, int newVerticesCount, int[] newIndices,
|
||||
int newIndicesCount, ref MeshConfig config, ref int newGeometryId)
|
||||
{
|
||||
isSceneDirty = true;
|
||||
return PXR_Audio_Spatializer_Api.UpdateMesh(context, geometryId, newVertices, newVerticesCount, newIndices,
|
||||
newIndicesCount, ref config, ref newGeometryId);
|
||||
}
|
||||
|
||||
public Result RemoveMesh(int geometryId)
|
||||
{
|
||||
isSceneDirty = true;
|
||||
return PXR_Audio_Spatializer_Api.RemoveMesh(context, geometryId);
|
||||
}
|
||||
|
||||
public int GetNumOfGeometries()
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.GetNumOfGeometries(context);
|
||||
}
|
||||
|
||||
public Result SetMeshConfig(int geometryId, ref MeshConfig config, uint propertyMask)
|
||||
{
|
||||
isSceneDirty = true;
|
||||
return PXR_Audio_Spatializer_Api.SetMeshConfig(context, geometryId, ref config, propertyMask);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result AddSource(
|
||||
PXR_Audio.Spatializer.SourceMode sourceMode,
|
||||
float[] position,
|
||||
ref int sourceId,
|
||||
bool isAsync = false)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.AddSource(
|
||||
context,
|
||||
sourceMode,
|
||||
position,
|
||||
ref sourceId,
|
||||
isAsync);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result AddSourceWithOrientation(
|
||||
PXR_Audio.Spatializer.SourceMode mode,
|
||||
float[] position,
|
||||
float[] front,
|
||||
float[] up,
|
||||
float radius,
|
||||
ref int sourceId,
|
||||
bool isAsync)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.AddSourceWithOrientation(
|
||||
context,
|
||||
mode,
|
||||
position,
|
||||
front,
|
||||
up,
|
||||
radius,
|
||||
ref sourceId,
|
||||
isAsync);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result AddSourceWithConfig(
|
||||
ref PXR_Audio.Spatializer.SourceConfig sourceConfig,
|
||||
ref int sourceId,
|
||||
bool isAsync)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.AddSourceWithConfig(context, ref sourceConfig, ref sourceId, isAsync);
|
||||
}
|
||||
|
||||
public Result SetSourceConfig(int sourceId, ref SourceConfig sourceConfig, uint propertyMask)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.SetSourceConfig(context, sourceId, ref sourceConfig, propertyMask);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result SetSourceAttenuationMode(int sourceId,
|
||||
PXR_Audio.Spatializer.SourceAttenuationMode mode,
|
||||
PXR_Audio.Spatializer.DistanceAttenuationCallback directDistanceAttenuationCallback = null,
|
||||
PXR_Audio.Spatializer.DistanceAttenuationCallback indirectDistanceAttenuationCallback = null)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.SetSourceAttenuationMode(context, sourceId, mode,
|
||||
directDistanceAttenuationCallback, indirectDistanceAttenuationCallback);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result SetSourceRange(int sourceId, float rangeMin, float rangeMax)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.SetSourceRange(context, sourceId, rangeMin, rangeMax);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result RemoveSource(int sourceId)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.RemoveSource(context, sourceId);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result SubmitSourceBuffer(
|
||||
int sourceId,
|
||||
float[] inputBufferPtr,
|
||||
uint numFrames)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.SubmitSourceBuffer(
|
||||
context,
|
||||
sourceId,
|
||||
inputBufferPtr,
|
||||
numFrames);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result SubmitAmbisonicChannelBuffer(
|
||||
float[] ambisonicChannelBuffer,
|
||||
int order,
|
||||
int degree,
|
||||
PXR_Audio.Spatializer.AmbisonicNormalizationType normType,
|
||||
float gain)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.SubmitAmbisonicChannelBuffer(
|
||||
context,
|
||||
ambisonicChannelBuffer,
|
||||
order,
|
||||
degree,
|
||||
normType,
|
||||
gain);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result SubmitInterleavedAmbisonicBuffer(
|
||||
float[] ambisonicBuffer,
|
||||
int ambisonicOrder,
|
||||
PXR_Audio.Spatializer.AmbisonicNormalizationType normType,
|
||||
float gain)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.SubmitInterleavedAmbisonicBuffer(
|
||||
context,
|
||||
ambisonicBuffer,
|
||||
ambisonicOrder,
|
||||
normType,
|
||||
gain);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result SubmitMatrixInputBuffer(
|
||||
float[] inputBuffer,
|
||||
int inputChannelIndex)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.SubmitMatrixInputBuffer(
|
||||
context,
|
||||
inputBuffer,
|
||||
inputChannelIndex);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result GetInterleavedBinauralBuffer(
|
||||
float[] outputBufferPtr,
|
||||
uint numFrames,
|
||||
bool isAccumulative)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.GetInterleavedBinauralBuffer(
|
||||
context,
|
||||
outputBufferPtr,
|
||||
numFrames,
|
||||
isAccumulative);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result GetPlanarBinauralBuffer(
|
||||
float[][] outputBufferPtr,
|
||||
uint numFrames,
|
||||
bool isAccumulative)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.GetPlanarBinauralBuffer(
|
||||
context,
|
||||
outputBufferPtr,
|
||||
numFrames,
|
||||
isAccumulative);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result GetInterleavedLoudspeakersBuffer(
|
||||
float[] outputBufferPtr,
|
||||
uint numFrames)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.GetInterleavedLoudspeakersBuffer(
|
||||
context,
|
||||
outputBufferPtr,
|
||||
numFrames);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result GetPlanarLoudspeakersBuffer(
|
||||
float[][] outputBufferPtr,
|
||||
uint numFrames)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.GetPlanarLoudspeakersBuffer(
|
||||
context,
|
||||
outputBufferPtr,
|
||||
numFrames);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result SetPlaybackMode(
|
||||
PXR_Audio.Spatializer.PlaybackMode playbackMode)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.SetPlaybackMode(
|
||||
context,
|
||||
playbackMode);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result SetLoudspeakerArray(
|
||||
float[] positions,
|
||||
int numLoudspeakers)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.SetLoudspeakerArray(
|
||||
context,
|
||||
positions,
|
||||
numLoudspeakers);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result SetMappingMatrix(
|
||||
float[] matrix,
|
||||
int numInputChannels,
|
||||
int numOutputChannels)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.SetMappingMatrix(
|
||||
context,
|
||||
matrix,
|
||||
numInputChannels,
|
||||
numOutputChannels);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result SetListenerPosition(
|
||||
float[] position)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.SetListenerPosition(
|
||||
context,
|
||||
position);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result SetListenerOrientation(
|
||||
float[] front,
|
||||
float[] up)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.SetListenerOrientation(
|
||||
context,
|
||||
front,
|
||||
up);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result SetListenerPose(
|
||||
float[] position,
|
||||
float[] front,
|
||||
float[] up)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.SetListenerPose(
|
||||
context,
|
||||
position,
|
||||
front,
|
||||
up);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result SetSourcePosition(
|
||||
int sourceId,
|
||||
float[] position)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.SetSourcePosition(
|
||||
context,
|
||||
sourceId,
|
||||
position);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result SetSourceGain(
|
||||
int sourceId,
|
||||
float gain)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.SetSourceGain(
|
||||
context,
|
||||
sourceId,
|
||||
gain);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result SetSourceSize(
|
||||
int sourceId,
|
||||
float volumetricSize)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.SetSourceSize(
|
||||
context,
|
||||
sourceId,
|
||||
volumetricSize);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result UpdateSourceMode(
|
||||
int sourceId,
|
||||
PXR_Audio.Spatializer.SourceMode mode)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.UpdateSourceMode(
|
||||
context,
|
||||
sourceId,
|
||||
mode);
|
||||
}
|
||||
|
||||
public PXR_Audio.Spatializer.Result SetDopplerEffect(int sourceId, bool on)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.SetDopplerEffect(context, sourceId, on);
|
||||
}
|
||||
|
||||
public Result GetAbsorptionFactors(AcousticsMaterial material,
|
||||
float[] absorptionFactor)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.GetAbsorptionFactor(material, absorptionFactor);
|
||||
}
|
||||
|
||||
public Result GetScatteringFactors(AcousticsMaterial material,
|
||||
ref float scatteringFactor)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.GetScatteringFactor(material, ref scatteringFactor);
|
||||
}
|
||||
|
||||
public Result GetTransmissionFactors(AcousticsMaterial material,
|
||||
ref float transmissionFactor)
|
||||
{
|
||||
return PXR_Audio_Spatializer_Api.GetTransmissionFactor(material, ref transmissionFactor);
|
||||
}
|
||||
|
||||
void OnAudioConfigurationChangedEventHandler(bool deviceWasChanged)
|
||||
{
|
||||
audioConfig = AudioSettings.GetConfiguration();
|
||||
ResetContext(renderingQuality);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Setup Spatializer rendering quality.
|
||||
/// </summary>
|
||||
/// <param name="quality">Rendering quality preset.</param>
|
||||
public void SetRenderingQuality(PXR_Audio.Spatializer.RenderingMode quality)
|
||||
{
|
||||
renderingQuality = quality;
|
||||
AudioSettings.Reset(AudioSettings.GetConfiguration());
|
||||
Debug.Log("Pico Spatializer has set rendering quality to: " + renderingQuality);
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
if (_instance == null)
|
||||
{
|
||||
_instance = this;
|
||||
|
||||
AudioSettings.OnAudioConfigurationChanged += OnAudioConfigurationChangedEventHandler;
|
||||
|
||||
// Create context
|
||||
StartInternal(renderingQuality);
|
||||
Debug.Log("Pico Spatializer Initialized.");
|
||||
|
||||
DontDestroyOnLoad(this);
|
||||
}
|
||||
else if (_instance != this)
|
||||
{
|
||||
Destroy(this);
|
||||
}
|
||||
}
|
||||
|
||||
private void StartInternal(PXR_Audio.Spatializer.RenderingMode quality)
|
||||
{
|
||||
preInitEvent.Invoke();
|
||||
uuid = GetUuid();
|
||||
PXR_Audio.Spatializer.Result ret = Result.Success;
|
||||
|
||||
audioConfig = AudioSettings.GetConfiguration();
|
||||
ret = PXR_Audio_Spatializer_Api.CreateContext(
|
||||
ref context,
|
||||
quality,
|
||||
(uint)audioConfig.dspBufferSize,
|
||||
(uint)audioConfig.sampleRate);
|
||||
if (ret != PXR_Audio.Spatializer.Result.Success)
|
||||
{
|
||||
Debug.LogError("Failed to create context, error code: " + ret);
|
||||
}
|
||||
|
||||
ret = PXR_Audio_Spatializer_Api.InitializeContext(context);
|
||||
if (ret != PXR_Audio.Spatializer.Result.Success)
|
||||
{
|
||||
Debug.LogError("Failed to initialize context, error code: " + ret);
|
||||
}
|
||||
|
||||
// Add all the geometries back
|
||||
PXR_Audio_Spatializer_SceneGeometry[] geometries = FindObjectsOfType<PXR_Audio_Spatializer_SceneGeometry>();
|
||||
for (int geoId = 0; geoId < geometries.Length; ++geoId)
|
||||
{
|
||||
// For all found geometry and material pair, submit them into Pico spatializer
|
||||
geometries[geoId].SubmitMeshToContext();
|
||||
geometries[geoId].SubmitStaticMeshToContext();
|
||||
if (ret != PXR_Audio.Spatializer.Result.Success)
|
||||
{
|
||||
Debug.LogError("Failed to submit geometry #" + geoId + ", error code: " + ret);
|
||||
}
|
||||
}
|
||||
|
||||
ret = PXR_Audio_Spatializer_Api.CommitScene(context);
|
||||
if (ret != PXR_Audio.Spatializer.Result.Success)
|
||||
{
|
||||
Debug.LogError("Failed to commit scene, error code: " + ret);
|
||||
}
|
||||
|
||||
lateInitEvent.Invoke();
|
||||
|
||||
initialized = true;
|
||||
if (spatializerApiImpl != SpatializerApiImpl.wwise)
|
||||
{
|
||||
// Add all the sources back
|
||||
PXR_Audio_Spatializer_AudioSource[] sources = FindObjectsOfType<PXR_Audio_Spatializer_AudioSource>();
|
||||
for (int i = 0; i < sources.Length; ++i)
|
||||
{
|
||||
sources[i].RegisterInternal();
|
||||
}
|
||||
}
|
||||
|
||||
// Add listener back
|
||||
PXR_Audio_Spatializer_AudioListener listener = FindObjectOfType<PXR_Audio_Spatializer_AudioListener>();
|
||||
listener.RegisterInternal();
|
||||
}
|
||||
|
||||
private void DestroyInternal()
|
||||
{
|
||||
initialized = false;
|
||||
uuid = -1;
|
||||
if (spatializerApiImpl == SpatializerApiImpl.wwise)
|
||||
{
|
||||
PXR_Audio_Spatializer_Api.Destroy(context);
|
||||
context = IntPtr.Zero;
|
||||
return;
|
||||
}
|
||||
|
||||
// Wait until all sources and listener's on-going audio DSP process had finished
|
||||
bool canContinue = true;
|
||||
do
|
||||
{
|
||||
canContinue = true;
|
||||
PXR_Audio_Spatializer_AudioListener[] listeners = FindObjectsOfType<PXR_Audio_Spatializer_AudioListener>();
|
||||
foreach (var listener in listeners)
|
||||
{
|
||||
if (listener != null && listener.IsAudioDSPInProgress)
|
||||
{
|
||||
canContinue = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
PXR_Audio_Spatializer_AudioSource[] sources = FindObjectsOfType<PXR_Audio_Spatializer_AudioSource>();
|
||||
foreach (var source in sources)
|
||||
{
|
||||
if (source != null && source.IsAudioDSPInProgress)
|
||||
{
|
||||
canContinue = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} while (!canContinue);
|
||||
|
||||
PXR_Audio_Spatializer_Api.Destroy(context);
|
||||
context = IntPtr.Zero;
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
if (_instance != null && _instance == this)
|
||||
{
|
||||
_instance = null;
|
||||
|
||||
// Remove context reset handler when destructing context
|
||||
// https://docs.microsoft.com/en-us/dotnet/desktop/winforms/controls/how-to-add-an-event-handler?view=netdesktop-6.0
|
||||
AudioSettings.OnAudioConfigurationChanged -= OnAudioConfigurationChangedEventHandler;
|
||||
DestroyInternal();
|
||||
}
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
if (isSceneDirty)
|
||||
{
|
||||
PXR_Audio_Spatializer_Api.CommitScene(context);
|
||||
isSceneDirty = false;
|
||||
}
|
||||
|
||||
PXR_Audio_Spatializer_Api.UpdateScene(context);
|
||||
}
|
||||
|
||||
void ResetContext(PXR_Audio.Spatializer.RenderingMode quality)
|
||||
{
|
||||
DestroyInternal();
|
||||
StartInternal(quality);
|
||||
|
||||
if (spatializerApiImpl == SpatializerApiImpl.wwise)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Resume all sources playback
|
||||
var sources = FindObjectsOfType<PXR_Audio_Spatializer_AudioSource>();
|
||||
foreach (var source in sources)
|
||||
{
|
||||
source.Resume();
|
||||
}
|
||||
|
||||
// Resume all ambisonic sources playback
|
||||
var ambisonicSources =
|
||||
FindObjectsOfType<PXR_Audio_Spatializer_AmbisonicSource>();
|
||||
foreach (var source in ambisonicSources)
|
||||
{
|
||||
source.Resume();
|
||||
}
|
||||
|
||||
Debug.Log("Pico Spatializer Context restarted.");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3083421a52eca4fb186aecb7e4f143a9
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,165 @@
|
||||
using System;
|
||||
using PXR_Audio.Spatializer;
|
||||
using UnityEngine;
|
||||
using Unity.XR.PXR;
|
||||
using UnityEngine.XR;
|
||||
|
||||
public class PXR_Audio_Spatializer_MRSceneGeometryManager : MonoBehaviour
|
||||
{
|
||||
public bool meshUpdate = true;
|
||||
public bool ignoreMeshLabel = false;
|
||||
private static PXR_Audio_Spatializer_MRSceneGeometryManager _instance = null;
|
||||
|
||||
void OnEnable()
|
||||
{
|
||||
PXR_SpatialMeshManager.MeshAdded += AddAcousticSceneGeometries;
|
||||
if (meshUpdate)
|
||||
PXR_SpatialMeshManager.MeshUpdated += UpdateAcousticSceneGeometries;
|
||||
Debug.Log("PXR_Audio_Spatializer_MRSceneGeometryManager attached");
|
||||
}
|
||||
|
||||
void OnDisable()
|
||||
{
|
||||
PXR_SpatialMeshManager.MeshAdded -= AddAcousticSceneGeometries;
|
||||
if (meshUpdate)
|
||||
PXR_SpatialMeshManager.MeshUpdated -= UpdateAcousticSceneGeometries;
|
||||
Debug.Log("PXR_Audio_Spatializer_MRSceneGeometryManager detached");
|
||||
}
|
||||
|
||||
private void AddAcousticSceneGeometries(Guid guid, GameObject o)
|
||||
{
|
||||
// Add acoustic mesh
|
||||
var acousticMesh = o.GetComponent<PXR_Audio_Spatializer_SceneGeometry>();
|
||||
var acousticMaterial = o.GetComponent<PXR_Audio_Spatializer_SceneMaterial>();
|
||||
|
||||
if (acousticMesh && acousticMaterial)
|
||||
{
|
||||
UpdateAcousticSceneGeometries(guid, o);
|
||||
}
|
||||
else if (PXR_Plugin.MixedReality.SpatialMeshData.TryGetValue(guid, out var spatialMesh))
|
||||
{
|
||||
var acousticMeshNew = o.AddComponent<PXR_Audio_Spatializer_SceneGeometry>();
|
||||
var acousticMaterialNew = o.GetComponent<PXR_Audio_Spatializer_SceneMaterial>();
|
||||
UpdateMaterialBasedOnLabel(spatialMesh.labels[0], ref acousticMaterialNew);
|
||||
acousticMeshNew.UpdateMaterialType(acousticMaterialNew.materialPreset);
|
||||
acousticMeshNew.UpdateAbsorptionMultiband(acousticMaterialNew.absorption);
|
||||
acousticMeshNew.UpdateScattering(acousticMaterialNew.scattering);
|
||||
acousticMeshNew.UpdateTransmission(acousticMaterialNew.transmission);
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateAcousticSceneGeometries(Guid guid, GameObject o)
|
||||
{
|
||||
var acousticMesh = o.GetComponent<PXR_Audio_Spatializer_SceneGeometry>();
|
||||
var acousticMaterial = o.GetComponent<PXR_Audio_Spatializer_SceneMaterial>();
|
||||
if (PXR_Plugin.MixedReality.SpatialMeshData.TryGetValue(guid, out var spatialMesh)
|
||||
&& acousticMesh && acousticMaterial)
|
||||
{
|
||||
UpdateMaterialBasedOnLabel(spatialMesh.labels[0], ref acousticMaterial);
|
||||
acousticMesh.UpdateMeshInContext();
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateMaterialBasedOnLabel(PxrSemanticLabel label, ref PXR_Audio_Spatializer_SceneMaterial material)
|
||||
{
|
||||
if (ignoreMeshLabel)
|
||||
{
|
||||
material.materialPreset = AcousticsMaterial.Custom;
|
||||
material.absorption[0] = 0;
|
||||
material.absorption[1] = 0;
|
||||
material.absorption[2] = 0;
|
||||
material.absorption[3] = 0;
|
||||
material.scattering = 0.2f;
|
||||
material.transmission = 0.5f;
|
||||
}
|
||||
else
|
||||
{
|
||||
AcousticsMaterial acousticsMaterial = AcousticsMaterial.AcousticTile;
|
||||
switch (label)
|
||||
{
|
||||
case PxrSemanticLabel.Floor:
|
||||
acousticsMaterial = AcousticsMaterial.WoodFloor;
|
||||
break;
|
||||
case PxrSemanticLabel.Ceiling:
|
||||
case PxrSemanticLabel.Wall:
|
||||
acousticsMaterial = AcousticsMaterial.PlasterOnConcreteBlock;
|
||||
break;
|
||||
case PxrSemanticLabel.Door:
|
||||
acousticsMaterial = AcousticsMaterial.WoodThin;
|
||||
break;
|
||||
case PxrSemanticLabel.Window:
|
||||
acousticsMaterial = AcousticsMaterial.Glass;
|
||||
break;
|
||||
case PxrSemanticLabel.Opening:
|
||||
material.materialPreset = AcousticsMaterial.Custom;
|
||||
material.absorption[0] = 1;
|
||||
material.absorption[1] = 1;
|
||||
material.absorption[2] = 1;
|
||||
material.absorption[3] = 1;
|
||||
material.scattering = 0;
|
||||
material.transmission = 1;
|
||||
break;
|
||||
case PxrSemanticLabel.Table:
|
||||
acousticsMaterial = AcousticsMaterial.WoodThick;
|
||||
break;
|
||||
case PxrSemanticLabel.Sofa:
|
||||
acousticsMaterial = AcousticsMaterial.AcousticTile;
|
||||
break;
|
||||
case PxrSemanticLabel.Chair:
|
||||
acousticsMaterial = AcousticsMaterial.WoodThin;
|
||||
break;
|
||||
case PxrSemanticLabel.Human:
|
||||
acousticsMaterial = AcousticsMaterial.AcousticTile;
|
||||
break;
|
||||
case PxrSemanticLabel.VirtualWall:
|
||||
acousticsMaterial = AcousticsMaterial.AcousticTile;
|
||||
break;
|
||||
case PxrSemanticLabel.Curtain:
|
||||
acousticsMaterial = AcousticsMaterial.Curtain;
|
||||
break;
|
||||
case PxrSemanticLabel.Cabinet:
|
||||
acousticsMaterial = AcousticsMaterial.WoodThick;
|
||||
break;
|
||||
case PxrSemanticLabel.Bed:
|
||||
acousticsMaterial = AcousticsMaterial.AcousticTile;
|
||||
break;
|
||||
case PxrSemanticLabel.Plant:
|
||||
acousticsMaterial = AcousticsMaterial.Foliage;
|
||||
break;
|
||||
case PxrSemanticLabel.Screen:
|
||||
acousticsMaterial = AcousticsMaterial.Glass;
|
||||
break;
|
||||
case PxrSemanticLabel.Refrigerator:
|
||||
case PxrSemanticLabel.WashingMachine:
|
||||
case PxrSemanticLabel.AirConditioner:
|
||||
acousticsMaterial = AcousticsMaterial.PlasterOnConcreteBlock;
|
||||
break;
|
||||
case PxrSemanticLabel.Lamp:
|
||||
acousticsMaterial = AcousticsMaterial.WoodThin;
|
||||
break;
|
||||
case PxrSemanticLabel.WallArt:
|
||||
acousticsMaterial = AcousticsMaterial.PlasterOnConcreteBlock;
|
||||
break;
|
||||
default:
|
||||
acousticsMaterial = AcousticsMaterial.AcousticTile;
|
||||
break;
|
||||
}
|
||||
|
||||
UpdateMaterialBasedOnAcousticLabel(acousticsMaterial, ref material);
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateMaterialBasedOnAcousticLabel(AcousticsMaterial acousticLabel,
|
||||
ref PXR_Audio_Spatializer_SceneMaterial material)
|
||||
{
|
||||
if (acousticLabel == AcousticsMaterial.Custom)
|
||||
return;
|
||||
if (PXR_Audio_Spatializer_Context.Instance == null)
|
||||
return;
|
||||
material.materialPreset = AcousticsMaterial.Custom;
|
||||
PXR_Audio_Spatializer_Context.Instance.GetAbsorptionFactors(acousticLabel, material.absorption);
|
||||
PXR_Audio_Spatializer_Context.Instance.GetScatteringFactors(acousticLabel, ref material.scattering);
|
||||
PXR_Audio_Spatializer_Context.Instance.GetTransmissionFactors(acousticLabel, ref material.transmission);
|
||||
material.transmission = Math.Min(material.transmission + 0.5f, 1.0f);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8bc043bac160f4079b5ff39f12a5cbcb
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,478 @@
|
||||
// Copyright © 2015-2022 Pico Technology Co., Ltd. All Rights Reserved.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using PXR_Audio.Spatializer;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
[RequireComponent(typeof(PXR_Audio_Spatializer_SceneMaterial))]
|
||||
public class PXR_Audio_Spatializer_SceneGeometry : MonoBehaviour
|
||||
{
|
||||
[Tooltip("Whether include meshes in children game objects as the shape of this acoustic geometry.")]
|
||||
[SerializeField] private bool includeChildren = false;
|
||||
|
||||
[Tooltip("Whether visualize meshes in current scene that are included as the shape of this acoustic geometry.\n" +
|
||||
" - non-static meshes are visualized using white wire frames;\n" +
|
||||
" - static meshes are visualized using green wire frames.")]
|
||||
[SerializeField] private bool visualizeMeshInEditor = false;
|
||||
|
||||
[Tooltip("Baked static mesh used as the shape of this acoustic geometry.")]
|
||||
[SerializeField] private Mesh bakedStaticMesh;
|
||||
|
||||
#region EDITOR-ONLY SerializedFields
|
||||
|
||||
#if UNITY_EDITOR
|
||||
[SerializeField] private LayerMask meshBakingLayerMask = ~0;
|
||||
[SerializeField, HideInInspector] private string currentBakedStaticMeshAssetPath = null;
|
||||
#endif
|
||||
|
||||
#endregion
|
||||
|
||||
public bool isStaticMeshBaked => bakedStaticMesh != null;
|
||||
|
||||
private int geometryId = -1;
|
||||
|
||||
public int GeometryId
|
||||
{
|
||||
get => geometryId;
|
||||
}
|
||||
|
||||
private int staticGeometryID = -1;
|
||||
|
||||
public int StaticGeometryId => staticGeometryID;
|
||||
|
||||
private PXR_Audio_Spatializer_SceneMaterial material;
|
||||
|
||||
public PXR_Audio_Spatializer_SceneMaterial Material
|
||||
{
|
||||
get
|
||||
{
|
||||
if (material == null)
|
||||
{
|
||||
material = GetComponent<PXR_Audio_Spatializer_SceneMaterial>();
|
||||
}
|
||||
|
||||
return material;
|
||||
}
|
||||
}
|
||||
|
||||
private MeshConfig meshConfig;
|
||||
private uint propertyMask = 0;
|
||||
|
||||
private int currentContextUuid = -2;
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
if (PXR_Audio_Spatializer_Context.Instance == null) return;
|
||||
|
||||
// If geometries are added after context is initialized
|
||||
if (PXR_Audio_Spatializer_Context.Instance.UUID != currentContextUuid)
|
||||
{
|
||||
var ret = SubmitMeshToContext();
|
||||
var staticRet = SubmitStaticMeshToContext();
|
||||
}
|
||||
else
|
||||
{
|
||||
meshConfig = new MeshConfig(true, Material, transform.localToWorldMatrix);
|
||||
if (geometryId >= 0)
|
||||
PXR_Audio_Spatializer_Context.Instance.SetMeshConfig(geometryId, ref meshConfig,
|
||||
(uint)MeshProperty.All);
|
||||
if (staticGeometryID >= 0)
|
||||
PXR_Audio_Spatializer_Context.Instance.SetMeshConfig(staticGeometryID, ref meshConfig,
|
||||
(uint)MeshProperty.All);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
if (PXR_Audio_Spatializer_Context.Instance == null) return;
|
||||
if (PXR_Audio_Spatializer_Context.Instance.UUID != currentContextUuid) return;
|
||||
|
||||
meshConfig.enabled = false;
|
||||
if (geometryId >= 0)
|
||||
PXR_Audio_Spatializer_Context.Instance.SetMeshConfig(geometryId, ref meshConfig,
|
||||
(uint)MeshProperty.Enabled);
|
||||
if (staticGeometryID >= 0)
|
||||
PXR_Audio_Spatializer_Context.Instance.SetMeshConfig(staticGeometryID, ref meshConfig,
|
||||
(uint)MeshProperty.Enabled);
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
RemoveMeshFromContext();
|
||||
}
|
||||
|
||||
private void RemoveMeshFromContext()
|
||||
{
|
||||
if (PXR_Audio_Spatializer_Context.Instance == null) return;
|
||||
if (PXR_Audio_Spatializer_Context.Instance.UUID != currentContextUuid) return;
|
||||
if (geometryId >= 0)
|
||||
{
|
||||
PXR_Audio_Spatializer_Context.Instance.RemoveMesh(geometryId);
|
||||
Debug.LogFormat("Removed geometry #{0}, gameObject name is {1}", geometryId.ToString(),
|
||||
name);
|
||||
}
|
||||
|
||||
if (staticGeometryID >= 0)
|
||||
{
|
||||
PXR_Audio_Spatializer_Context.Instance.RemoveMesh(staticGeometryID);
|
||||
Debug.LogFormat("Removed static geometry #{0}, gameObject name is {1}", staticGeometryID.ToString(),
|
||||
name);
|
||||
}
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (PXR_Audio_Spatializer_Context.Instance == null) return;
|
||||
|
||||
// // If geometries are added after context is initialized
|
||||
// if (PXR_Audio_Spatializer_Context.Instance.UUID != currentContextUuid)
|
||||
// {
|
||||
// var ret = SubmitMeshToContext();
|
||||
// var staticRet = SubmitStaticMeshToContext();
|
||||
// }
|
||||
|
||||
if (transform.hasChanged)
|
||||
{
|
||||
meshConfig.SetTransformMatrix4x4(transform.localToWorldMatrix);
|
||||
propertyMask |= (uint)MeshProperty.ToWorldTransform;
|
||||
transform.hasChanged = false;
|
||||
}
|
||||
|
||||
if (propertyMask > 0)
|
||||
{
|
||||
if (geometryId >= 0)
|
||||
PXR_Audio_Spatializer_Context.Instance.SetMeshConfig(geometryId, ref meshConfig,
|
||||
propertyMask);
|
||||
if (staticGeometryID >= 0)
|
||||
PXR_Audio_Spatializer_Context.Instance.SetMeshConfig(staticGeometryID, ref meshConfig,
|
||||
propertyMask);
|
||||
|
||||
propertyMask = 0;
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateAbsorptionMultiband(float[] absorptions)
|
||||
{
|
||||
meshConfig.materialType = AcousticsMaterial.Custom;
|
||||
meshConfig.absorption.v0 = Material.absorption[0] = absorptions[0];
|
||||
meshConfig.absorption.v1 = Material.absorption[1] = absorptions[1];
|
||||
meshConfig.absorption.v2 = Material.absorption[2] = absorptions[2];
|
||||
meshConfig.absorption.v3 = Material.absorption[3] = absorptions[3];
|
||||
propertyMask |= (uint)MeshProperty.Material | (uint)MeshProperty.Absorption;
|
||||
}
|
||||
|
||||
public void UpdateScattering(float scattering)
|
||||
{
|
||||
meshConfig.materialType = AcousticsMaterial.Custom;
|
||||
meshConfig.scattering = Material.scattering = scattering;
|
||||
propertyMask |= (uint)MeshProperty.Material | (uint)MeshProperty.Scattering;
|
||||
}
|
||||
|
||||
public void UpdateTransmission(float transmission)
|
||||
{
|
||||
meshConfig.materialType = AcousticsMaterial.Custom;
|
||||
meshConfig.transmission = Material.transmission = transmission;
|
||||
propertyMask |= (uint)MeshProperty.Material | (uint)MeshProperty.Transmission;
|
||||
}
|
||||
|
||||
public void UpdateMaterialType(PXR_Audio.Spatializer.AcousticsMaterial materialType)
|
||||
{
|
||||
meshConfig.materialType = materialType;
|
||||
propertyMask |= (uint)MeshProperty.Material;
|
||||
}
|
||||
|
||||
private void GetAllMeshFilter(Transform transform, bool includeChildren, List<MeshFilter> meshFilterList,
|
||||
bool isStatic, LayerMask layerMask)
|
||||
{
|
||||
if (includeChildren)
|
||||
{
|
||||
int childCount = transform.childCount;
|
||||
for (int i = 0; i < childCount; i++)
|
||||
{
|
||||
var childTransform = transform.GetChild(i);
|
||||
if (childTransform.GetComponent<PXR_Audio_Spatializer_SceneGeometry>() == null)
|
||||
{
|
||||
GetAllMeshFilter(childTransform.transform, includeChildren, meshFilterList, isStatic, layerMask);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Gather this mesh only when
|
||||
// 1. Its isStatic flag is equal to our requirement
|
||||
// 2. Its layer belongs to layerMask set
|
||||
if (((1 << transform.gameObject.layer) & layerMask) != 0)
|
||||
{
|
||||
var meshFilterArray = transform.GetComponents<MeshFilter>();
|
||||
// cases we don't add to mesh filter list
|
||||
// 1. meshFilter.sharedmesh == null
|
||||
// 2. meshFilter.sharedmesh.isReadable == false
|
||||
if (meshFilterArray != null)
|
||||
{
|
||||
foreach (var meshFilter in meshFilterArray)
|
||||
{
|
||||
if (meshFilter != null && meshFilter.sharedMesh != null &&
|
||||
(
|
||||
(isStatic && (transform.gameObject.isStatic || !meshFilter.sharedMesh.isReadable)) ||
|
||||
(!isStatic && (!transform.gameObject.isStatic && meshFilter.sharedMesh.isReadable))
|
||||
))
|
||||
{
|
||||
meshFilterList.Add(meshFilter);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static Mesh CombineMeshes(List<MeshFilter> meshFilterList, Transform rootTransform)
|
||||
{
|
||||
if (meshFilterList.Count == 1)
|
||||
return meshFilterList[0].mesh;
|
||||
|
||||
Mesh combinedMesh = new Mesh
|
||||
{
|
||||
name = "combined meshes",
|
||||
indexFormat = UnityEngine.Rendering.IndexFormat.UInt32
|
||||
};
|
||||
|
||||
var combinedVertices = Array.Empty<Vector3>();
|
||||
var combinedIndices = Array.Empty<int>();
|
||||
// Accumulate combined vertices buffer size
|
||||
foreach (var meshFilter in meshFilterList)
|
||||
{
|
||||
int vertexOffset = combinedVertices.Length;
|
||||
combinedVertices = combinedVertices.Concat(meshFilter.sharedMesh.vertices).ToArray();
|
||||
int vertexSegmentEnd = combinedVertices.Length;
|
||||
var toWorld = rootTransform.worldToLocalMatrix *
|
||||
meshFilter.transform.localToWorldMatrix;
|
||||
for (int i = vertexOffset; i < vertexSegmentEnd; ++i)
|
||||
{
|
||||
combinedVertices[i] = toWorld.MultiplyPoint3x4(combinedVertices[i]);
|
||||
}
|
||||
|
||||
var trianglesStartIdx = combinedIndices.Length;
|
||||
combinedIndices = combinedIndices.Concat(meshFilter.sharedMesh.triangles).ToArray();
|
||||
var trianglesEndIdx = combinedIndices.Length;
|
||||
for (var i = trianglesStartIdx; i < trianglesEndIdx; ++i)
|
||||
{
|
||||
combinedIndices[i] += vertexOffset;
|
||||
}
|
||||
}
|
||||
|
||||
combinedMesh.vertices = combinedVertices;
|
||||
combinedMesh.triangles = combinedIndices;
|
||||
combinedMesh.RecalculateNormals();
|
||||
|
||||
return combinedMesh;
|
||||
}
|
||||
|
||||
private static float[] FlattenVerticesBuffer(Vector3[] verticesBuffer)
|
||||
{
|
||||
float[] vertices = new float[verticesBuffer.Length * 3];
|
||||
int index = 0;
|
||||
foreach (Vector3 vertex in verticesBuffer)
|
||||
{
|
||||
vertices[index++] = vertex.x;
|
||||
vertices[index++] = vertex.y;
|
||||
vertices[index++] = vertex.z;
|
||||
}
|
||||
|
||||
return vertices;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Submit non-static mesh of this geometry and its material into spatializer engine context
|
||||
/// </summary>
|
||||
/// <returns>Result of static mesh submission</returns>
|
||||
public PXR_Audio.Spatializer.Result SubmitMeshToContext(bool showLog = true)
|
||||
{
|
||||
// find all meshes
|
||||
var meshFilterList = new List<MeshFilter>();
|
||||
GetAllMeshFilter(transform, includeChildren, meshFilterList, false, ~0);
|
||||
|
||||
// Combine all meshes
|
||||
Mesh combinedMesh = CombineMeshes(meshFilterList, transform);
|
||||
|
||||
// flatten vertices buffer into a float array
|
||||
float[] vertices = FlattenVerticesBuffer(combinedMesh.vertices);
|
||||
|
||||
meshConfig = new MeshConfig(enabled, Material, transform.localToWorldMatrix);
|
||||
|
||||
// Submit all meshes
|
||||
PXR_Audio.Spatializer.Result result = PXR_Audio_Spatializer_Context.Instance.SubmitMeshWithConfig(
|
||||
vertices, vertices.Length / 3,
|
||||
combinedMesh.triangles, combinedMesh.triangles.Length / 3,
|
||||
ref meshConfig, ref geometryId);
|
||||
|
||||
if (showLog)
|
||||
{
|
||||
if (result != Result.Success)
|
||||
Debug.LogError("Failed to submit audio mesh: " + gameObject.name + ", Error code is: " + result);
|
||||
else
|
||||
Debug.LogFormat("Submitted geometry #{0}, gameObject name is {1}", geometryId.ToString(),
|
||||
name);
|
||||
}
|
||||
|
||||
if (result == Result.Success)
|
||||
currentContextUuid = PXR_Audio_Spatializer_Context.Instance.UUID;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Submit static mesh of this geometry and its material into spatializer engine context
|
||||
/// </summary>
|
||||
/// <returns>Result of static mesh submission</returns>
|
||||
public PXR_Audio.Spatializer.Result SubmitStaticMeshToContext(bool showLog = true)
|
||||
{
|
||||
PXR_Audio.Spatializer.Result result = Result.Success;
|
||||
if (bakedStaticMesh != null)
|
||||
{
|
||||
float[] tempVertices = FlattenVerticesBuffer(bakedStaticMesh.vertices);
|
||||
|
||||
meshConfig = new MeshConfig(enabled, Material, transform.localToWorldMatrix);
|
||||
|
||||
result = PXR_Audio_Spatializer_Context.Instance.SubmitMeshWithConfig(tempVertices,
|
||||
bakedStaticMesh.vertices.Length, bakedStaticMesh.triangles,
|
||||
bakedStaticMesh.triangles.Length / 3, ref meshConfig,
|
||||
ref staticGeometryID);
|
||||
|
||||
if (showLog)
|
||||
{
|
||||
if (result != Result.Success)
|
||||
Debug.LogError("Failed to submit static audio mesh: " + gameObject.name + ", Error code is: " +
|
||||
result);
|
||||
else
|
||||
Debug.LogFormat("Submitted static geometry #{0}, gameObject name is {1}", staticGeometryID.ToString(),
|
||||
name);
|
||||
}
|
||||
}
|
||||
|
||||
if (result == Result.Success)
|
||||
currentContextUuid = PXR_Audio_Spatializer_Context.Instance.UUID;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public Result UpdateMeshInContext()
|
||||
{
|
||||
// find all meshes
|
||||
var meshFilterList = new List<MeshFilter>();
|
||||
GetAllMeshFilter(transform, includeChildren, meshFilterList, false, ~0);
|
||||
|
||||
// Combine all meshes
|
||||
Mesh combinedMesh = CombineMeshes(meshFilterList, transform);
|
||||
|
||||
// flatten vertices buffer into a float array
|
||||
float[] vertices = FlattenVerticesBuffer(combinedMesh.vertices);
|
||||
|
||||
meshConfig = new MeshConfig(enabled, Material, transform.localToWorldMatrix);
|
||||
|
||||
// Submit all meshes
|
||||
Result result = PXR_Audio_Spatializer_Context.Instance.UpdateMesh(geometryId,
|
||||
vertices, vertices.Length / 3,
|
||||
combinedMesh.triangles, combinedMesh.triangles.Length / 3,
|
||||
ref meshConfig, ref geometryId);
|
||||
|
||||
if (result == Result.Success)
|
||||
currentContextUuid = PXR_Audio_Spatializer_Context.Instance.UUID;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
#if UNITY_EDITOR
|
||||
public int BakeStaticMesh(LayerMask layerMask)
|
||||
{
|
||||
List<MeshFilter> meshList = new List<MeshFilter>();
|
||||
GetAllMeshFilter(transform, includeChildren, meshList, true, meshBakingLayerMask);
|
||||
|
||||
SerializedObject serializedObject = new SerializedObject(this);
|
||||
if (meshList.Count == 0)
|
||||
{
|
||||
bakedStaticMesh = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
bakedStaticMesh = CombineMeshes(meshList, transform);
|
||||
bakedStaticMesh.name = "baked mesh for ygg";
|
||||
}
|
||||
|
||||
serializedObject.FindProperty("bakedStaticMesh").objectReferenceValue = bakedStaticMesh;
|
||||
|
||||
if (bakedStaticMesh != null)
|
||||
{
|
||||
System.IO.Directory.CreateDirectory("Assets/Resources/PxrAudioSpatializerBakedSceneMeshes/");
|
||||
if (!string.IsNullOrEmpty(currentBakedStaticMeshAssetPath))
|
||||
{
|
||||
AssetDatabase.DeleteAsset(currentBakedStaticMeshAssetPath);
|
||||
}
|
||||
|
||||
currentBakedStaticMeshAssetPath = "Assets/Resources/PxrAudioSpatializerBakedSceneMeshes/" + name + "_" +
|
||||
GetInstanceID() + "_" +
|
||||
System.DateTime.UtcNow.ToBinary() + ".yggmesh";
|
||||
serializedObject.FindProperty("currentBakedStaticMeshAssetPath").stringValue =
|
||||
currentBakedStaticMeshAssetPath;
|
||||
AssetDatabase.CreateAsset(bakedStaticMesh, currentBakedStaticMeshAssetPath);
|
||||
AssetDatabase.SaveAssets();
|
||||
}
|
||||
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
return meshList.Count;
|
||||
}
|
||||
|
||||
public void ClearBakeStaticMesh()
|
||||
{
|
||||
SerializedObject serializedObject = new SerializedObject(this);
|
||||
bakedStaticMesh = null;
|
||||
serializedObject.FindProperty("bakedStaticMesh").objectReferenceValue = null;
|
||||
if (!string.IsNullOrEmpty(currentBakedStaticMeshAssetPath))
|
||||
{
|
||||
AssetDatabase.DeleteAsset(currentBakedStaticMeshAssetPath);
|
||||
currentBakedStaticMeshAssetPath = null;
|
||||
serializedObject.FindProperty("currentBakedStaticMeshAssetPath").stringValue =
|
||||
currentBakedStaticMeshAssetPath;
|
||||
}
|
||||
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
#endif
|
||||
|
||||
public void OnDrawGizmos()
|
||||
{
|
||||
if (visualizeMeshInEditor)
|
||||
{
|
||||
// Visualize non-static meshes
|
||||
// find all MeshFilter
|
||||
var meshFilterList = new List<MeshFilter>();
|
||||
GetAllMeshFilter(transform, includeChildren, meshFilterList, false, ~0);
|
||||
|
||||
for (int i = 0; i < meshFilterList.Count; i++)
|
||||
{
|
||||
var mesh = meshFilterList[i].sharedMesh;
|
||||
var transform = meshFilterList[i].transform;
|
||||
Gizmos.DrawWireMesh(mesh,
|
||||
transform.position, transform.rotation, transform.localScale);
|
||||
}
|
||||
|
||||
// Visualize baked static meshes
|
||||
if (isStaticMeshBaked)
|
||||
{
|
||||
Color colorBackUp = Gizmos.color;
|
||||
Color c;
|
||||
c.r = 0.0f;
|
||||
c.g = 0.7f;
|
||||
c.b = 0.0f;
|
||||
c.a = 1.0f;
|
||||
Gizmos.color = c;
|
||||
var gizmosMatrixBackup = Gizmos.matrix;
|
||||
Gizmos.matrix = transform.localToWorldMatrix;
|
||||
Gizmos.DrawWireMesh(bakedStaticMesh);
|
||||
Gizmos.color = colorBackUp;
|
||||
Gizmos.matrix = gizmosMatrixBackup;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 555afd84b04c3471788b8eada321c090
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,84 @@
|
||||
// Copyright © 2015-2022 Pico Technology Co., Ltd. All Rights Reserved.
|
||||
|
||||
using UnityEngine;
|
||||
|
||||
public class PXR_Audio_Spatializer_SceneMaterial : MonoBehaviour
|
||||
{
|
||||
[Tooltip("Acoustic material preset corresponding to real-world material types. " +
|
||||
"Absorption, scattering, and transmission will be automatically set based on the physical nature of the selected material.\n" +
|
||||
"Deviating acoustic parameters away from preset values will automatically set this field to 'Custom'")]
|
||||
[SerializeField]
|
||||
public PXR_Audio.Spatializer.AcousticsMaterial
|
||||
materialPreset = PXR_Audio.Spatializer.AcousticsMaterial.AcousticTile;
|
||||
|
||||
private PXR_Audio.Spatializer.AcousticsMaterial lastMaterialPreset =
|
||||
PXR_Audio.Spatializer.AcousticsMaterial.AcousticTile;
|
||||
|
||||
[SerializeField] [Range(0.0f, 1.0f)]
|
||||
public float[] absorption = new float[4];
|
||||
|
||||
[Tooltip("Ratio of sound energy get scattered by each reflection.\n" +
|
||||
" - Low scattering will result in a more echoic sound\n" +
|
||||
" - high scattering will result in a more reverberant sound")]
|
||||
[SerializeField]
|
||||
[Range(0.0f, 1.0f)]
|
||||
public float scattering = 0.0f;
|
||||
|
||||
[Tooltip("Ratio of sound energy get transmitted through this material.")] [SerializeField] [Range(0.0f, 1.0f)]
|
||||
public float transmission = 0.0f;
|
||||
|
||||
private float[] absorptionForValidation = new float[4];
|
||||
private float scatteringForValidation = 0.0f;
|
||||
private float transmissionForValidation = 0.0f;
|
||||
|
||||
private static PXR_Audio_Spatializer_Context spatialAudioContextRef;
|
||||
|
||||
private void OnValidate()
|
||||
{
|
||||
if (spatialAudioContextRef == null)
|
||||
spatialAudioContextRef = FindObjectOfType<PXR_Audio_Spatializer_Context>();
|
||||
if (lastMaterialPreset != materialPreset) // material_preset is changed
|
||||
{
|
||||
if (materialPreset != PXR_Audio.Spatializer.AcousticsMaterial.Custom)
|
||||
{
|
||||
if (spatialAudioContextRef != null)
|
||||
{
|
||||
spatialAudioContextRef.PXR_Audio_Spatializer_Api.GetAbsorptionFactor(materialPreset,
|
||||
absorption);
|
||||
spatialAudioContextRef.PXR_Audio_Spatializer_Api.GetScatteringFactor(materialPreset,
|
||||
ref scattering);
|
||||
spatialAudioContextRef.PXR_Audio_Spatializer_Api.GetTransmissionFactor(
|
||||
materialPreset, ref transmission);
|
||||
lastMaterialPreset = materialPreset;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lastMaterialPreset = materialPreset;
|
||||
}
|
||||
}
|
||||
else if (materialPreset != PXR_Audio.Spatializer.AcousticsMaterial.Custom &&
|
||||
spatialAudioContextRef !=
|
||||
null) // material_preset is not changed, but acoustic properties are changed manually
|
||||
{
|
||||
// Check if actual material parameters are different from current materialPreset
|
||||
spatialAudioContextRef.PXR_Audio_Spatializer_Api.GetAbsorptionFactor(materialPreset,
|
||||
absorptionForValidation);
|
||||
spatialAudioContextRef.PXR_Audio_Spatializer_Api.GetScatteringFactor(materialPreset,
|
||||
ref scatteringForValidation);
|
||||
spatialAudioContextRef.PXR_Audio_Spatializer_Api.GetTransmissionFactor(materialPreset,
|
||||
ref transmissionForValidation);
|
||||
|
||||
if (Mathf.Abs(absorption[0] - absorptionForValidation[0]) > float.Epsilon ||
|
||||
Mathf.Abs(absorption[1] - absorptionForValidation[1]) > float.Epsilon ||
|
||||
Mathf.Abs(absorption[2] - absorptionForValidation[2]) > float.Epsilon ||
|
||||
Mathf.Abs(absorption[3] - absorptionForValidation[3]) > float.Epsilon ||
|
||||
Mathf.Abs(scattering - scatteringForValidation) > float.Epsilon ||
|
||||
Mathf.Abs(transmission - transmissionForValidation) > float.Epsilon)
|
||||
{
|
||||
materialPreset = PXR_Audio.Spatializer.AcousticsMaterial.Custom;
|
||||
lastMaterialPreset = PXR_Audio.Spatializer.AcousticsMaterial.Custom;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 22d37993d4d3e4235b77205c1aa2ff46
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,364 @@
|
||||
// Copyright © 2015-2022 Pico Technology Co., Ltd. All Rights Reserved.
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using UnityEngine;
|
||||
|
||||
namespace PXR_Audio
|
||||
{
|
||||
namespace Spatializer
|
||||
{
|
||||
public enum Result
|
||||
{
|
||||
Error = -1,
|
||||
Success = 0,
|
||||
SourceNotFound = -1001,
|
||||
SourceDataNotFound = -1002,
|
||||
SceneNotFound = -1003,
|
||||
SceneMeshNotFound = -1004,
|
||||
IllegalValue = -1005,
|
||||
ContextNotCreated = -1006,
|
||||
ContextNotReady = -1007,
|
||||
ContextRepeatedInitialization = -1008,
|
||||
EnvironmentalAcousticsDisabled = -1009,
|
||||
ApiDisabled = -1010,
|
||||
|
||||
///< API is disabled in current build
|
||||
SourceInuse = -1011,
|
||||
};
|
||||
|
||||
public enum PlaybackMode
|
||||
{
|
||||
BinauralOut,
|
||||
LoudspeakersOut,
|
||||
};
|
||||
|
||||
public enum LateReverbUpdatingMode
|
||||
{
|
||||
RealtimeLateReverb = 0,
|
||||
BakedLateReverb = 1,
|
||||
SharedSpectralLateReverb = 2,
|
||||
};
|
||||
|
||||
public enum LateReverbRenderingMode
|
||||
{
|
||||
IrLateReverb = 0,
|
||||
SpectralLateReverb = 1,
|
||||
};
|
||||
|
||||
public enum RenderingMode
|
||||
{
|
||||
LowQuality = 0, // 1st order ambisonic
|
||||
MediumQuality = 1, // 3rd order ambisonic
|
||||
HighQuality = 2, // 5th order ambisonic
|
||||
AmbisonicFirstOrder,
|
||||
AmbisonicSecondOrder,
|
||||
AmbisonicThirdOrder,
|
||||
AmbisonicFourthOrder,
|
||||
AmbisonicFifthOrder,
|
||||
AmbisonicSixthOrder,
|
||||
AmbisonicSeventhOrder,
|
||||
};
|
||||
|
||||
public enum SourceMode
|
||||
{
|
||||
Spatialize = 0,
|
||||
Bypass = 1,
|
||||
};
|
||||
|
||||
public enum IRUpdateMethod
|
||||
{
|
||||
PerPartitionSwapping = 0,
|
||||
InterPartitionLinearCrossFade = 1,
|
||||
InterPartitionPowerComplementaryCrossFade = 2
|
||||
};
|
||||
|
||||
public enum AcousticsMaterial
|
||||
{
|
||||
AcousticTile,
|
||||
Brick,
|
||||
BrickPainted,
|
||||
Carpet,
|
||||
CarpetHeavy,
|
||||
CarpetHeavyPadded,
|
||||
CeramicTile,
|
||||
Concrete,
|
||||
ConcreteRough,
|
||||
ConcreteBlock,
|
||||
ConcreteBlockPainted,
|
||||
Curtain,
|
||||
Foliage,
|
||||
Glass,
|
||||
GlassHeavy,
|
||||
Grass,
|
||||
Gravel,
|
||||
GypsumBoard,
|
||||
PlasterOnBrick,
|
||||
PlasterOnConcreteBlock,
|
||||
Soil,
|
||||
SoundProof,
|
||||
Snow,
|
||||
Steel,
|
||||
Water,
|
||||
WoodThin,
|
||||
WoodThick,
|
||||
WoodFloor,
|
||||
WoodOnConcrete,
|
||||
Custom
|
||||
};
|
||||
|
||||
public enum AmbisonicNormalizationType
|
||||
{
|
||||
SN3D,
|
||||
N3D
|
||||
};
|
||||
|
||||
public enum SourceAttenuationMode
|
||||
{
|
||||
None = 0, // 引擎不依据距离计算衰减
|
||||
Fixed = 1, // 与None完全一致
|
||||
InverseSquare = 2, // 引擎 InverseSquare Law 计算距离衰减
|
||||
Customized = 3, // 依据外部传入的 Callback 计算距离衰减
|
||||
};
|
||||
|
||||
public enum SpatializerApiImpl
|
||||
{
|
||||
unity,
|
||||
wwise,
|
||||
}
|
||||
|
||||
public delegate float DistanceAttenuationCallback(float distance, float rangeMin, float rangeMax);
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct NativeVector3f
|
||||
{
|
||||
public float x; //float[3]
|
||||
public float y;
|
||||
public float z;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct SourceConfig
|
||||
{
|
||||
[MarshalAs(UnmanagedType.U4)] public SourceMode mode;
|
||||
public NativeVector3f position;
|
||||
public NativeVector3f front;
|
||||
public NativeVector3f up;
|
||||
|
||||
public float directivityAlpha; // Weighting balance between figure of eight pattern and circular pattern for
|
||||
|
||||
// source emission in range [0, 1].
|
||||
// A value of 0 results in a circular pattern.
|
||||
// A value of 0.5 results in a cardioid pattern.
|
||||
// A value of 1 results in a figure of eight pattern.
|
||||
public float
|
||||
directivityOrder; // Order applied to computed directivity. Higher values will result in narrower and
|
||||
|
||||
public float radius;
|
||||
|
||||
// sharper directivity patterns. Range [1, inf).
|
||||
[MarshalAs(UnmanagedType.U1)] public bool useDirectPathSpread;
|
||||
|
||||
public float directPathSpread; // Alternatively, we could use spread param directly.
|
||||
|
||||
// This is useful when audio middleware specifies spread value by itself.
|
||||
public float sourceGain; // Master gain of sound source.
|
||||
public float reflectionGain; // Reflection gain relative to default (master gain).
|
||||
|
||||
[MarshalAs(UnmanagedType.U1)] public bool enableDoppler;
|
||||
|
||||
[MarshalAs(UnmanagedType.U4)] public SourceAttenuationMode attenuationMode;
|
||||
|
||||
public IntPtr
|
||||
directDistanceAttenuationCallback; // Native function pointer of direct sound distance attenuation
|
||||
|
||||
public IntPtr indirectDistanceAttenuationCallback;
|
||||
|
||||
// Attenuation range
|
||||
public float minAttenuationDistance; // When distance < minAttenuationDistance, no attenuation.
|
||||
|
||||
public float
|
||||
maxAttenuationDistance; // When distance > maxAttenuationDistance, attenuation = AttenuationFunc(range_max).
|
||||
|
||||
public SourceConfig(SourceMode inMode)
|
||||
{
|
||||
mode = inMode;
|
||||
position.x = 0.0f;
|
||||
position.y = 0.0f;
|
||||
position.z = 0.0f;
|
||||
front.x = 0.0f;
|
||||
front.y = 0.0f;
|
||||
front.z = -1.0f;
|
||||
up.x = 0.0f;
|
||||
up.y = 1.0f;
|
||||
up.z = 0.0f;
|
||||
radius = 0.1f;
|
||||
directivityAlpha = 0.0f;
|
||||
directivityOrder = 1.0f;
|
||||
useDirectPathSpread = false;
|
||||
directPathSpread = 0.0f;
|
||||
sourceGain = 1.0f;
|
||||
reflectionGain = 1.0f;
|
||||
enableDoppler = false;
|
||||
attenuationMode = SourceAttenuationMode.InverseSquare;
|
||||
directDistanceAttenuationCallback = IntPtr.Zero;
|
||||
indirectDistanceAttenuationCallback = IntPtr.Zero;
|
||||
minAttenuationDistance = 0.25f;
|
||||
maxAttenuationDistance = 250f;
|
||||
}
|
||||
}
|
||||
|
||||
public enum SourceProperty : uint
|
||||
{
|
||||
Mode = 1u,
|
||||
Position = (1u << 1),
|
||||
|
||||
///< float[3]
|
||||
Orientation = (1u << 2),
|
||||
|
||||
///< float[6]
|
||||
Directivity = (1u << 3),
|
||||
|
||||
///< float[2], directivity alpha and directivity order
|
||||
VolumetricRadius = (1u << 4),
|
||||
VolumetricSpread = (1u << 5),
|
||||
SourceGain = (1u << 6),
|
||||
ReflectionGain = (1u << 7),
|
||||
DopplerOnOff = (1u << 8),
|
||||
AttenuationMode = (1u << 9),
|
||||
|
||||
///< Only after setting AttenuationMode will AttenuationCallback be applied
|
||||
DirectAttenuationCallback = (1u << 10),
|
||||
IndirectAttenuationCallback = (1u << 11),
|
||||
RangeMin = (1u << 12),
|
||||
RangeMax = (1u << 13),
|
||||
All = ~0u,
|
||||
None = 0u,
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct NativeVector4f
|
||||
{
|
||||
public float v0; //float[4]
|
||||
public float v1;
|
||||
public float v2;
|
||||
public float v3;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct NativeMatrix4x4f
|
||||
{
|
||||
public float v0; //float[16]
|
||||
public float v1;
|
||||
public float v2;
|
||||
public float v3;
|
||||
public float v4; //float[16]
|
||||
public float v5;
|
||||
public float v6;
|
||||
public float v7;
|
||||
public float v8; //float[16]
|
||||
public float v9;
|
||||
public float v10;
|
||||
public float v11;
|
||||
public float v12;
|
||||
public float v13;
|
||||
public float v14;
|
||||
public float v15;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct MeshConfig
|
||||
{
|
||||
[MarshalAs(UnmanagedType.U1)] public bool enabled;
|
||||
[MarshalAs(UnmanagedType.U4)] public AcousticsMaterial materialType;
|
||||
|
||||
///< Material preset; If this equal to YGG_MATERIAL_Custom, the absorption,
|
||||
///< scattering, and transmission coefficients below will be used
|
||||
public NativeVector4f absorption;
|
||||
|
||||
///< Absorption of 4 bands
|
||||
public float scattering;
|
||||
|
||||
///< Wide-band scattering
|
||||
public float transmission;
|
||||
|
||||
///< Wide-band transmission
|
||||
public NativeMatrix4x4f toWorldTransform;
|
||||
|
||||
///< Column-major 4x4 to-world transform matrix of this mesh, which
|
||||
///< describes the position, rotation, and scale of it's default to
|
||||
///< identity matrix, which represents a scene mesh positioned at
|
||||
///< world origin, with no rotation and no scaling what's so ever
|
||||
public MeshConfig(bool enabled, PXR_Audio_Spatializer_SceneMaterial material, Matrix4x4 toWorldMatrix4X4)
|
||||
{
|
||||
this.enabled = enabled;
|
||||
materialType = material.materialPreset;
|
||||
absorption.v0 = material.absorption[0];
|
||||
absorption.v1 = material.absorption[1];
|
||||
absorption.v2 = material.absorption[2];
|
||||
absorption.v3 = material.absorption[3];
|
||||
scattering = material.scattering;
|
||||
transmission = material.transmission;
|
||||
toWorldTransform.v0 = toWorldMatrix4X4[0];
|
||||
toWorldTransform.v1 = toWorldMatrix4X4[1];
|
||||
toWorldTransform.v2 = -toWorldMatrix4X4[2];
|
||||
toWorldTransform.v3 = toWorldMatrix4X4[3];
|
||||
toWorldTransform.v4 = toWorldMatrix4X4[4];
|
||||
toWorldTransform.v5 = toWorldMatrix4X4[5];
|
||||
toWorldTransform.v6 = -toWorldMatrix4X4[6];
|
||||
toWorldTransform.v7 = toWorldMatrix4X4[7];
|
||||
toWorldTransform.v8 = toWorldMatrix4X4[8];
|
||||
toWorldTransform.v9 = toWorldMatrix4X4[9];
|
||||
toWorldTransform.v10 = -toWorldMatrix4X4[10];
|
||||
toWorldTransform.v11 = toWorldMatrix4X4[11];
|
||||
toWorldTransform.v12 = toWorldMatrix4X4[12];
|
||||
toWorldTransform.v13 = toWorldMatrix4X4[13];
|
||||
toWorldTransform.v14 = -toWorldMatrix4X4[14];
|
||||
toWorldTransform.v15 = toWorldMatrix4X4[15];
|
||||
}
|
||||
|
||||
public void SetMaterial(PXR_Audio_Spatializer_SceneMaterial material)
|
||||
{
|
||||
materialType = material.materialPreset;
|
||||
absorption.v0 = material.absorption[0];
|
||||
absorption.v1 = material.absorption[1];
|
||||
absorption.v2 = material.absorption[2];
|
||||
absorption.v3 = material.absorption[3];
|
||||
scattering = material.scattering;
|
||||
transmission = material.transmission;
|
||||
}
|
||||
|
||||
public void SetTransformMatrix4x4(Matrix4x4 toWorldMatrix4X4)
|
||||
{
|
||||
toWorldTransform.v0 = toWorldMatrix4X4[0];
|
||||
toWorldTransform.v1 = toWorldMatrix4X4[1];
|
||||
toWorldTransform.v2 = -toWorldMatrix4X4[2];
|
||||
toWorldTransform.v3 = toWorldMatrix4X4[3];
|
||||
toWorldTransform.v4 = toWorldMatrix4X4[4];
|
||||
toWorldTransform.v5 = toWorldMatrix4X4[5];
|
||||
toWorldTransform.v6 = -toWorldMatrix4X4[6];
|
||||
toWorldTransform.v7 = toWorldMatrix4X4[7];
|
||||
toWorldTransform.v8 = toWorldMatrix4X4[8];
|
||||
toWorldTransform.v9 = toWorldMatrix4X4[9];
|
||||
toWorldTransform.v10 = -toWorldMatrix4X4[10];
|
||||
toWorldTransform.v11 = toWorldMatrix4X4[11];
|
||||
toWorldTransform.v12 = toWorldMatrix4X4[12];
|
||||
toWorldTransform.v13 = toWorldMatrix4X4[13];
|
||||
toWorldTransform.v14 = -toWorldMatrix4X4[14];
|
||||
toWorldTransform.v15 = toWorldMatrix4X4[15];
|
||||
}
|
||||
}
|
||||
|
||||
enum MeshProperty : uint
|
||||
{
|
||||
Enabled = 1u,
|
||||
Material = (1u << 1),
|
||||
Absorption = (1u << 2),
|
||||
Scattering = (1u << 3),
|
||||
Transmission = (1u << 4),
|
||||
ToWorldTransform = (1u << 5),
|
||||
All = ~0u,
|
||||
None = 0u,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4fb395b406d5b459293182f1bccadd42
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 15e54f036a5064da5aedbab32ce3b8dd
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
16
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Samples/.gitattributes
vendored
Normal file
16
Packages/PICO Unity Integration SDK-3.3.2-20251111/SpatialAudio/Samples/.gitattributes
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
audio/speech_48k.wav.meta filter=lfs diff=lfs merge=lfs -text
|
||||
audio/techno_loop_48k.wav filter=lfs diff=lfs merge=lfs -text
|
||||
audio/techno_loop_48k.wav.meta filter=lfs diff=lfs merge=lfs -text
|
||||
audio/techno_loop_FOA_48k.wav filter=lfs diff=lfs merge=lfs -text
|
||||
audio/techno_loop_FOA_48k.wav.meta filter=lfs diff=lfs merge=lfs -text
|
||||
audio/speech_48k.wav filter=lfs diff=lfs merge=lfs -text
|
||||
material/unity_logo.mat filter=lfs diff=lfs merge=lfs -text
|
||||
material/unity_logo.mat.meta filter=lfs diff=lfs merge=lfs -text
|
||||
material/sami_logo.mat filter=lfs diff=lfs merge=lfs -text
|
||||
material/sami_logo.mat.meta filter=lfs diff=lfs merge=lfs -text
|
||||
material/sami_logo.png filter=lfs diff=lfs merge=lfs -text
|
||||
material/sami_logo.png.meta filter=lfs diff=lfs merge=lfs -text
|
||||
material/unity_logo.jpg filter=lfs diff=lfs merge=lfs -text
|
||||
material/unity_logo.jpg.meta filter=lfs diff=lfs merge=lfs -text
|
||||
model/Sibenik filter=lfs diff=lfs merge=lfs -text
|
||||
model/Sibenik.meta filter=lfs diff=lfs merge=lfs -text
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "Pico.Spatializer.Example",
|
||||
"rootNamespace": "",
|
||||
"references": [
|
||||
"GUID:b3d620f74d91148829d3deb288af824d"
|
||||
],
|
||||
"includePlatforms": [
|
||||
"Android",
|
||||
"Editor",
|
||||
"macOSStandalone",
|
||||
"WindowsStandalone64"
|
||||
],
|
||||
"excludePlatforms": [],
|
||||
"allowUnsafeCode": false,
|
||||
"overrideReferences": false,
|
||||
"precompiledReferences": [],
|
||||
"autoReferenced": true,
|
||||
"defineConstraints": [],
|
||||
"versionDefines": [],
|
||||
"noEngineReferences": false
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c1e7f14d1ce3241139a60297202be7ab
|
||||
AssemblyDefinitionImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c05424c4fe1ab4e5cacb4ed17134960f
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,85 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &8657994508396554482
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4517300031001485903}
|
||||
- component: {fileID: 599310164065243499}
|
||||
- component: {fileID: 291363790694747398}
|
||||
m_Layer: 0
|
||||
m_Name: MeshPrefab
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &4517300031001485903
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8657994508396554482}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &599310164065243499
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8657994508396554482}
|
||||
m_Mesh: {fileID: 0}
|
||||
--- !u!23 &291363790694747398
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8657994508396554482}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: e173931a61b20334c816019c984efc67, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d4f0c93a8d9784ffe9d5ea9b814e5751
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,88 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Wireframe-TransparentCulled
|
||||
m_Shader: {fileID: 4800000, guid: 4761bfc7de5950049b09d42773534fbf, type: 3}
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0.5
|
||||
- _GlossyReflections: 1
|
||||
- _MaxTriSize: 25
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _Thickness: 0.02
|
||||
- _UVSec: 0
|
||||
- _WireSmoothness: 3
|
||||
- _WireThickness: 430
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _BaseColor: {r: 1, g: 0.0012459704, b: 0.32941177, a: 0}
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 0}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _FrontColor: {r: 1, g: 0.10325621, b: 0, a: 1}
|
||||
- _LineColor: {r: 0.13207549, g: 0.043194488, b: 0.047098953, a: 1}
|
||||
- _WireColor: {r: 0.8301887, g: 0.13053276, b: 0.13053276, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e298cff903f6d4edd9cb04da0c44d586
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,113 @@
|
||||
|
||||
uniform float _WireThickness = 100;
|
||||
uniform float _WireSmoothness = 3;
|
||||
uniform float4 _WireColor = float4(0.0, 1.0, 0.0, 1.0);
|
||||
uniform float4 _BaseColor = float4(0.0, 0.0, 0.0, 0.0);
|
||||
uniform float _MaxTriSize = 25.0;
|
||||
|
||||
struct appdata
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
float4 color : COLOR;
|
||||
|
||||
};
|
||||
|
||||
struct v2g
|
||||
{
|
||||
float4 projectionSpaceVertex : SV_POSITION;
|
||||
float4 worldSpacePosition : TEXCOORD1;
|
||||
float4 vertexColor : TEXCOORD2;
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
struct g2f
|
||||
{
|
||||
float4 projectionSpaceVertex : SV_POSITION;
|
||||
float4 worldSpacePosition : TEXCOORD0;
|
||||
float4 dist : TEXCOORD1;
|
||||
float4 area : TEXCOORD2;
|
||||
float4 vertexColor : TEXCOORD3;
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
v2g vert (appdata v)
|
||||
{
|
||||
v2g o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
o.projectionSpaceVertex = UnityObjectToClipPos(v.vertex);
|
||||
o.worldSpacePosition = mul(unity_ObjectToWorld, v.vertex);
|
||||
o.vertexColor = v.color;
|
||||
return o;
|
||||
}
|
||||
|
||||
[maxvertexcount(3)]
|
||||
void geom(triangle v2g i[3], inout TriangleStream<g2f> triangleStream)
|
||||
{
|
||||
float2 p0 = i[0].projectionSpaceVertex.xy / i[0].projectionSpaceVertex.w;
|
||||
float2 p1 = i[1].projectionSpaceVertex.xy / i[1].projectionSpaceVertex.w;
|
||||
float2 p2 = i[2].projectionSpaceVertex.xy / i[2].projectionSpaceVertex.w;
|
||||
|
||||
float2 edge0 = p2 - p1;
|
||||
float2 edge1 = p2 - p0;
|
||||
float2 edge2 = p1 - p0;
|
||||
|
||||
float4 worldEdge0 = i[0].worldSpacePosition - i[1].worldSpacePosition;
|
||||
float4 worldEdge1 = i[1].worldSpacePosition - i[2].worldSpacePosition;
|
||||
float4 worldEdge2 = i[0].worldSpacePosition - i[2].worldSpacePosition;
|
||||
|
||||
// To find the distance to the opposite edge, we take the
|
||||
// formula for finding the area of a triangle Area = Base/2 * Height,
|
||||
// and solve for the Height = (Area * 2)/Base.
|
||||
// We can get the area of a triangle by taking its cross product
|
||||
// divided by 2. However we can avoid dividing our area/base by 2
|
||||
// since our cross product will already be double our area.
|
||||
float area = abs(edge1.x * edge2.y - edge1.y * edge2.x);
|
||||
float wireThickness = 800 - _WireThickness;
|
||||
|
||||
g2f o;
|
||||
|
||||
o.vertexColor = (i[0].vertexColor + i[1].vertexColor + i[2].vertexColor) / 3;
|
||||
o.area = float4(0, 0, 0, 0);
|
||||
o.area.x = max(length(worldEdge0), max(length(worldEdge1), length(worldEdge2)));
|
||||
|
||||
o.worldSpacePosition = i[0].worldSpacePosition;
|
||||
o.projectionSpaceVertex = i[0].projectionSpaceVertex;
|
||||
o.dist.xyz = float3( (area / length(edge0)), 0.0, 0.0) * o.projectionSpaceVertex.w * wireThickness;
|
||||
o.dist.w = 1.0 / o.projectionSpaceVertex.w;
|
||||
UNITY_TRANSFER_VERTEX_OUTPUT_STEREO(i[0], o);
|
||||
triangleStream.Append(o);
|
||||
|
||||
o.worldSpacePosition = i[1].worldSpacePosition;
|
||||
o.projectionSpaceVertex = i[1].projectionSpaceVertex;
|
||||
o.dist.xyz = float3(0.0, (area / length(edge1)), 0.0) * o.projectionSpaceVertex.w * wireThickness;
|
||||
o.dist.w = 1.0 / o.projectionSpaceVertex.w;
|
||||
UNITY_TRANSFER_VERTEX_OUTPUT_STEREO(i[1], o);
|
||||
triangleStream.Append(o);
|
||||
|
||||
o.worldSpacePosition = i[2].worldSpacePosition;
|
||||
o.projectionSpaceVertex = i[2].projectionSpaceVertex;
|
||||
o.dist.xyz = float3(0.0, 0.0, (area / length(edge2))) * o.projectionSpaceVertex.w * wireThickness;
|
||||
o.dist.w = 1.0 / o.projectionSpaceVertex.w;
|
||||
|
||||
UNITY_TRANSFER_VERTEX_OUTPUT_STEREO(i[2], o);
|
||||
triangleStream.Append(o);
|
||||
}
|
||||
|
||||
fixed4 frag(g2f i) : SV_Target
|
||||
{
|
||||
float minDistanceToEdge = min(i.dist[0], min(i.dist[1], i.dist[2])) * i.dist[3];
|
||||
|
||||
// Early out if we know we are not on a line segment.
|
||||
if(minDistanceToEdge > 0.9 || i.area.x > _MaxTriSize)
|
||||
{
|
||||
return fixed4(_BaseColor.rgb,0);
|
||||
}
|
||||
|
||||
// Smooth our line out
|
||||
float t = exp2(_WireSmoothness * -1.0 * minDistanceToEdge * minDistanceToEdge);
|
||||
fixed4 finalColor = lerp(_BaseColor, i.vertexColor /* _WireColor */, t);
|
||||
|
||||
return finalColor;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b6de3a5a2ac5ac54cbd0f26975069b8b
|
||||
ShaderIncludeImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,45 @@
|
||||
Shader "SuperSystems/Wireframe-Transparent-Culled"
|
||||
{
|
||||
Properties
|
||||
{
|
||||
_WireThickness ("Wire Thickness", RANGE(0, 800)) = 100
|
||||
_WireSmoothness ("Wire Smoothness", RANGE(0, 20)) = 3
|
||||
_WireColor ("Wire Color", Color) = (0.0, 1.0, 0.0, 1.0)
|
||||
_BaseColor ("Base Color", Color) = (0.0, 0.0, 0.0, 0.0)
|
||||
_MaxTriSize ("Max Tri Size", RANGE(0, 200)) = 25
|
||||
}
|
||||
|
||||
SubShader
|
||||
{
|
||||
Tags {
|
||||
"IgnoreProjector"="True"
|
||||
//"Queue"="Transparent"
|
||||
"RenderType"="Transparent"
|
||||
}
|
||||
|
||||
//Pass
|
||||
//{
|
||||
// ZWrite On
|
||||
// ColorMask 0
|
||||
//}
|
||||
Pass
|
||||
{
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
ZWrite On
|
||||
ZTest Less
|
||||
|
||||
// Wireframe shader based on the the following
|
||||
// http://developer.download.nvidia.com/SDK/10/direct3d/Source/SolidWireframe/Doc/SolidWireframe.pdf
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex vert
|
||||
#pragma geometry geom
|
||||
#pragma fragment frag
|
||||
|
||||
#include "UnityCG.cginc"
|
||||
#include "Wireframe.cginc"
|
||||
|
||||
ENDCG
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aa0ed226e9e93408592793185b5b38e9
|
||||
ShaderImporter:
|
||||
externalObjects: {}
|
||||
defaultTextures: []
|
||||
nonModifiableTextures: []
|
||||
preprocessorOverride: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 43b3905ab612e4ea68a43e2a1cd4c287
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,641 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!29 &1
|
||||
OcclusionCullingSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_OcclusionBakeSettings:
|
||||
smallestOccluder: 5
|
||||
smallestHole: 0.25
|
||||
backfaceThreshold: 100
|
||||
m_SceneGUID: 00000000000000000000000000000000
|
||||
m_OcclusionCullingData: {fileID: 0}
|
||||
--- !u!104 &2
|
||||
RenderSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 9
|
||||
m_Fog: 0
|
||||
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||
m_FogMode: 3
|
||||
m_FogDensity: 0.01
|
||||
m_LinearFogStart: 0
|
||||
m_LinearFogEnd: 300
|
||||
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
|
||||
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
|
||||
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
|
||||
m_AmbientIntensity: 1
|
||||
m_AmbientMode: 0
|
||||
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
||||
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_HaloStrength: 0.5
|
||||
m_FlareStrength: 1
|
||||
m_FlareFadeSpeed: 3
|
||||
m_HaloTexture: {fileID: 0}
|
||||
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_DefaultReflectionMode: 0
|
||||
m_DefaultReflectionResolution: 128
|
||||
m_ReflectionBounces: 1
|
||||
m_ReflectionIntensity: 1
|
||||
m_CustomReflection: {fileID: 0}
|
||||
m_Sun: {fileID: 705507994}
|
||||
m_IndirectSpecularColor: {r: 0.44657874, g: 0.49641275, b: 0.5748172, a: 1}
|
||||
m_UseRadianceAmbientProbe: 0
|
||||
--- !u!157 &3
|
||||
LightmapSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 12
|
||||
m_GIWorkflowMode: 1
|
||||
m_GISettings:
|
||||
serializedVersion: 2
|
||||
m_BounceScale: 1
|
||||
m_IndirectOutputScale: 1
|
||||
m_AlbedoBoost: 1
|
||||
m_EnvironmentLightingMode: 0
|
||||
m_EnableBakedLightmaps: 1
|
||||
m_EnableRealtimeLightmaps: 0
|
||||
m_LightmapEditorSettings:
|
||||
serializedVersion: 12
|
||||
m_Resolution: 2
|
||||
m_BakeResolution: 40
|
||||
m_AtlasSize: 1024
|
||||
m_AO: 0
|
||||
m_AOMaxDistance: 1
|
||||
m_CompAOExponent: 1
|
||||
m_CompAOExponentDirect: 0
|
||||
m_ExtractAmbientOcclusion: 0
|
||||
m_Padding: 2
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_LightmapsBakeMode: 1
|
||||
m_TextureCompression: 1
|
||||
m_FinalGather: 0
|
||||
m_FinalGatherFiltering: 1
|
||||
m_FinalGatherRayCount: 256
|
||||
m_ReflectionCompression: 2
|
||||
m_MixedBakeMode: 2
|
||||
m_BakeBackend: 1
|
||||
m_PVRSampling: 1
|
||||
m_PVRDirectSampleCount: 32
|
||||
m_PVRSampleCount: 500
|
||||
m_PVRBounces: 2
|
||||
m_PVREnvironmentSampleCount: 500
|
||||
m_PVREnvironmentReferencePointCount: 2048
|
||||
m_PVRFilteringMode: 2
|
||||
m_PVRDenoiserTypeDirect: 0
|
||||
m_PVRDenoiserTypeIndirect: 0
|
||||
m_PVRDenoiserTypeAO: 0
|
||||
m_PVRFilterTypeDirect: 0
|
||||
m_PVRFilterTypeIndirect: 0
|
||||
m_PVRFilterTypeAO: 0
|
||||
m_PVREnvironmentMIS: 0
|
||||
m_PVRCulling: 1
|
||||
m_PVRFilteringGaussRadiusDirect: 1
|
||||
m_PVRFilteringGaussRadiusIndirect: 5
|
||||
m_PVRFilteringGaussRadiusAO: 2
|
||||
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
||||
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
||||
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||
m_ExportTrainingData: 0
|
||||
m_TrainingDataDestination: TrainingData
|
||||
m_LightProbeSampleCountMultiplier: 4
|
||||
m_LightingDataAsset: {fileID: 0}
|
||||
m_LightingSettings: {fileID: 0}
|
||||
--- !u!196 &4
|
||||
NavMeshSettings:
|
||||
serializedVersion: 2
|
||||
m_ObjectHideFlags: 0
|
||||
m_BuildSettings:
|
||||
serializedVersion: 2
|
||||
agentTypeID: 0
|
||||
agentRadius: 0.5
|
||||
agentHeight: 2
|
||||
agentSlope: 45
|
||||
agentClimb: 0.4
|
||||
ledgeDropHeight: 0
|
||||
maxJumpAcrossDistance: 0
|
||||
minRegionArea: 2
|
||||
manualCellSize: 0
|
||||
cellSize: 0.16666667
|
||||
manualTileSize: 0
|
||||
tileSize: 256
|
||||
accuratePlacement: 0
|
||||
maxJobWorkers: 0
|
||||
preserveTilesOutsideBounds: 0
|
||||
debug:
|
||||
m_Flags: 0
|
||||
m_NavMeshData: {fileID: 0}
|
||||
--- !u!1001 &398250661
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: 282086560841806236, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: visualizeMeshInEditor
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_RootOrder
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: -5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944887, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: green_house
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
--- !u!1 &568971784
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 568971786}
|
||||
- component: {fileID: 568971785}
|
||||
m_Layer: 0
|
||||
m_Name: yggdrasil_context
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &568971785
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 568971784}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3083421a52eca4fb186aecb7e4f143a9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
renderingQuality: 1
|
||||
--- !u!4 &568971786
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 568971784}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 3
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &705507993
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 705507995}
|
||||
- component: {fileID: 705507994}
|
||||
m_Layer: 0
|
||||
m_Name: Directional Light
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!108 &705507994
|
||||
Light:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 705507993}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 10
|
||||
m_Type: 1
|
||||
m_Shape: 0
|
||||
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
|
||||
m_Intensity: 1
|
||||
m_Range: 10
|
||||
m_SpotAngle: 30
|
||||
m_InnerSpotAngle: 21.802082
|
||||
m_CookieSize: 10
|
||||
m_Shadows:
|
||||
m_Type: 2
|
||||
m_Resolution: -1
|
||||
m_CustomResolution: -1
|
||||
m_Strength: 1
|
||||
m_Bias: 0.05
|
||||
m_NormalBias: 0.4
|
||||
m_NearPlane: 0.2
|
||||
m_CullingMatrixOverride:
|
||||
e00: 1
|
||||
e01: 0
|
||||
e02: 0
|
||||
e03: 0
|
||||
e10: 0
|
||||
e11: 1
|
||||
e12: 0
|
||||
e13: 0
|
||||
e20: 0
|
||||
e21: 0
|
||||
e22: 1
|
||||
e23: 0
|
||||
e30: 0
|
||||
e31: 0
|
||||
e32: 0
|
||||
e33: 1
|
||||
m_UseCullingMatrixOverride: 0
|
||||
m_Cookie: {fileID: 0}
|
||||
m_DrawHalo: 0
|
||||
m_Flare: {fileID: 0}
|
||||
m_RenderMode: 0
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_RenderingLayerMask: 1
|
||||
m_Lightmapping: 1
|
||||
m_LightShadowCasterMode: 0
|
||||
m_AreaSize: {x: 1, y: 1}
|
||||
m_BounceIntensity: 1
|
||||
m_ColorTemperature: 6570
|
||||
m_UseColorTemperature: 0
|
||||
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_UseBoundingSphereOverride: 0
|
||||
m_UseViewFrustumForShadowCasterCull: 1
|
||||
m_ShadowRadius: 0
|
||||
m_ShadowAngle: 0
|
||||
--- !u!4 &705507995
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 705507993}
|
||||
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
|
||||
m_LocalPosition: {x: 0, y: 3, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
||||
--- !u!1 &963194225
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 963194228}
|
||||
- component: {fileID: 963194227}
|
||||
- component: {fileID: 963194226}
|
||||
- component: {fileID: 963194230}
|
||||
- component: {fileID: 963194229}
|
||||
m_Layer: 0
|
||||
m_Name: Main Camera
|
||||
m_TagString: MainCamera
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!81 &963194226
|
||||
AudioListener:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_Enabled: 1
|
||||
--- !u!20 &963194227
|
||||
Camera:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_ClearFlags: 1
|
||||
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
||||
m_projectionMatrixMode: 1
|
||||
m_GateFitMode: 2
|
||||
m_FOVAxisMode: 0
|
||||
m_SensorSize: {x: 36, y: 24}
|
||||
m_LensShift: {x: 0, y: 0}
|
||||
m_FocalLength: 50
|
||||
m_NormalizedViewPortRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 1
|
||||
height: 1
|
||||
near clip plane: 0.3
|
||||
far clip plane: 1000
|
||||
field of view: 45
|
||||
orthographic: 0
|
||||
orthographic size: 5
|
||||
m_Depth: -1
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_RenderingPath: -1
|
||||
m_TargetTexture: {fileID: 0}
|
||||
m_TargetDisplay: 0
|
||||
m_TargetEye: 3
|
||||
m_HDR: 1
|
||||
m_AllowMSAA: 1
|
||||
m_AllowDynamicResolution: 0
|
||||
m_ForceIntoRT: 0
|
||||
m_OcclusionCulling: 1
|
||||
m_StereoConvergence: 10
|
||||
m_StereoSeparation: 0.022
|
||||
--- !u!4 &963194228
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0}
|
||||
--- !u!114 &963194229
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 1ed709a1949ef44bf86584accdb9253a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
speed: 5
|
||||
mouseSensitivity: 3.5
|
||||
--- !u!114 &963194230
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 67f4b0fc61d6d4b6499b28a0a4461b6f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &1413304767
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1413304771}
|
||||
- component: {fileID: 1413304770}
|
||||
- component: {fileID: 1413304769}
|
||||
- component: {fileID: 1413304768}
|
||||
- component: {fileID: 1413304773}
|
||||
- component: {fileID: 1413304772}
|
||||
m_Layer: 0
|
||||
m_Name: sound_source
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!135 &1413304768
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Material: {fileID: 0}
|
||||
m_IsTrigger: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!23 &1413304769
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 8472b5e58b9e34125b0af1bd0af83f06, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!33 &1413304770
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!4 &1413304771
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: -10, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 4
|
||||
m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0}
|
||||
--- !u!114 &1413304772
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 30f78ed5e5eb44c188a740990ce49414, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
sourceGainDB: 8
|
||||
sourceSize: 0
|
||||
--- !u!82 &1413304773
|
||||
AudioSource:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 4
|
||||
OutputAudioMixerGroup: {fileID: 0}
|
||||
m_audioClip: {fileID: 8300000, guid: 507069cd8da1349f1bcbba3f25ac9c1c, type: 3}
|
||||
m_PlayOnAwake: 1
|
||||
m_Volume: 1
|
||||
m_Pitch: 1
|
||||
Loop: 1
|
||||
Mute: 0
|
||||
Spatialize: 0
|
||||
SpatializePostEffects: 0
|
||||
Priority: 128
|
||||
DopplerLevel: 1
|
||||
MinDistance: 1
|
||||
MaxDistance: 500
|
||||
Pan2D: 0
|
||||
rolloffMode: 0
|
||||
BypassEffects: 0
|
||||
BypassListenerEffects: 0
|
||||
BypassReverbZones: 0
|
||||
rolloffCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
- serializedVersion: 3
|
||||
time: 1
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
panLevelCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
spreadCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
reverbZoneMixCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f2cf3a987e9ed47c7ae20413f28835ed
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,829 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!29 &1
|
||||
OcclusionCullingSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_OcclusionBakeSettings:
|
||||
smallestOccluder: 5
|
||||
smallestHole: 0.25
|
||||
backfaceThreshold: 100
|
||||
m_SceneGUID: 00000000000000000000000000000000
|
||||
m_OcclusionCullingData: {fileID: 0}
|
||||
--- !u!104 &2
|
||||
RenderSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 9
|
||||
m_Fog: 0
|
||||
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||
m_FogMode: 3
|
||||
m_FogDensity: 0.01
|
||||
m_LinearFogStart: 0
|
||||
m_LinearFogEnd: 300
|
||||
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
|
||||
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
|
||||
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
|
||||
m_AmbientIntensity: 1
|
||||
m_AmbientMode: 0
|
||||
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
||||
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_HaloStrength: 0.5
|
||||
m_FlareStrength: 1
|
||||
m_FlareFadeSpeed: 3
|
||||
m_HaloTexture: {fileID: 0}
|
||||
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_DefaultReflectionMode: 0
|
||||
m_DefaultReflectionResolution: 128
|
||||
m_ReflectionBounces: 1
|
||||
m_ReflectionIntensity: 1
|
||||
m_CustomReflection: {fileID: 0}
|
||||
m_Sun: {fileID: 705507994}
|
||||
m_IndirectSpecularColor: {r: 0.44657874, g: 0.49641275, b: 0.5748172, a: 1}
|
||||
m_UseRadianceAmbientProbe: 0
|
||||
--- !u!157 &3
|
||||
LightmapSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 12
|
||||
m_GIWorkflowMode: 1
|
||||
m_GISettings:
|
||||
serializedVersion: 2
|
||||
m_BounceScale: 1
|
||||
m_IndirectOutputScale: 1
|
||||
m_AlbedoBoost: 1
|
||||
m_EnvironmentLightingMode: 0
|
||||
m_EnableBakedLightmaps: 1
|
||||
m_EnableRealtimeLightmaps: 0
|
||||
m_LightmapEditorSettings:
|
||||
serializedVersion: 12
|
||||
m_Resolution: 2
|
||||
m_BakeResolution: 40
|
||||
m_AtlasSize: 1024
|
||||
m_AO: 0
|
||||
m_AOMaxDistance: 1
|
||||
m_CompAOExponent: 1
|
||||
m_CompAOExponentDirect: 0
|
||||
m_ExtractAmbientOcclusion: 0
|
||||
m_Padding: 2
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_LightmapsBakeMode: 1
|
||||
m_TextureCompression: 1
|
||||
m_FinalGather: 0
|
||||
m_FinalGatherFiltering: 1
|
||||
m_FinalGatherRayCount: 256
|
||||
m_ReflectionCompression: 2
|
||||
m_MixedBakeMode: 2
|
||||
m_BakeBackend: 1
|
||||
m_PVRSampling: 1
|
||||
m_PVRDirectSampleCount: 32
|
||||
m_PVRSampleCount: 500
|
||||
m_PVRBounces: 2
|
||||
m_PVREnvironmentSampleCount: 500
|
||||
m_PVREnvironmentReferencePointCount: 2048
|
||||
m_PVRFilteringMode: 2
|
||||
m_PVRDenoiserTypeDirect: 0
|
||||
m_PVRDenoiserTypeIndirect: 0
|
||||
m_PVRDenoiserTypeAO: 0
|
||||
m_PVRFilterTypeDirect: 0
|
||||
m_PVRFilterTypeIndirect: 0
|
||||
m_PVRFilterTypeAO: 0
|
||||
m_PVREnvironmentMIS: 0
|
||||
m_PVRCulling: 1
|
||||
m_PVRFilteringGaussRadiusDirect: 1
|
||||
m_PVRFilteringGaussRadiusIndirect: 5
|
||||
m_PVRFilteringGaussRadiusAO: 2
|
||||
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
||||
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
||||
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||
m_ExportTrainingData: 0
|
||||
m_TrainingDataDestination: TrainingData
|
||||
m_LightProbeSampleCountMultiplier: 4
|
||||
m_LightingDataAsset: {fileID: 0}
|
||||
m_LightingSettings: {fileID: 0}
|
||||
--- !u!196 &4
|
||||
NavMeshSettings:
|
||||
serializedVersion: 2
|
||||
m_ObjectHideFlags: 0
|
||||
m_BuildSettings:
|
||||
serializedVersion: 2
|
||||
agentTypeID: 0
|
||||
agentRadius: 0.5
|
||||
agentHeight: 2
|
||||
agentSlope: 45
|
||||
agentClimb: 0.4
|
||||
ledgeDropHeight: 0
|
||||
maxJumpAcrossDistance: 0
|
||||
minRegionArea: 2
|
||||
manualCellSize: 0
|
||||
cellSize: 0.16666667
|
||||
manualTileSize: 0
|
||||
tileSize: 256
|
||||
accuratePlacement: 0
|
||||
maxJobWorkers: 0
|
||||
preserveTilesOutsideBounds: 0
|
||||
debug:
|
||||
m_Flags: 0
|
||||
m_NavMeshData: {fileID: 0}
|
||||
--- !u!1001 &475864536
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_RootOrder
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: -5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944884, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7777131100946944887, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: green_house
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: c5e7681d6f7c542f0a4c7de2e5be0278, type: 3}
|
||||
--- !u!1 &568971784
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 568971786}
|
||||
- component: {fileID: 568971785}
|
||||
m_Layer: 0
|
||||
m_Name: yggdrasil_context
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &568971785
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 568971784}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3083421a52eca4fb186aecb7e4f143a9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
renderingQuality: 1
|
||||
--- !u!4 &568971786
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 568971784}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 3
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &705507993
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 705507995}
|
||||
- component: {fileID: 705507994}
|
||||
m_Layer: 0
|
||||
m_Name: Directional Light
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!108 &705507994
|
||||
Light:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 705507993}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 10
|
||||
m_Type: 1
|
||||
m_Shape: 0
|
||||
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
|
||||
m_Intensity: 1
|
||||
m_Range: 10
|
||||
m_SpotAngle: 30
|
||||
m_InnerSpotAngle: 21.802082
|
||||
m_CookieSize: 10
|
||||
m_Shadows:
|
||||
m_Type: 2
|
||||
m_Resolution: -1
|
||||
m_CustomResolution: -1
|
||||
m_Strength: 1
|
||||
m_Bias: 0.05
|
||||
m_NormalBias: 0.4
|
||||
m_NearPlane: 0.2
|
||||
m_CullingMatrixOverride:
|
||||
e00: 1
|
||||
e01: 0
|
||||
e02: 0
|
||||
e03: 0
|
||||
e10: 0
|
||||
e11: 1
|
||||
e12: 0
|
||||
e13: 0
|
||||
e20: 0
|
||||
e21: 0
|
||||
e22: 1
|
||||
e23: 0
|
||||
e30: 0
|
||||
e31: 0
|
||||
e32: 0
|
||||
e33: 1
|
||||
m_UseCullingMatrixOverride: 0
|
||||
m_Cookie: {fileID: 0}
|
||||
m_DrawHalo: 0
|
||||
m_Flare: {fileID: 0}
|
||||
m_RenderMode: 0
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_RenderingLayerMask: 1
|
||||
m_Lightmapping: 1
|
||||
m_LightShadowCasterMode: 0
|
||||
m_AreaSize: {x: 1, y: 1}
|
||||
m_BounceIntensity: 1
|
||||
m_ColorTemperature: 6570
|
||||
m_UseColorTemperature: 0
|
||||
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_UseBoundingSphereOverride: 0
|
||||
m_UseViewFrustumForShadowCasterCull: 1
|
||||
m_ShadowRadius: 0
|
||||
m_ShadowAngle: 0
|
||||
--- !u!4 &705507995
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 705507993}
|
||||
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
|
||||
m_LocalPosition: {x: 0, y: 3, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
||||
--- !u!1 &875469697
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 875469702}
|
||||
- component: {fileID: 875469701}
|
||||
- component: {fileID: 875469700}
|
||||
- component: {fileID: 875469699}
|
||||
- component: {fileID: 875469698}
|
||||
m_Layer: 0
|
||||
m_Name: sound_source_unity
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!82 &875469698
|
||||
AudioSource:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 875469697}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 4
|
||||
OutputAudioMixerGroup: {fileID: 0}
|
||||
m_audioClip: {fileID: 8300000, guid: 507069cd8da1349f1bcbba3f25ac9c1c, type: 3}
|
||||
m_PlayOnAwake: 1
|
||||
m_Volume: 1
|
||||
m_Pitch: 1
|
||||
Loop: 1
|
||||
Mute: 0
|
||||
Spatialize: 0
|
||||
SpatializePostEffects: 0
|
||||
Priority: 128
|
||||
DopplerLevel: 1
|
||||
MinDistance: 1
|
||||
MaxDistance: 500
|
||||
Pan2D: 0
|
||||
rolloffMode: 0
|
||||
BypassEffects: 0
|
||||
BypassListenerEffects: 0
|
||||
BypassReverbZones: 0
|
||||
rolloffCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
- serializedVersion: 3
|
||||
time: 1
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
panLevelCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
spreadCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
reverbZoneMixCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
--- !u!135 &875469699
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 875469697}
|
||||
m_Material: {fileID: 0}
|
||||
m_IsTrigger: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!23 &875469700
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 875469697}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 377a49fe53a364076a14c8caf3fef246, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!33 &875469701
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 875469697}
|
||||
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!4 &875469702
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 875469697}
|
||||
m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: -10, y: 0, z: 2.17}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 5
|
||||
m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0}
|
||||
--- !u!1 &963194225
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 963194228}
|
||||
- component: {fileID: 963194227}
|
||||
- component: {fileID: 963194226}
|
||||
- component: {fileID: 963194230}
|
||||
- component: {fileID: 963194229}
|
||||
m_Layer: 0
|
||||
m_Name: Main Camera
|
||||
m_TagString: MainCamera
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!81 &963194226
|
||||
AudioListener:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_Enabled: 1
|
||||
--- !u!20 &963194227
|
||||
Camera:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_ClearFlags: 1
|
||||
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
||||
m_projectionMatrixMode: 1
|
||||
m_GateFitMode: 2
|
||||
m_FOVAxisMode: 0
|
||||
m_SensorSize: {x: 36, y: 24}
|
||||
m_LensShift: {x: 0, y: 0}
|
||||
m_FocalLength: 50
|
||||
m_NormalizedViewPortRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 1
|
||||
height: 1
|
||||
near clip plane: 0.3
|
||||
far clip plane: 1000
|
||||
field of view: 45
|
||||
orthographic: 0
|
||||
orthographic size: 5
|
||||
m_Depth: -1
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_RenderingPath: -1
|
||||
m_TargetTexture: {fileID: 0}
|
||||
m_TargetDisplay: 0
|
||||
m_TargetEye: 3
|
||||
m_HDR: 1
|
||||
m_AllowMSAA: 1
|
||||
m_AllowDynamicResolution: 0
|
||||
m_ForceIntoRT: 0
|
||||
m_OcclusionCulling: 1
|
||||
m_StereoConvergence: 10
|
||||
m_StereoSeparation: 0.022
|
||||
--- !u!4 &963194228
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0}
|
||||
--- !u!114 &963194229
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 1ed709a1949ef44bf86584accdb9253a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
speed: 5
|
||||
mouseSensitivity: 3.5
|
||||
--- !u!114 &963194230
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 67f4b0fc61d6d4b6499b28a0a4461b6f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &1413304767
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1413304771}
|
||||
- component: {fileID: 1413304770}
|
||||
- component: {fileID: 1413304769}
|
||||
- component: {fileID: 1413304768}
|
||||
- component: {fileID: 1413304773}
|
||||
- component: {fileID: 1413304772}
|
||||
m_Layer: 0
|
||||
m_Name: sound_source_ygg
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!135 &1413304768
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Material: {fileID: 0}
|
||||
m_IsTrigger: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!23 &1413304769
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 8472b5e58b9e34125b0af1bd0af83f06, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!33 &1413304770
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!4 &1413304771
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: -10, y: 0, z: -2.34}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 4
|
||||
m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0}
|
||||
--- !u!114 &1413304772
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 30f78ed5e5eb44c188a740990ce49414, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
sourceGainDB: 0
|
||||
sourceSize: 0
|
||||
--- !u!82 &1413304773
|
||||
AudioSource:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 4
|
||||
OutputAudioMixerGroup: {fileID: 0}
|
||||
m_audioClip: {fileID: 8300000, guid: 507069cd8da1349f1bcbba3f25ac9c1c, type: 3}
|
||||
m_PlayOnAwake: 1
|
||||
m_Volume: 1
|
||||
m_Pitch: 1
|
||||
Loop: 1
|
||||
Mute: 0
|
||||
Spatialize: 0
|
||||
SpatializePostEffects: 0
|
||||
Priority: 128
|
||||
DopplerLevel: 1
|
||||
MinDistance: 1
|
||||
MaxDistance: 500
|
||||
Pan2D: 0
|
||||
rolloffMode: 0
|
||||
BypassEffects: 0
|
||||
BypassListenerEffects: 0
|
||||
BypassReverbZones: 0
|
||||
rolloffCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
- serializedVersion: 3
|
||||
time: 1
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
panLevelCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
spreadCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
reverbZoneMixCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2ea7d09b287c44405aa98b2f4a848826
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1ea1e55905c6747988138b0dfd0313c1
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,580 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!29 &1
|
||||
OcclusionCullingSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_OcclusionBakeSettings:
|
||||
smallestOccluder: 5
|
||||
smallestHole: 0.25
|
||||
backfaceThreshold: 100
|
||||
m_SceneGUID: 00000000000000000000000000000000
|
||||
m_OcclusionCullingData: {fileID: 0}
|
||||
--- !u!104 &2
|
||||
RenderSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 9
|
||||
m_Fog: 0
|
||||
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||
m_FogMode: 3
|
||||
m_FogDensity: 0.01
|
||||
m_LinearFogStart: 0
|
||||
m_LinearFogEnd: 300
|
||||
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
|
||||
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
|
||||
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
|
||||
m_AmbientIntensity: 1
|
||||
m_AmbientMode: 0
|
||||
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
||||
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_HaloStrength: 0.5
|
||||
m_FlareStrength: 1
|
||||
m_FlareFadeSpeed: 3
|
||||
m_HaloTexture: {fileID: 0}
|
||||
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_DefaultReflectionMode: 0
|
||||
m_DefaultReflectionResolution: 128
|
||||
m_ReflectionBounces: 1
|
||||
m_ReflectionIntensity: 1
|
||||
m_CustomReflection: {fileID: 0}
|
||||
m_Sun: {fileID: 705507994}
|
||||
m_IndirectSpecularColor: {r: 0.44657874, g: 0.49641275, b: 0.5748172, a: 1}
|
||||
m_UseRadianceAmbientProbe: 0
|
||||
--- !u!157 &3
|
||||
LightmapSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 12
|
||||
m_GIWorkflowMode: 1
|
||||
m_GISettings:
|
||||
serializedVersion: 2
|
||||
m_BounceScale: 1
|
||||
m_IndirectOutputScale: 1
|
||||
m_AlbedoBoost: 1
|
||||
m_EnvironmentLightingMode: 0
|
||||
m_EnableBakedLightmaps: 1
|
||||
m_EnableRealtimeLightmaps: 0
|
||||
m_LightmapEditorSettings:
|
||||
serializedVersion: 12
|
||||
m_Resolution: 2
|
||||
m_BakeResolution: 40
|
||||
m_AtlasSize: 1024
|
||||
m_AO: 0
|
||||
m_AOMaxDistance: 1
|
||||
m_CompAOExponent: 1
|
||||
m_CompAOExponentDirect: 0
|
||||
m_ExtractAmbientOcclusion: 0
|
||||
m_Padding: 2
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_LightmapsBakeMode: 1
|
||||
m_TextureCompression: 1
|
||||
m_FinalGather: 0
|
||||
m_FinalGatherFiltering: 1
|
||||
m_FinalGatherRayCount: 256
|
||||
m_ReflectionCompression: 2
|
||||
m_MixedBakeMode: 2
|
||||
m_BakeBackend: 1
|
||||
m_PVRSampling: 1
|
||||
m_PVRDirectSampleCount: 32
|
||||
m_PVRSampleCount: 500
|
||||
m_PVRBounces: 2
|
||||
m_PVREnvironmentSampleCount: 500
|
||||
m_PVREnvironmentReferencePointCount: 2048
|
||||
m_PVRFilteringMode: 2
|
||||
m_PVRDenoiserTypeDirect: 0
|
||||
m_PVRDenoiserTypeIndirect: 0
|
||||
m_PVRDenoiserTypeAO: 0
|
||||
m_PVRFilterTypeDirect: 0
|
||||
m_PVRFilterTypeIndirect: 0
|
||||
m_PVRFilterTypeAO: 0
|
||||
m_PVREnvironmentMIS: 0
|
||||
m_PVRCulling: 1
|
||||
m_PVRFilteringGaussRadiusDirect: 1
|
||||
m_PVRFilteringGaussRadiusIndirect: 5
|
||||
m_PVRFilteringGaussRadiusAO: 2
|
||||
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
||||
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
||||
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||
m_ExportTrainingData: 0
|
||||
m_TrainingDataDestination: TrainingData
|
||||
m_LightProbeSampleCountMultiplier: 4
|
||||
m_LightingDataAsset: {fileID: 0}
|
||||
m_LightingSettings: {fileID: 0}
|
||||
--- !u!196 &4
|
||||
NavMeshSettings:
|
||||
serializedVersion: 2
|
||||
m_ObjectHideFlags: 0
|
||||
m_BuildSettings:
|
||||
serializedVersion: 2
|
||||
agentTypeID: 0
|
||||
agentRadius: 0.5
|
||||
agentHeight: 2
|
||||
agentSlope: 45
|
||||
agentClimb: 0.4
|
||||
ledgeDropHeight: 0
|
||||
maxJumpAcrossDistance: 0
|
||||
minRegionArea: 2
|
||||
manualCellSize: 0
|
||||
cellSize: 0.16666667
|
||||
manualTileSize: 0
|
||||
tileSize: 256
|
||||
accuratePlacement: 0
|
||||
maxJobWorkers: 0
|
||||
preserveTilesOutsideBounds: 0
|
||||
debug:
|
||||
m_Flags: 0
|
||||
m_NavMeshData: {fileID: 0}
|
||||
--- !u!1 &568971784
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 568971786}
|
||||
- component: {fileID: 568971785}
|
||||
m_Layer: 0
|
||||
m_Name: yggdrasil_context
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &568971785
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 568971784}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3083421a52eca4fb186aecb7e4f143a9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
renderingQuality: 1
|
||||
--- !u!4 &568971786
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 568971784}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &705507993
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 705507995}
|
||||
- component: {fileID: 705507994}
|
||||
m_Layer: 0
|
||||
m_Name: Directional Light
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!108 &705507994
|
||||
Light:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 705507993}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 10
|
||||
m_Type: 1
|
||||
m_Shape: 0
|
||||
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
|
||||
m_Intensity: 1
|
||||
m_Range: 10
|
||||
m_SpotAngle: 30
|
||||
m_InnerSpotAngle: 21.802082
|
||||
m_CookieSize: 10
|
||||
m_Shadows:
|
||||
m_Type: 2
|
||||
m_Resolution: -1
|
||||
m_CustomResolution: -1
|
||||
m_Strength: 1
|
||||
m_Bias: 0.05
|
||||
m_NormalBias: 0.4
|
||||
m_NearPlane: 0.2
|
||||
m_CullingMatrixOverride:
|
||||
e00: 1
|
||||
e01: 0
|
||||
e02: 0
|
||||
e03: 0
|
||||
e10: 0
|
||||
e11: 1
|
||||
e12: 0
|
||||
e13: 0
|
||||
e20: 0
|
||||
e21: 0
|
||||
e22: 1
|
||||
e23: 0
|
||||
e30: 0
|
||||
e31: 0
|
||||
e32: 0
|
||||
e33: 1
|
||||
m_UseCullingMatrixOverride: 0
|
||||
m_Cookie: {fileID: 0}
|
||||
m_DrawHalo: 0
|
||||
m_Flare: {fileID: 0}
|
||||
m_RenderMode: 0
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_RenderingLayerMask: 1
|
||||
m_Lightmapping: 1
|
||||
m_LightShadowCasterMode: 0
|
||||
m_AreaSize: {x: 1, y: 1}
|
||||
m_BounceIntensity: 1
|
||||
m_ColorTemperature: 6570
|
||||
m_UseColorTemperature: 0
|
||||
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_UseBoundingSphereOverride: 0
|
||||
m_UseViewFrustumForShadowCasterCull: 1
|
||||
m_ShadowRadius: 0
|
||||
m_ShadowAngle: 0
|
||||
--- !u!4 &705507995
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 705507993}
|
||||
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
|
||||
m_LocalPosition: {x: 0, y: 3, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
||||
--- !u!1 &963194225
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 963194228}
|
||||
- component: {fileID: 963194227}
|
||||
- component: {fileID: 963194226}
|
||||
- component: {fileID: 963194230}
|
||||
- component: {fileID: 963194229}
|
||||
m_Layer: 0
|
||||
m_Name: Main Camera
|
||||
m_TagString: MainCamera
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!81 &963194226
|
||||
AudioListener:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_Enabled: 1
|
||||
--- !u!20 &963194227
|
||||
Camera:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_ClearFlags: 1
|
||||
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
||||
m_projectionMatrixMode: 1
|
||||
m_GateFitMode: 2
|
||||
m_FOVAxisMode: 0
|
||||
m_SensorSize: {x: 36, y: 24}
|
||||
m_LensShift: {x: 0, y: 0}
|
||||
m_FocalLength: 50
|
||||
m_NormalizedViewPortRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 1
|
||||
height: 1
|
||||
near clip plane: 0.3
|
||||
far clip plane: 1000
|
||||
field of view: 45
|
||||
orthographic: 0
|
||||
orthographic size: 5
|
||||
m_Depth: -1
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_RenderingPath: -1
|
||||
m_TargetTexture: {fileID: 0}
|
||||
m_TargetDisplay: 0
|
||||
m_TargetEye: 3
|
||||
m_HDR: 1
|
||||
m_AllowMSAA: 1
|
||||
m_AllowDynamicResolution: 0
|
||||
m_ForceIntoRT: 0
|
||||
m_OcclusionCulling: 1
|
||||
m_StereoConvergence: 10
|
||||
m_StereoSeparation: 0.022
|
||||
--- !u!4 &963194228
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: -3}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &963194229
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 1ed709a1949ef44bf86584accdb9253a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
speed: 5
|
||||
mouseSensitivity: 3.5
|
||||
--- !u!114 &963194230
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 67f4b0fc61d6d4b6499b28a0a4461b6f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &1413304767
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1413304771}
|
||||
- component: {fileID: 1413304770}
|
||||
- component: {fileID: 1413304769}
|
||||
- component: {fileID: 1413304768}
|
||||
- component: {fileID: 1413304773}
|
||||
- component: {fileID: 1413304772}
|
||||
m_Layer: 0
|
||||
m_Name: sound_source
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!135 &1413304768
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Material: {fileID: 0}
|
||||
m_IsTrigger: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!23 &1413304769
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 8472b5e58b9e34125b0af1bd0af83f06, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!33 &1413304770
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!4 &1413304771
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 3
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1413304772
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 30f78ed5e5eb44c188a740990ce49414, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
sourceGainDB: 0
|
||||
sourceSize: 0
|
||||
--- !u!82 &1413304773
|
||||
AudioSource:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 4
|
||||
OutputAudioMixerGroup: {fileID: 0}
|
||||
m_audioClip: {fileID: 8300000, guid: 507069cd8da1349f1bcbba3f25ac9c1c, type: 3}
|
||||
m_PlayOnAwake: 1
|
||||
m_Volume: 1
|
||||
m_Pitch: 1
|
||||
Loop: 1
|
||||
Mute: 0
|
||||
Spatialize: 0
|
||||
SpatializePostEffects: 0
|
||||
Priority: 128
|
||||
DopplerLevel: 1
|
||||
MinDistance: 1
|
||||
MaxDistance: 500
|
||||
Pan2D: 0
|
||||
rolloffMode: 0
|
||||
BypassEffects: 0
|
||||
BypassListenerEffects: 0
|
||||
BypassReverbZones: 0
|
||||
rolloffCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
- serializedVersion: 3
|
||||
time: 1
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
panLevelCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
spreadCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
reverbZoneMixCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b4abcf036a0d241ecab45ad8a7dd8bf4
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,772 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!29 &1
|
||||
OcclusionCullingSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_OcclusionBakeSettings:
|
||||
smallestOccluder: 5
|
||||
smallestHole: 0.25
|
||||
backfaceThreshold: 100
|
||||
m_SceneGUID: 00000000000000000000000000000000
|
||||
m_OcclusionCullingData: {fileID: 0}
|
||||
--- !u!104 &2
|
||||
RenderSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 9
|
||||
m_Fog: 0
|
||||
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||
m_FogMode: 3
|
||||
m_FogDensity: 0.01
|
||||
m_LinearFogStart: 0
|
||||
m_LinearFogEnd: 300
|
||||
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
|
||||
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
|
||||
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
|
||||
m_AmbientIntensity: 1
|
||||
m_AmbientMode: 0
|
||||
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
||||
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_HaloStrength: 0.5
|
||||
m_FlareStrength: 1
|
||||
m_FlareFadeSpeed: 3
|
||||
m_HaloTexture: {fileID: 0}
|
||||
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_DefaultReflectionMode: 0
|
||||
m_DefaultReflectionResolution: 128
|
||||
m_ReflectionBounces: 1
|
||||
m_ReflectionIntensity: 1
|
||||
m_CustomReflection: {fileID: 0}
|
||||
m_Sun: {fileID: 705507994}
|
||||
m_IndirectSpecularColor: {r: 0.44657874, g: 0.49641275, b: 0.5748172, a: 1}
|
||||
m_UseRadianceAmbientProbe: 0
|
||||
--- !u!157 &3
|
||||
LightmapSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 12
|
||||
m_GIWorkflowMode: 1
|
||||
m_GISettings:
|
||||
serializedVersion: 2
|
||||
m_BounceScale: 1
|
||||
m_IndirectOutputScale: 1
|
||||
m_AlbedoBoost: 1
|
||||
m_EnvironmentLightingMode: 0
|
||||
m_EnableBakedLightmaps: 1
|
||||
m_EnableRealtimeLightmaps: 0
|
||||
m_LightmapEditorSettings:
|
||||
serializedVersion: 12
|
||||
m_Resolution: 2
|
||||
m_BakeResolution: 40
|
||||
m_AtlasSize: 1024
|
||||
m_AO: 0
|
||||
m_AOMaxDistance: 1
|
||||
m_CompAOExponent: 1
|
||||
m_CompAOExponentDirect: 0
|
||||
m_ExtractAmbientOcclusion: 0
|
||||
m_Padding: 2
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_LightmapsBakeMode: 1
|
||||
m_TextureCompression: 1
|
||||
m_FinalGather: 0
|
||||
m_FinalGatherFiltering: 1
|
||||
m_FinalGatherRayCount: 256
|
||||
m_ReflectionCompression: 2
|
||||
m_MixedBakeMode: 2
|
||||
m_BakeBackend: 1
|
||||
m_PVRSampling: 1
|
||||
m_PVRDirectSampleCount: 32
|
||||
m_PVRSampleCount: 500
|
||||
m_PVRBounces: 2
|
||||
m_PVREnvironmentSampleCount: 500
|
||||
m_PVREnvironmentReferencePointCount: 2048
|
||||
m_PVRFilteringMode: 2
|
||||
m_PVRDenoiserTypeDirect: 0
|
||||
m_PVRDenoiserTypeIndirect: 0
|
||||
m_PVRDenoiserTypeAO: 0
|
||||
m_PVRFilterTypeDirect: 0
|
||||
m_PVRFilterTypeIndirect: 0
|
||||
m_PVRFilterTypeAO: 0
|
||||
m_PVREnvironmentMIS: 0
|
||||
m_PVRCulling: 1
|
||||
m_PVRFilteringGaussRadiusDirect: 1
|
||||
m_PVRFilteringGaussRadiusIndirect: 5
|
||||
m_PVRFilteringGaussRadiusAO: 2
|
||||
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
||||
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
||||
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||
m_ExportTrainingData: 0
|
||||
m_TrainingDataDestination: TrainingData
|
||||
m_LightProbeSampleCountMultiplier: 4
|
||||
m_LightingDataAsset: {fileID: 0}
|
||||
m_LightingSettings: {fileID: 0}
|
||||
--- !u!196 &4
|
||||
NavMeshSettings:
|
||||
serializedVersion: 2
|
||||
m_ObjectHideFlags: 0
|
||||
m_BuildSettings:
|
||||
serializedVersion: 2
|
||||
agentTypeID: 0
|
||||
agentRadius: 0.5
|
||||
agentHeight: 2
|
||||
agentSlope: 45
|
||||
agentClimb: 0.4
|
||||
ledgeDropHeight: 0
|
||||
maxJumpAcrossDistance: 0
|
||||
minRegionArea: 2
|
||||
manualCellSize: 0
|
||||
cellSize: 0.16666667
|
||||
manualTileSize: 0
|
||||
tileSize: 256
|
||||
accuratePlacement: 0
|
||||
maxJobWorkers: 0
|
||||
preserveTilesOutsideBounds: 0
|
||||
debug:
|
||||
m_Flags: 0
|
||||
m_NavMeshData: {fileID: 0}
|
||||
--- !u!1 &568971784
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 568971786}
|
||||
- component: {fileID: 568971785}
|
||||
m_Layer: 0
|
||||
m_Name: yggdrasil_context
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &568971785
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 568971784}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3083421a52eca4fb186aecb7e4f143a9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
renderingQuality: 1
|
||||
--- !u!4 &568971786
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 568971784}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &605876099
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 605876105}
|
||||
- component: {fileID: 605876104}
|
||||
- component: {fileID: 605876103}
|
||||
- component: {fileID: 605876102}
|
||||
- component: {fileID: 605876101}
|
||||
m_Layer: 0
|
||||
m_Name: sound_source_unity
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!82 &605876101
|
||||
AudioSource:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 605876099}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 4
|
||||
OutputAudioMixerGroup: {fileID: 0}
|
||||
m_audioClip: {fileID: 8300000, guid: 507069cd8da1349f1bcbba3f25ac9c1c, type: 3}
|
||||
m_PlayOnAwake: 1
|
||||
m_Volume: 1
|
||||
m_Pitch: 1
|
||||
Loop: 1
|
||||
Mute: 0
|
||||
Spatialize: 0
|
||||
SpatializePostEffects: 0
|
||||
Priority: 128
|
||||
DopplerLevel: 1
|
||||
MinDistance: 1
|
||||
MaxDistance: 500
|
||||
Pan2D: 0
|
||||
rolloffMode: 0
|
||||
BypassEffects: 0
|
||||
BypassListenerEffects: 0
|
||||
BypassReverbZones: 0
|
||||
rolloffCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
- serializedVersion: 3
|
||||
time: 1
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
panLevelCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
spreadCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
reverbZoneMixCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
--- !u!135 &605876102
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 605876099}
|
||||
m_Material: {fileID: 0}
|
||||
m_IsTrigger: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!23 &605876103
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 605876099}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 377a49fe53a364076a14c8caf3fef246, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!33 &605876104
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 605876099}
|
||||
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!4 &605876105
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 605876099}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 3.33, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 4
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &705507993
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 705507995}
|
||||
- component: {fileID: 705507994}
|
||||
m_Layer: 0
|
||||
m_Name: Directional Light
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!108 &705507994
|
||||
Light:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 705507993}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 10
|
||||
m_Type: 1
|
||||
m_Shape: 0
|
||||
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
|
||||
m_Intensity: 1
|
||||
m_Range: 10
|
||||
m_SpotAngle: 30
|
||||
m_InnerSpotAngle: 21.802082
|
||||
m_CookieSize: 10
|
||||
m_Shadows:
|
||||
m_Type: 2
|
||||
m_Resolution: -1
|
||||
m_CustomResolution: -1
|
||||
m_Strength: 1
|
||||
m_Bias: 0.05
|
||||
m_NormalBias: 0.4
|
||||
m_NearPlane: 0.2
|
||||
m_CullingMatrixOverride:
|
||||
e00: 1
|
||||
e01: 0
|
||||
e02: 0
|
||||
e03: 0
|
||||
e10: 0
|
||||
e11: 1
|
||||
e12: 0
|
||||
e13: 0
|
||||
e20: 0
|
||||
e21: 0
|
||||
e22: 1
|
||||
e23: 0
|
||||
e30: 0
|
||||
e31: 0
|
||||
e32: 0
|
||||
e33: 1
|
||||
m_UseCullingMatrixOverride: 0
|
||||
m_Cookie: {fileID: 0}
|
||||
m_DrawHalo: 0
|
||||
m_Flare: {fileID: 0}
|
||||
m_RenderMode: 0
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_RenderingLayerMask: 1
|
||||
m_Lightmapping: 1
|
||||
m_LightShadowCasterMode: 0
|
||||
m_AreaSize: {x: 1, y: 1}
|
||||
m_BounceIntensity: 1
|
||||
m_ColorTemperature: 6570
|
||||
m_UseColorTemperature: 0
|
||||
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_UseBoundingSphereOverride: 0
|
||||
m_UseViewFrustumForShadowCasterCull: 1
|
||||
m_ShadowRadius: 0
|
||||
m_ShadowAngle: 0
|
||||
--- !u!4 &705507995
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 705507993}
|
||||
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
|
||||
m_LocalPosition: {x: 0, y: 3, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
||||
--- !u!1 &963194225
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 963194228}
|
||||
- component: {fileID: 963194227}
|
||||
- component: {fileID: 963194226}
|
||||
- component: {fileID: 963194229}
|
||||
- component: {fileID: 963194230}
|
||||
m_Layer: 0
|
||||
m_Name: Main Camera
|
||||
m_TagString: MainCamera
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!81 &963194226
|
||||
AudioListener:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_Enabled: 1
|
||||
--- !u!20 &963194227
|
||||
Camera:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_ClearFlags: 1
|
||||
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
||||
m_projectionMatrixMode: 1
|
||||
m_GateFitMode: 2
|
||||
m_FOVAxisMode: 0
|
||||
m_SensorSize: {x: 36, y: 24}
|
||||
m_LensShift: {x: 0, y: 0}
|
||||
m_FocalLength: 50
|
||||
m_NormalizedViewPortRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 1
|
||||
height: 1
|
||||
near clip plane: 0.3
|
||||
far clip plane: 1000
|
||||
field of view: 45
|
||||
orthographic: 0
|
||||
orthographic size: 5
|
||||
m_Depth: -1
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_RenderingPath: -1
|
||||
m_TargetTexture: {fileID: 0}
|
||||
m_TargetDisplay: 0
|
||||
m_TargetEye: 3
|
||||
m_HDR: 1
|
||||
m_AllowMSAA: 1
|
||||
m_AllowDynamicResolution: 0
|
||||
m_ForceIntoRT: 0
|
||||
m_OcclusionCulling: 1
|
||||
m_StereoConvergence: 10
|
||||
m_StereoSeparation: 0.022
|
||||
--- !u!4 &963194228
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 1.43, y: 0, z: -4.06}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &963194229
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 67f4b0fc61d6d4b6499b28a0a4461b6f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!114 &963194230
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 1ed709a1949ef44bf86584accdb9253a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
speed: 5
|
||||
mouseSensitivity: 3.5
|
||||
--- !u!1 &1413304767
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1413304771}
|
||||
- component: {fileID: 1413304770}
|
||||
- component: {fileID: 1413304769}
|
||||
- component: {fileID: 1413304768}
|
||||
- component: {fileID: 1413304773}
|
||||
- component: {fileID: 1413304772}
|
||||
m_Layer: 0
|
||||
m_Name: sound_source_ygg
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!135 &1413304768
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Material: {fileID: 0}
|
||||
m_IsTrigger: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!23 &1413304769
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 8472b5e58b9e34125b0af1bd0af83f06, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!33 &1413304770
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!4 &1413304771
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 3
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1413304772
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 30f78ed5e5eb44c188a740990ce49414, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
sourceGainDB: 0
|
||||
sourceSize: 0
|
||||
--- !u!82 &1413304773
|
||||
AudioSource:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 4
|
||||
OutputAudioMixerGroup: {fileID: 0}
|
||||
m_audioClip: {fileID: 8300000, guid: 507069cd8da1349f1bcbba3f25ac9c1c, type: 3}
|
||||
m_PlayOnAwake: 1
|
||||
m_Volume: 1
|
||||
m_Pitch: 1
|
||||
Loop: 1
|
||||
Mute: 0
|
||||
Spatialize: 0
|
||||
SpatializePostEffects: 0
|
||||
Priority: 128
|
||||
DopplerLevel: 1
|
||||
MinDistance: 1
|
||||
MaxDistance: 500
|
||||
Pan2D: 0
|
||||
rolloffMode: 0
|
||||
BypassEffects: 0
|
||||
BypassListenerEffects: 0
|
||||
BypassReverbZones: 0
|
||||
rolloffCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
- serializedVersion: 3
|
||||
time: 1
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
panLevelCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
spreadCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
reverbZoneMixCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 393383243374948298ca756e15e5a868
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b35a5829a5b5a4b8cb940a06dbc00212
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,599 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!29 &1
|
||||
OcclusionCullingSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_OcclusionBakeSettings:
|
||||
smallestOccluder: 5
|
||||
smallestHole: 0.25
|
||||
backfaceThreshold: 100
|
||||
m_SceneGUID: 00000000000000000000000000000000
|
||||
m_OcclusionCullingData: {fileID: 0}
|
||||
--- !u!104 &2
|
||||
RenderSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 9
|
||||
m_Fog: 0
|
||||
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||
m_FogMode: 3
|
||||
m_FogDensity: 0.01
|
||||
m_LinearFogStart: 0
|
||||
m_LinearFogEnd: 300
|
||||
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
|
||||
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
|
||||
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
|
||||
m_AmbientIntensity: 1
|
||||
m_AmbientMode: 0
|
||||
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
||||
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_HaloStrength: 0.5
|
||||
m_FlareStrength: 1
|
||||
m_FlareFadeSpeed: 3
|
||||
m_HaloTexture: {fileID: 0}
|
||||
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_DefaultReflectionMode: 0
|
||||
m_DefaultReflectionResolution: 128
|
||||
m_ReflectionBounces: 1
|
||||
m_ReflectionIntensity: 1
|
||||
m_CustomReflection: {fileID: 0}
|
||||
m_Sun: {fileID: 705507994}
|
||||
m_IndirectSpecularColor: {r: 0.44657874, g: 0.49641275, b: 0.5748172, a: 1}
|
||||
m_UseRadianceAmbientProbe: 0
|
||||
--- !u!157 &3
|
||||
LightmapSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 12
|
||||
m_GIWorkflowMode: 1
|
||||
m_GISettings:
|
||||
serializedVersion: 2
|
||||
m_BounceScale: 1
|
||||
m_IndirectOutputScale: 1
|
||||
m_AlbedoBoost: 1
|
||||
m_EnvironmentLightingMode: 0
|
||||
m_EnableBakedLightmaps: 1
|
||||
m_EnableRealtimeLightmaps: 0
|
||||
m_LightmapEditorSettings:
|
||||
serializedVersion: 12
|
||||
m_Resolution: 2
|
||||
m_BakeResolution: 40
|
||||
m_AtlasSize: 1024
|
||||
m_AO: 0
|
||||
m_AOMaxDistance: 1
|
||||
m_CompAOExponent: 1
|
||||
m_CompAOExponentDirect: 0
|
||||
m_ExtractAmbientOcclusion: 0
|
||||
m_Padding: 2
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_LightmapsBakeMode: 1
|
||||
m_TextureCompression: 1
|
||||
m_FinalGather: 0
|
||||
m_FinalGatherFiltering: 1
|
||||
m_FinalGatherRayCount: 256
|
||||
m_ReflectionCompression: 2
|
||||
m_MixedBakeMode: 2
|
||||
m_BakeBackend: 1
|
||||
m_PVRSampling: 1
|
||||
m_PVRDirectSampleCount: 32
|
||||
m_PVRSampleCount: 500
|
||||
m_PVRBounces: 2
|
||||
m_PVREnvironmentSampleCount: 500
|
||||
m_PVREnvironmentReferencePointCount: 2048
|
||||
m_PVRFilteringMode: 2
|
||||
m_PVRDenoiserTypeDirect: 0
|
||||
m_PVRDenoiserTypeIndirect: 0
|
||||
m_PVRDenoiserTypeAO: 0
|
||||
m_PVRFilterTypeDirect: 0
|
||||
m_PVRFilterTypeIndirect: 0
|
||||
m_PVRFilterTypeAO: 0
|
||||
m_PVREnvironmentMIS: 0
|
||||
m_PVRCulling: 1
|
||||
m_PVRFilteringGaussRadiusDirect: 1
|
||||
m_PVRFilteringGaussRadiusIndirect: 5
|
||||
m_PVRFilteringGaussRadiusAO: 2
|
||||
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
||||
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
||||
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||
m_ExportTrainingData: 0
|
||||
m_TrainingDataDestination: TrainingData
|
||||
m_LightProbeSampleCountMultiplier: 4
|
||||
m_LightingDataAsset: {fileID: 0}
|
||||
m_LightingSettings: {fileID: 0}
|
||||
--- !u!196 &4
|
||||
NavMeshSettings:
|
||||
serializedVersion: 2
|
||||
m_ObjectHideFlags: 0
|
||||
m_BuildSettings:
|
||||
serializedVersion: 2
|
||||
agentTypeID: 0
|
||||
agentRadius: 0.5
|
||||
agentHeight: 2
|
||||
agentSlope: 45
|
||||
agentClimb: 0.4
|
||||
ledgeDropHeight: 0
|
||||
maxJumpAcrossDistance: 0
|
||||
minRegionArea: 2
|
||||
manualCellSize: 0
|
||||
cellSize: 0.16666667
|
||||
manualTileSize: 0
|
||||
tileSize: 256
|
||||
accuratePlacement: 0
|
||||
maxJobWorkers: 0
|
||||
preserveTilesOutsideBounds: 0
|
||||
debug:
|
||||
m_Flags: 0
|
||||
m_NavMeshData: {fileID: 0}
|
||||
--- !u!1 &568971784
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 568971786}
|
||||
- component: {fileID: 568971785}
|
||||
m_Layer: 0
|
||||
m_Name: yggdrasil_context
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &568971785
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 568971784}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3083421a52eca4fb186aecb7e4f143a9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
spatializerApiImpl: 0
|
||||
renderingQuality: 1
|
||||
meshBakingLayerMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
preInitEvent:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
lateInitEvent:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
hrirFilePathToLoad:
|
||||
--- !u!4 &568971786
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 568971784}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &705507993
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 705507995}
|
||||
- component: {fileID: 705507994}
|
||||
m_Layer: 0
|
||||
m_Name: Directional Light
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!108 &705507994
|
||||
Light:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 705507993}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 10
|
||||
m_Type: 1
|
||||
m_Shape: 0
|
||||
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
|
||||
m_Intensity: 1
|
||||
m_Range: 10
|
||||
m_SpotAngle: 30
|
||||
m_InnerSpotAngle: 21.802082
|
||||
m_CookieSize: 10
|
||||
m_Shadows:
|
||||
m_Type: 2
|
||||
m_Resolution: -1
|
||||
m_CustomResolution: -1
|
||||
m_Strength: 1
|
||||
m_Bias: 0.05
|
||||
m_NormalBias: 0.4
|
||||
m_NearPlane: 0.2
|
||||
m_CullingMatrixOverride:
|
||||
e00: 1
|
||||
e01: 0
|
||||
e02: 0
|
||||
e03: 0
|
||||
e10: 0
|
||||
e11: 1
|
||||
e12: 0
|
||||
e13: 0
|
||||
e20: 0
|
||||
e21: 0
|
||||
e22: 1
|
||||
e23: 0
|
||||
e30: 0
|
||||
e31: 0
|
||||
e32: 0
|
||||
e33: 1
|
||||
m_UseCullingMatrixOverride: 0
|
||||
m_Cookie: {fileID: 0}
|
||||
m_DrawHalo: 0
|
||||
m_Flare: {fileID: 0}
|
||||
m_RenderMode: 0
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_RenderingLayerMask: 1
|
||||
m_Lightmapping: 1
|
||||
m_LightShadowCasterMode: 0
|
||||
m_AreaSize: {x: 1, y: 1}
|
||||
m_BounceIntensity: 1
|
||||
m_ColorTemperature: 6570
|
||||
m_UseColorTemperature: 0
|
||||
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_UseBoundingSphereOverride: 0
|
||||
m_UseViewFrustumForShadowCasterCull: 1
|
||||
m_ShadowRadius: 0
|
||||
m_ShadowAngle: 0
|
||||
--- !u!4 &705507995
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 705507993}
|
||||
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
|
||||
m_LocalPosition: {x: 0, y: 3, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
||||
--- !u!1 &963194225
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 963194228}
|
||||
- component: {fileID: 963194227}
|
||||
- component: {fileID: 963194226}
|
||||
- component: {fileID: 963194230}
|
||||
- component: {fileID: 963194229}
|
||||
m_Layer: 0
|
||||
m_Name: Main Camera
|
||||
m_TagString: MainCamera
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!81 &963194226
|
||||
AudioListener:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_Enabled: 1
|
||||
--- !u!20 &963194227
|
||||
Camera:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_ClearFlags: 1
|
||||
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
||||
m_projectionMatrixMode: 1
|
||||
m_GateFitMode: 2
|
||||
m_FOVAxisMode: 0
|
||||
m_SensorSize: {x: 36, y: 24}
|
||||
m_LensShift: {x: 0, y: 0}
|
||||
m_FocalLength: 50
|
||||
m_NormalizedViewPortRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 1
|
||||
height: 1
|
||||
near clip plane: 0.3
|
||||
far clip plane: 1000
|
||||
field of view: 45
|
||||
orthographic: 0
|
||||
orthographic size: 5
|
||||
m_Depth: -1
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_RenderingPath: -1
|
||||
m_TargetTexture: {fileID: 0}
|
||||
m_TargetDisplay: 0
|
||||
m_TargetEye: 3
|
||||
m_HDR: 1
|
||||
m_AllowMSAA: 1
|
||||
m_AllowDynamicResolution: 0
|
||||
m_ForceIntoRT: 0
|
||||
m_OcclusionCulling: 1
|
||||
m_StereoConvergence: 10
|
||||
m_StereoSeparation: 0.022
|
||||
--- !u!4 &963194228
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0}
|
||||
--- !u!114 &963194229
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 1ed709a1949ef44bf86584accdb9253a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
speed: 5
|
||||
mouseSensitivity: 3.5
|
||||
--- !u!114 &963194230
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 67f4b0fc61d6d4b6499b28a0a4461b6f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
outputMethod: 1
|
||||
--- !u!1 &1413304767
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1413304771}
|
||||
- component: {fileID: 1413304770}
|
||||
- component: {fileID: 1413304769}
|
||||
- component: {fileID: 1413304768}
|
||||
- component: {fileID: 1413304773}
|
||||
- component: {fileID: 1413304772}
|
||||
m_Layer: 0
|
||||
m_Name: sound_source
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!135 &1413304768
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Material: {fileID: 0}
|
||||
m_IsTrigger: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!23 &1413304769
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 8472b5e58b9e34125b0af1bd0af83f06, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!33 &1413304770
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!4 &1413304771
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: -10, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 3
|
||||
m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0}
|
||||
--- !u!114 &1413304772
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 30f78ed5e5eb44c188a740990ce49414, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
sourceGainDB: 8
|
||||
reflectionGainDB: 0
|
||||
sourceSize: 0
|
||||
enableDoppler: 1
|
||||
sourceAttenuationMode: 2
|
||||
minAttenuationDistance: 1
|
||||
maxAttenuationDistance: 100
|
||||
directivityAlpha: 0
|
||||
directivityOrder: 1
|
||||
--- !u!82 &1413304773
|
||||
AudioSource:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1413304767}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 4
|
||||
OutputAudioMixerGroup: {fileID: 24300002, guid: 1fc25bd22f2044e93a8385ab8c1f2683, type: 2}
|
||||
m_audioClip: {fileID: 8300000, guid: 507069cd8da1349f1bcbba3f25ac9c1c, type: 3}
|
||||
m_PlayOnAwake: 1
|
||||
m_Volume: 1
|
||||
m_Pitch: 1
|
||||
Loop: 1
|
||||
Mute: 0
|
||||
Spatialize: 0
|
||||
SpatializePostEffects: 0
|
||||
Priority: 128
|
||||
DopplerLevel: 1
|
||||
MinDistance: 1
|
||||
MaxDistance: 500
|
||||
Pan2D: 0
|
||||
rolloffMode: 0
|
||||
BypassEffects: 0
|
||||
BypassListenerEffects: 0
|
||||
BypassReverbZones: 0
|
||||
rolloffCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
- serializedVersion: 3
|
||||
time: 1
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
panLevelCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
spreadCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
reverbZoneMixCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 49f991428c4ae49fbb4c6e5a1ef88765
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user