| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 | 
							- // Author: Daniele Giardini - http://www.demigiant.com
 
- // Created: 2018/07/13
 
- using System;
 
- using System.Reflection;
 
- using UnityEngine;
 
- using DG.Tweening.Core;
 
- using DG.Tweening.Plugins.Core.PathCore;
 
- using DG.Tweening.Plugins.Options;
 
- #pragma warning disable 1591
 
- namespace DG.Tweening
 
- {
 
-     /// <summary>
 
-     /// Utility functions that deal with available Modules.
 
-     /// Modules defines:
 
-     /// - DOTAUDIO
 
-     /// - DOTPHYSICS
 
-     /// - DOTPHYSICS2D
 
-     /// - DOTSPRITE
 
-     /// - DOTUI
 
-     /// Extra defines set and used for implementation of external assets:
 
-     /// - DOTWEEN_TMP ► TextMesh Pro
 
-     /// - DOTWEEN_TK2D ► 2D Toolkit
 
-     /// </summary>
 
- 	public static class DOTweenModuleUtils
 
-     {
 
-         static bool _initialized;
 
-         #region Reflection
 
-         /// <summary>
 
-         /// Called via Reflection by DOTweenComponent on Awake
 
-         /// </summary>
 
- #if UNITY_2018_1_OR_NEWER
 
-         [UnityEngine.Scripting.Preserve]
 
- #endif
 
-         public static void Init()
 
-         {
 
-             if (_initialized) return;
 
-             _initialized = true;
 
-             DOTweenExternalCommand.SetOrientationOnPath += Physics.SetOrientationOnPath;
 
- #if UNITY_EDITOR
 
- #if UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1
 
-             UnityEditor.EditorApplication.playmodeStateChanged += PlaymodeStateChanged;
 
- #else
 
-             UnityEditor.EditorApplication.playModeStateChanged += PlaymodeStateChanged;
 
- #endif
 
- #endif
 
-         }
 
- #if UNITY_2018_1_OR_NEWER
 
- #pragma warning disable
 
-         [UnityEngine.Scripting.Preserve]
 
-         // Just used to preserve methods when building, never called
 
-         static void Preserver()
 
-         {
 
-             Assembly[] loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies();
 
-             MethodInfo mi = typeof(MonoBehaviour).GetMethod("Stub");
 
-         }
 
- #pragma warning restore
 
- #endif
 
-         #endregion
 
- #if UNITY_EDITOR
 
-         // Fires OnApplicationPause in DOTweenComponent even when Editor is paused (otherwise it's only fired at runtime)
 
- #if UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1
 
-         static void PlaymodeStateChanged()
 
-         #else
 
-         static void PlaymodeStateChanged(UnityEditor.PlayModeStateChange state)
 
- #endif
 
-         {
 
-             if (DOTween.instance == null) return;
 
-             DOTween.instance.OnApplicationPause(UnityEditor.EditorApplication.isPaused);
 
-         }
 
- #endif
 
-         // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
 
-         // ███ INTERNAL CLASSES ████████████████████████████████████████████████████████████████████████████████████████████████
 
-         // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
 
-         public static class Physics
 
-         {
 
-             // Called via DOTweenExternalCommand callback
 
-             public static void SetOrientationOnPath(PathOptions options, Tween t, Quaternion newRot, Transform trans)
 
-             {
 
- #if true // PHYSICS_MARKER
 
-                 if (options.isRigidbody) ((Rigidbody)t.target).rotation = newRot;
 
-                 else trans.rotation = newRot;
 
- #else
 
-                 trans.rotation = newRot;
 
- #endif
 
-             }
 
-             // Returns FALSE if the DOTween's Physics2D Module is disabled, or if there's no Rigidbody2D attached
 
-             public static bool HasRigidbody2D(Component target)
 
-             {
 
- #if true // PHYSICS2D_MARKER
 
-                 return target.GetComponent<Rigidbody2D>() != null;
 
- #else
 
-                 return false;
 
- #endif
 
-             }
 
-             #region Called via Reflection
 
-             // Called via Reflection by DOTweenPathInspector
 
-             // Returns FALSE if the DOTween's Physics Module is disabled, or if there's no rigidbody attached
 
- #if UNITY_2018_1_OR_NEWER
 
-             [UnityEngine.Scripting.Preserve]
 
- #endif
 
-             public static bool HasRigidbody(Component target)
 
-             {
 
- #if true // PHYSICS_MARKER
 
-                 return target.GetComponent<Rigidbody>() != null;
 
- #else
 
-                 return false;
 
- #endif
 
-             }
 
-             // Called via Reflection by DOTweenPath
 
- #if UNITY_2018_1_OR_NEWER
 
-             [UnityEngine.Scripting.Preserve]
 
- #endif
 
-             public static TweenerCore<Vector3, Path, PathOptions> CreateDOTweenPathTween(
 
-                 MonoBehaviour target, bool tweenRigidbody, bool isLocal, Path path, float duration, PathMode pathMode
 
-             ){
 
-                 TweenerCore<Vector3, Path, PathOptions> t = null;
 
-                 bool rBodyFoundAndTweened = false;
 
- #if true // PHYSICS_MARKER
 
-                 if (tweenRigidbody) {
 
-                     Rigidbody rBody = target.GetComponent<Rigidbody>();
 
-                     if (rBody != null) {
 
-                         rBodyFoundAndTweened = true;
 
-                         t = isLocal
 
-                             ? rBody.DOLocalPath(path, duration, pathMode)
 
-                             : rBody.DOPath(path, duration, pathMode);
 
-                     }
 
-                 }
 
- #endif
 
- #if true // PHYSICS2D_MARKER
 
-                 if (!rBodyFoundAndTweened && tweenRigidbody) {
 
-                     Rigidbody2D rBody2D = target.GetComponent<Rigidbody2D>();
 
-                     if (rBody2D != null) {
 
-                         rBodyFoundAndTweened = true;
 
-                         t = isLocal
 
-                             ? rBody2D.DOLocalPath(path, duration, pathMode)
 
-                             : rBody2D.DOPath(path, duration, pathMode);
 
-                     }
 
-                 }
 
- #endif
 
-                 if (!rBodyFoundAndTweened) {
 
-                     t = isLocal
 
-                         ? target.transform.DOLocalPath(path, duration, pathMode)
 
-                         : target.transform.DOPath(path, duration, pathMode);
 
-                 }
 
-                 return t;
 
-             }
 
-             #endregion
 
-         }
 
-     }
 
- }
 
 
  |