// zlib/libpng License // // Copyright (c) 2018 Sinoa // // This software is provided 'as-is', without any express or implied warranty. // In no event will the authors be held liable for any damages arising from the use of this software. // Permission is granted to anyone to use this software for any purpose, // including commercial applications, and to alter it and redistribute it freely, // subject to the following restrictions: // // 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. // If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. // 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. // 3. This notice may not be removed or altered from any source distribution. using System; namespace IceMilkTea.Core { /// /// サービスが動作するための更新タイミングを表します /// [Flags] public enum GameServiceUpdateTiming : UInt32 { /// /// メインループ最初のタイミング。 /// ただし、Time.frameCountや入力情報の更新直後となります。 /// MainLoopHead = (1 << 0), /// /// MonoBehaviour.FixedUpdate直前のタイミング /// PreFixedUpdate = (1 << 1), /// /// MonoBehaviour.FixedUpdate直後のタイミング /// PostFixedUpdate = (1 << 2), /// /// 物理シミュレーション直後のタイミング。 /// ただし、シミュレーションによる物理イベントキューが全て処理された直後となります。 /// PostPhysicsSimulation = (1 << 3), /// /// WaitForFixedUpdate直後のタイミング。 /// PostWaitForFixedUpdate = (1 << 4), /// /// UnitySynchronizationContextにPostされた関数キューが処理される直前のタイミング /// PreProcessSynchronizationContext = (1 << 5), /// /// UnitySynchronizationContextにPostされた関数キューが処理された直後のタイミング /// PostProcessSynchronizationContext = (1 << 6), /// /// MonoBehaviour.Update直前のタイミング /// PreUpdate = (1 << 7), /// /// MonoBehaviour.Update直後のタイミング /// PostUpdate = (1 << 8), /// /// UnityのAnimator(UpdateMode=Normal)によるポージング処理される直前のタイミング /// PreAnimation = (1 << 9), /// /// UnityのAnimator(UpdateMode=Normal)によるポージング処理された直後のタイミング /// PostAnimation = (1 << 10), /// /// MonoBehaviour.LateUpdate直前のタイミング /// PreLateUpdate = (1 << 11), /// /// MonoBehaviour.LateUpdate直後のタイミング /// PostLateUpdate = (1 << 12), /// /// メインスレッドにおける描画デバイスのPresentする直前のタイミング /// PreDrawPresent = (1 << 13), /// /// メインスレッドにおける描画デバイスのPresentされた直後のタイミング /// PostDrawPresent = (1 << 14), /// /// メインループの最後のタイミング。 /// MainLoopTail = (1 << 15), /// /// Unityプレイヤーのフォーカスが得られたときのタイミング。 /// OnApplicationFocus(true)。 /// OnApplicationFocusIn = (1 << 16), /// /// Unityプレイヤーのフォーカスが失われたときのタイミング。 /// OnApplicationFocus(false)。 /// OnApplicationFocusOut = (1 << 17), /// /// Unityプレイヤーのメインループが一時停止したときのタイミング。 /// OnApplicationPause(true)。 /// OnApplicationSuspend = (1 << 18), /// /// Unityプレイヤーのメインループが再開したときのタイミング。 /// OnApplicationPause(false)。 /// OnApplicationResume = (1 << 19), /// /// あらゆるカメラのカリングが行われる直前のタイミング。 /// ただし、カメラが存在する数分1フレームで複数回呼び出される可能性があります。 /// さらに、スレッドはメインスレッド上におけるタイミングとなります。 /// CameraPreCulling = (1 << 20), /// /// あらゆるカメラのレンダリングが行われる直前のタイミング。 /// ただし、カメラが存在する数分1フレームで複数回呼び出される可能性があります。 /// さらに、スレッドはメインスレッド上におけるタイミングとなります。 /// CameraPreRendering = (1 << 21), /// /// あらゆるカメラのレンダリングが行われた直後のタイミング。 /// ただし、カメラが存在する数分1フレームで複数回呼び出される可能性があります。 /// さらに、スレッドはメインスレッド上におけるタイミングとなります。 /// CameraPostRendering = (1 << 22), /// /// UnityプレイヤーのWaitForEndOfFrameの継続するタイミング。 /// {yield return endOfFrame; OnEndOfFrame;} /// OnEndOfFrame = (1 << 23), } }