Initial Commit
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
/************************************************************************************
|
||||
Filename : ONSPPropagationSerializationManager.cs
|
||||
Content : Functionality for serializing Oculus Audio geometry
|
||||
Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved.
|
||||
|
||||
Licensed under the Oculus SDK Version 3.5 (the "License");
|
||||
you may not use the Oculus SDK except in compliance with the License,
|
||||
which is provided at the time of installation or download, or which
|
||||
otherwise accompanies this software in either electronic or hard copy form.
|
||||
|
||||
You may obtain a copy of the License at
|
||||
|
||||
https://developer.oculus.com/licenses/sdk-3.5/
|
||||
|
||||
Unless required by applicable law or agreed to in writing, the Oculus SDK
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
************************************************************************************/
|
||||
using UnityEditor;
|
||||
using UnityEditor.Build;
|
||||
using UnityEngine;
|
||||
using UnityEditor.SceneManagement;
|
||||
using UnityEngine.SceneManagement;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public enum PlayModeState
|
||||
{
|
||||
Stopped,
|
||||
Playing,
|
||||
Paused
|
||||
}
|
||||
|
||||
class ONSPPropagationSerializationManager
|
||||
{
|
||||
static ONSPPropagationSerializationManager()
|
||||
{
|
||||
EditorSceneManager.sceneSaving += OnSceneSaving;
|
||||
}
|
||||
public int callbackOrder { get { return 0; } }
|
||||
public void OnPreprocessBuild(BuildTarget target, string path)
|
||||
{
|
||||
Debug.Log("ONSPPropagationSerializationManager.OnPreprocessBuild for target " + target + " at path " + path);
|
||||
}
|
||||
|
||||
[MenuItem("Oculus/Spatializer/Build audio geometry for current scene")]
|
||||
public static void BuildAudioGeometryForCurrentScene()
|
||||
{
|
||||
BuildAudioGeometryForScene(EditorSceneManager.GetActiveScene());
|
||||
}
|
||||
|
||||
[MenuItem("Oculus/Spatializer/Rebuild audio geometry all scenes")]
|
||||
public static void RebuildAudioGeometryForAllScenes()
|
||||
{
|
||||
Debug.Log("Rebuilding geometry for all scenes");
|
||||
|
||||
System.IO.Directory.Delete(ONSPPropagationGeometry.GeometryAssetPath, true);
|
||||
|
||||
for (int i = 0; i < EditorSceneManager.sceneCount; ++i)
|
||||
{
|
||||
BuildAudioGeometryForScene(EditorSceneManager.GetSceneAt(i));
|
||||
}
|
||||
}
|
||||
|
||||
public static void OnSceneSaving(Scene scene, string path)
|
||||
{
|
||||
BuildAudioGeometryForScene(scene);
|
||||
}
|
||||
|
||||
private static void BuildAudioGeometryForScene(Scene scene)
|
||||
{
|
||||
Debug.Log("Building audio geometry for scene " + scene.name);
|
||||
|
||||
List<GameObject> rootObjects = new List<GameObject>();
|
||||
scene.GetRootGameObjects(rootObjects);
|
||||
|
||||
HashSet<string> fileNames = new HashSet<string>();
|
||||
foreach (GameObject go in rootObjects)
|
||||
{
|
||||
var geometryComponents = go.GetComponentsInChildren<ONSPPropagationGeometry>();
|
||||
foreach (ONSPPropagationGeometry geo in geometryComponents)
|
||||
{
|
||||
if (geo.fileEnabled)
|
||||
{
|
||||
if (!geo.WriteFile())
|
||||
{
|
||||
Debug.LogError("Failed writing geometry for " + geo.gameObject.name);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!fileNames.Add(geo.filePathRelative))
|
||||
{
|
||||
Debug.LogWarning("Duplicate file name detected: " + geo.filePathRelative);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Debug.Log("Successfully built " + fileNames.Count + " geometry objects");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user