From eb84bb298d2b95aec7b2ae12cbf25ac64f25379a Mon Sep 17 00:00:00 2001 From: tylermurphy534 Date: Sun, 6 Nov 2022 15:12:42 -0500 Subject: move to self host --- .../UnitySerializationInitializer.cs | 100 +++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/UnitySerializationInitializer.cs (limited to 'VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/UnitySerializationInitializer.cs') diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/UnitySerializationInitializer.cs b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/UnitySerializationInitializer.cs new file mode 100644 index 00000000..74cf6983 --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/UnitySerializationInitializer.cs @@ -0,0 +1,100 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) 2018 Sirenix IVS +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// 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. +// +//----------------------------------------------------------------------- + +namespace VRC.Udon.Serialization.OdinSerializer +{ + using UnityEngine; + + /// + /// Utility class which initializes the Sirenix serialization system to be compatible with Unity. + /// + public static class UnitySerializationInitializer + { + private static readonly object LOCK = new object(); + private static bool initialized = false; + + public static bool Initialized { get { return initialized; } } + + public static RuntimePlatform CurrentPlatform { get; private set; } + + /// + /// Initializes the Sirenix serialization system to be compatible with Unity. + /// + public static void Initialize() + { + if (!initialized) + { + lock (LOCK) + { + if (!initialized) + { + try + { + // Ensure that the config instance is loaded before deserialization of anything occurs. + // If we try to load it during deserialization, Unity will throw exceptions, as a lot of + // the Unity API is disallowed during serialization and deserialization. + GlobalSerializationConfig.LoadInstanceIfAssetExists(); + + CurrentPlatform = Application.platform; + + if (Application.isEditor) return; + + ArchitectureInfo.SetRuntimePlatform(CurrentPlatform); + + //if (CurrentPlatform == RuntimePlatform.Android) + //{ + // //using (var system = new AndroidJavaClass("java.lang.System")) + // //{ + // // string architecture = system.CallStatic("getProperty", "os.arch"); + // // ArchitectureInfo.SetIsOnAndroid(architecture); + // //} + //} + //else if (CurrentPlatform == RuntimePlatform.IPhonePlayer) + //{ + // ArchitectureInfo.SetIsOnIPhone(); + //} + //else + //{ + // ArchitectureInfo.SetIsNotOnMobile(); + //} + } + finally + { + initialized = true; + } + } + } + } + } + + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] + private static void InitializeRuntime() + { + Initialize(); + } + +#if UNITY_EDITOR + + [UnityEditor.InitializeOnLoadMethod] + private static void InitializeEditor() + { + Initialize(); + } +#endif + } +} \ No newline at end of file -- cgit v1.2.3-freya