From 53ffc6469909f0eecde9964efc198122bed98753 Mon Sep 17 00:00:00 2001 From: ALEXTANG <574809918@qq.com> Date: Tue, 9 May 2023 00:06:03 +0800 Subject: [PATCH] Revert "[+] Import Dotween Free Version" This reverts commit c072b822393fe5f94fd56758697e8e1268ce6fe1. --- Assets/Resources.meta | 8 - Assets/Resources/DOTweenSettings.asset | 54 - Assets/Resources/DOTweenSettings.asset.meta | 8 - Assets/TEngine/Thirdly/DOTween.meta | 8 - Assets/TEngine/Thirdly/DOTween/DOTween.XML | 3051 ----------------- .../TEngine/Thirdly/DOTween/DOTween.XML.meta | 7 - Assets/TEngine/Thirdly/DOTween/DOTween.dll | Bin 174592 -> 0 bytes .../TEngine/Thirdly/DOTween/DOTween.dll.meta | 33 - Assets/TEngine/Thirdly/DOTween/Editor.meta | 8 - .../Thirdly/DOTween/Editor/DOTweenEditor.XML | 110 - .../DOTween/Editor/DOTweenEditor.XML.meta | 7 - .../Thirdly/DOTween/Editor/DOTweenEditor.dll | Bin 66560 -> 0 bytes .../DOTween/Editor/DOTweenEditor.dll.meta | 33 - .../TEngine/Thirdly/DOTween/Editor/Imgs.meta | 8 - .../DOTween/Editor/Imgs/DOTweenIcon.png | Bin 1565 -> 0 bytes .../DOTween/Editor/Imgs/DOTweenIcon.png.meta | 147 - .../DOTween/Editor/Imgs/DOTweenMiniIcon.png | Bin 319 -> 0 bytes .../Editor/Imgs/DOTweenMiniIcon.png.meta | 147 - .../Thirdly/DOTween/Editor/Imgs/Footer.png | Bin 4409 -> 0 bytes .../DOTween/Editor/Imgs/Footer.png.meta | 147 - .../DOTween/Editor/Imgs/Footer_dark.png | Bin 4429 -> 0 bytes .../DOTween/Editor/Imgs/Footer_dark.png.meta | 147 - .../Thirdly/DOTween/Editor/Imgs/Header.jpg | Bin 22787 -> 0 bytes .../DOTween/Editor/Imgs/Header.jpg.meta | 147 - Assets/TEngine/Thirdly/DOTween/Modules.meta | 8 - .../DOTween/Modules/DOTweenModuleAudio.cs | 202 -- .../Modules/DOTweenModuleAudio.cs.meta | 11 - .../Modules/DOTweenModuleEPOOutline.cs | 146 - .../Modules/DOTweenModuleEPOOutline.cs.meta | 11 - .../DOTween/Modules/DOTweenModulePhysics.cs | 216 -- .../Modules/DOTweenModulePhysics.cs.meta | 11 - .../DOTween/Modules/DOTweenModulePhysics2D.cs | 193 -- .../Modules/DOTweenModulePhysics2D.cs.meta | 11 - .../DOTween/Modules/DOTweenModuleSprite.cs | 93 - .../Modules/DOTweenModuleSprite.cs.meta | 11 - .../DOTween/Modules/DOTweenModuleUI.cs | 662 ---- .../DOTween/Modules/DOTweenModuleUI.cs.meta | 11 - .../Modules/DOTweenModuleUnityVersion.cs | 403 --- .../Modules/DOTweenModuleUnityVersion.cs.meta | 11 - .../DOTween/Modules/DOTweenModuleUtils.cs | 167 - .../Modules/DOTweenModuleUtils.cs.meta | 11 - Assets/TEngine/Thirdly/DOTween/readme.txt | 29 - .../TEngine/Thirdly/DOTween/readme.txt.meta | 7 - 43 files changed, 6284 deletions(-) delete mode 100644 Assets/Resources.meta delete mode 100644 Assets/Resources/DOTweenSettings.asset delete mode 100644 Assets/Resources/DOTweenSettings.asset.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/DOTween.XML delete mode 100644 Assets/TEngine/Thirdly/DOTween/DOTween.XML.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/DOTween.dll delete mode 100644 Assets/TEngine/Thirdly/DOTween/DOTween.dll.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/Editor.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/Editor/DOTweenEditor.XML delete mode 100644 Assets/TEngine/Thirdly/DOTween/Editor/DOTweenEditor.XML.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/Editor/DOTweenEditor.dll delete mode 100644 Assets/TEngine/Thirdly/DOTween/Editor/DOTweenEditor.dll.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/Editor/Imgs.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/Editor/Imgs/DOTweenIcon.png delete mode 100644 Assets/TEngine/Thirdly/DOTween/Editor/Imgs/DOTweenIcon.png.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/Editor/Imgs/DOTweenMiniIcon.png delete mode 100644 Assets/TEngine/Thirdly/DOTween/Editor/Imgs/DOTweenMiniIcon.png.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Footer.png delete mode 100644 Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Footer.png.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Footer_dark.png delete mode 100644 Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Footer_dark.png.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Header.jpg delete mode 100644 Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Header.jpg.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/Modules.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleAudio.cs delete mode 100644 Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleAudio.cs.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleEPOOutline.cs delete mode 100644 Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleEPOOutline.cs.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModulePhysics.cs delete mode 100644 Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModulePhysics.cs.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModulePhysics2D.cs delete mode 100644 Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModulePhysics2D.cs.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleSprite.cs delete mode 100644 Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleSprite.cs.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUI.cs delete mode 100644 Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUI.cs.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUnityVersion.cs delete mode 100644 Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUtils.cs delete mode 100644 Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUtils.cs.meta delete mode 100644 Assets/TEngine/Thirdly/DOTween/readme.txt delete mode 100644 Assets/TEngine/Thirdly/DOTween/readme.txt.meta diff --git a/Assets/Resources.meta b/Assets/Resources.meta deleted file mode 100644 index 9e5fd0c7..00000000 --- a/Assets/Resources.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 6710d84d342d91548b5d3c198ee0e14f -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Resources/DOTweenSettings.asset b/Assets/Resources/DOTweenSettings.asset deleted file mode 100644 index 6746baec..00000000 --- a/Assets/Resources/DOTweenSettings.asset +++ /dev/null @@ -1,54 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 16995157, guid: 061f5aaffb4b88347b3032b56e57a36e, type: 3} - m_Name: DOTweenSettings - m_EditorClassIdentifier: - useSafeMode: 1 - safeModeOptions: - logBehaviour: 2 - nestedTweenFailureBehaviour: 0 - timeScale: 1 - unscaledTimeScale: 1 - useSmoothDeltaTime: 0 - maxSmoothUnscaledTime: 0.15 - rewindCallbackMode: 0 - showUnityEditorReport: 0 - logBehaviour: 0 - drawGizmos: 1 - defaultRecyclable: 0 - defaultAutoPlay: 3 - defaultUpdateType: 0 - defaultTimeScaleIndependent: 0 - defaultEaseType: 6 - defaultEaseOvershootOrAmplitude: 1.70158 - defaultEasePeriod: 0 - defaultAutoKill: 1 - defaultLoopType: 0 - debugMode: 0 - debugStoreTargetId: 1 - showPreviewPanel: 1 - storeSettingsLocation: 0 - modules: - showPanel: 0 - audioEnabled: 1 - physicsEnabled: 1 - physics2DEnabled: 1 - spriteEnabled: 1 - uiEnabled: 1 - textMeshProEnabled: 0 - tk2DEnabled: 0 - deAudioEnabled: 0 - deUnityExtendedEnabled: 0 - epoOutlineEnabled: 0 - createASMDEF: 0 - showPlayingTweens: 0 - showPausedTweens: 0 diff --git a/Assets/Resources/DOTweenSettings.asset.meta b/Assets/Resources/DOTweenSettings.asset.meta deleted file mode 100644 index cae281c1..00000000 --- a/Assets/Resources/DOTweenSettings.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 6a6867b1b447d824398a5a40ef990f60 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween.meta b/Assets/TEngine/Thirdly/DOTween.meta deleted file mode 100644 index 19362ecf..00000000 --- a/Assets/TEngine/Thirdly/DOTween.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7bdec3a3dec742c4295d5ff507e32677 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/DOTween.XML b/Assets/TEngine/Thirdly/DOTween/DOTween.XML deleted file mode 100644 index 522a3164..00000000 --- a/Assets/TEngine/Thirdly/DOTween/DOTween.XML +++ /dev/null @@ -1,3051 +0,0 @@ - - - - DOTween - - - - - Types of autoPlay behaviours - - - - No tween is automatically played - - - Only Sequences are automatically played - - - Only Tweeners are automatically played - - - All tweens are automatically played - - - - What axis to constrain in case of Vector tweens - - - - Called the first time the tween is set in a playing state, after any eventual delay - - - - Used in place of System.Func, which is not available in mscorlib. - - - - - Used in place of System.Action. - - - - - Public so it can be used by lose scripts related to DOTween (like DOTweenAnimation) - - - - - Used to separate DOTween class from the MonoBehaviour instance (in order to use static constructors on DOTween). - Contains all instance-based methods - - - - Used internally inside Unity Editor, as a trick to update DOTween's inspector at every frame - - - - Directly sets the current max capacity of Tweeners and Sequences - (meaning how many Tweeners and Sequences can be running at the same time), - so that DOTween doesn't need to automatically increase them in case the max is reached - (which might lead to hiccups when that happens). - Sequences capacity must be less or equal to Tweeners capacity - (if you pass a low Tweener capacity it will be automatically increased to match the Sequence's). - Beware: use this method only when there are no tweens running. - - Max Tweeners capacity. - Default: 200 - Max Sequences capacity. - Default: 50 - - - - This class contains a C# port of the easing equations created by Robert Penner (http://robertpenner.com/easing). - - - - - Easing equation function for a bounce (exponentially decaying parabolic bounce) easing in: accelerating from zero velocity. - - - Current time (in frames or seconds). - - - Expected easing duration (in frames or seconds). - - Unused: here to keep same delegate for all ease types. - Unused: here to keep same delegate for all ease types. - - The eased value. - - - - - Easing equation function for a bounce (exponentially decaying parabolic bounce) easing out: decelerating from zero velocity. - - - Current time (in frames or seconds). - - - Expected easing duration (in frames or seconds). - - Unused: here to keep same delegate for all ease types. - Unused: here to keep same delegate for all ease types. - - The eased value. - - - - - Easing equation function for a bounce (exponentially decaying parabolic bounce) easing in/out: acceleration until halfway, then deceleration. - - - Current time (in frames or seconds). - - - Expected easing duration (in frames or seconds). - - Unused: here to keep same delegate for all ease types. - Unused: here to keep same delegate for all ease types. - - The eased value. - - - - - Returns a value between 0 and 1 (inclusive) based on the elapsed time and ease selected - - - - - Returns a value between 0 and 1 (inclusive) based on the elapsed time and ease selected - - - - - Used to interpret AnimationCurves as eases. - Public so it can be used by external ease factories - - - - - Behaviour in case a tween nested inside a Sequence fails and is captured by safe mode - - - - If the Sequence contains other elements, kill the failed tween but preserve the rest - - - Kill the whole Sequence - - - - Log types thrown by errors captured and prevented by safe mode - - - - No logs. NOT RECOMMENDED - - - Throw a normal log - - - Throw a warning log (default) - - - Throw an error log - - - - Additional notices passed to plugins when updating. - Public so it can be used by custom plugins. Internally, only PathPlugin uses it - - - - - None - - - - - Lets the plugin know that we restarted or rewinded - - - - - OnRewind callback behaviour (can only be set via DOTween's Utility Panel) - - - - - When calling Rewind or PlayBackwards/SmoothRewind, OnRewind callbacks will be fired only if the tween isn't already rewinded - - - - - When calling Rewind, OnRewind callbacks will always be fired, even if the tween is already rewinded. - When calling PlayBackwards/SmoothRewind instead, OnRewind callbacks will be fired only if the tween isn't already rewinded - - - - - When calling Rewind or PlayBackwards/SmoothRewind, OnRewind callbacks will always be fired, even if the tween is already rewinded - - - - - Public only so custom shortcuts can access some of these methods - - - - - INTERNAL: used by DO shortcuts and Modules to set special startup mode - - - - - INTERNAL: used by DO shortcuts and Modules to set the tween as blendable - - - - - INTERNAL: used by DO shortcuts and Modules to prevent a tween from using a From setup even if passed - - - - - Used to dispatch commands that need to be captured externally, usually by Modules - - - - - Returns a Vector3 with z = 0 - - - - - Returns the 2D angle between two vectors - - - - - Returns a point on a circle with the given center and radius, - using Unity's circle coordinates (0° points up and increases clockwise) - - - - - Uses approximate equality on each axis instead of Unity's Vector3 equality, - because the latter fails (in some cases) when assigning a Vector3 to a transform.position and then checking it. - - - - - Looks for the type within all possible project assembly names - - - - NO-GC METHOD: changes the start value of a tween and rewinds it (without pausing it). - Has no effect with tweens that are inside Sequences - The new start value - If bigger than 0 applies it as the new tween duration - - - NO-GC METHOD: changes the end value of a tween and rewinds it (without pausing it). - Has no effect with tweens that are inside Sequences - The new end value - If TRUE the start value will become the current target's value, otherwise it will stay the same - - - NO-GC METHOD: changes the end value of a tween and rewinds it (without pausing it). - Has no effect with tweens that are inside Sequences - The new end value - If bigger than 0 applies it as the new tween duration - If TRUE the start value will become the current target's value, otherwise it will stay the same - - - NO-GC METHOD: changes the start and end value of a tween and rewinds it (without pausing it). - Has no effect with tweens that are inside Sequences - The new start value - The new end value - If bigger than 0 applies it as the new tween duration - - - - Struct that stores two colors (used for LineRenderer tweens) - - - - - Used for tween callbacks - - - - - Used for tween callbacks - - - - - Used for custom and animationCurve-based ease functions. Must return a value between 0 and 1. - - - - - Straight Quaternion plugin. Instead of using Vector3 values accepts Quaternion values directly. - Beware: doesn't work with LoopType.Incremental (neither directly nor if inside a LoopType.Incremental Sequence). - To use it, call DOTween.To with the plugin parameter overload, passing it PureQuaternionPlugin.Plug() as first parameter - (do not use any of the other public PureQuaternionPlugin methods): - DOTween.To(PureQuaternionPlugin.Plug(), ()=> myQuaternionProperty, x=> myQuaternionProperty = x, myQuaternionEndValue, duration); - - - - - Plug this plugin inside a DOTween.To call. - Example: - DOTween.To(PureQuaternionPlugin.Plug(), ()=> myQuaternionProperty, x=> myQuaternionProperty = x, myQuaternionEndValue, duration); - - - - INTERNAL: do not use - - - INTERNAL: do not use - - - INTERNAL: do not use - - - INTERNAL: do not use - - - INTERNAL: do not use - - - INTERNAL: do not use - - - INTERNAL: do not use - - - INTERNAL: do not use - - - - Extra non-tweening-related curve methods - - - - - Cubic bezier curve methods - - - - - Calculates a point along the given Cubic Bezier segment-curve. - - Segment start point - Start point's control point/handle - Segment end point - End point's control point/handle - 0-1 percentage along which to retrieve point - - - - Returns an array containing a series of points along the given Cubic Bezier segment-curve. - - Start point - Start point's control point/handle - End point - End point's control point/handle - Cloud resolution (min: 2) - - - - Calculates a series of points along the given Cubic Bezier segment-curve and adds them to the given list. - - Start point - Start point's control point/handle - End point - End point's control point/handle - Cloud resolution (min: 2) - - - - Main DOTween class. Contains static methods to create and control tweens in a generic way - - - - DOTween's version - - - If TRUE (default) makes tweens slightly slower but safer, automatically taking care of a series of things - (like targets becoming null while a tween is playing). - Default: TRUE - - - Log type when safe mode reports capturing an error and preventing it - - - Behaviour in case a tween nested inside a Sequence fails (and is caught by safe mode). - Default: NestedTweenFailureBehaviour.TryToPreserveSequence - - - If TRUE you will get a DOTween report when exiting play mode (only in the Editor). - Useful to know how many max Tweeners and Sequences you reached and optimize your final project accordingly. - Beware, this will slightly slow down your tweens while inside Unity Editor. - Default: FALSE - - - Global DOTween global timeScale (default: 1). - The final timeScale of a non-timeScaleIndependent tween is: - Unity's Time.timeScale * DOTween.timeScale * tween.timeScale - while the final timeScale of a timeScaleIndependent tween is: - DOTween.unscaledTimeScale * DOTween.timeScale * tween.timeScale - - - DOTween timeScale applied only to timeScaleIndependent tweens (default: 1). - The final timeScale of a timeScaleIndependent tween is: - DOTween.unscaledTimeScale * DOTween.timeScale * tween.timeScale - - - If TRUE, DOTween will use Time.smoothDeltaTime instead of Time.deltaTime for UpdateType.Normal and UpdateType.Late tweens - (unless they're set as timeScaleIndependent, in which case a value between the last timestep - and will be used instead). - Setting this to TRUE will lead to smoother animations. - Default: FALSE - - - If is TRUE, this indicates the max timeStep that an independent update call can last. - Setting this to TRUE will lead to smoother animations. - Default: FALSE - - - DOTween's log behaviour. - Default: LogBehaviour.ErrorsOnly - - - Used to intercept DOTween's logs. If this method isn't NULL, DOTween will call it before writing a log via Unity's own Debug log methods. - Return TRUE if you want DOTween to proceed with the log, FALSE otherwise. - This method must return a bool and accept two parameters: - - LogType: the type of Unity log that DOTween is trying to log - - object: the log message that DOTween wants to log - - - If TRUE draws path gizmos in Unity Editor (if the gizmos button is active). - Deactivate this if you want to avoid gizmos overhead while in Unity Editor - - - If TRUE activates various debug options - - - Stores the target id so it can be used to give more info in case of safeMode error capturing. - Only active if both debugMode and useSafeMode are TRUE - - - Default updateType for new tweens. - Default: UpdateType.Normal - - - Sets whether Unity's timeScale should be taken into account by default or not. - Default: false - - - Default autoPlay behaviour for new tweens. - Default: AutoPlay.All - - - Default autoKillOnComplete behaviour for new tweens. - Default: TRUE - - - Default loopType applied to all new tweens. - Default: LoopType.Restart - - - If TRUE all newly created tweens are set as recyclable, otherwise not. - Default: FALSE - - - Default ease applied to all new Tweeners (not to Sequences which always have Ease.Linear as default). - Default: Ease.InOutQuad - - - Default overshoot/amplitude used for eases - Default: 1.70158f - - - Default period used for eases - Default: 0 - - - Used internally. Assigned/removed by DOTweenComponent.Create/DestroyInstance - - - - Must be called once, before the first ever DOTween call/reference, - otherwise it will be called automatically and will use default options. - Calling it a second time won't have any effect. - You can chain SetCapacity to this method, to directly set the max starting size of Tweeners and Sequences: - DOTween.Init(false, false, LogBehaviour.Default).SetCapacity(100, 20); - - If TRUE all new tweens will be set for recycling, meaning that when killed, - instead of being destroyed, they will be put in a pool and reused instead of creating new tweens. This option allows you to avoid - GC allocations by reusing tweens, but you will have to take care of tween references, since they might result active - even if they were killed (since they might have been respawned and are now being used for other tweens). - If you want to automatically set your tween references to NULL when a tween is killed - you can use the OnKill callback like this: - .OnKill(()=> myTweenReference = null) - You can change this setting at any time by changing the static property, - or you can set the recycling behaviour for each tween separately, using: - SetRecyclable(bool recyclable) - Default: FALSE - If TRUE makes tweens slightly slower but safer, automatically taking care of a series of things - (like targets becoming null while a tween is playing). - You can change this setting at any time by changing the static property. - Default: FALSE - Type of logging to use. - You can change this setting at any time by changing the static property. - Default: ErrorsOnly - - - - Directly sets the current max capacity of Tweeners and Sequences - (meaning how many Tweeners and Sequences can be running at the same time), - so that DOTween doesn't need to automatically increase them in case the max is reached - (which might lead to hiccups when that happens). - Sequences capacity must be less or equal to Tweeners capacity - (if you pass a low Tweener capacity it will be automatically increased to match the Sequence's). - Beware: use this method only when there are no tweens running. - - Max Tweeners capacity. - Default: 200 - Max Sequences capacity. - Default: 50 - - - - Kills all tweens, clears all cached tween pools and plugins and resets the max Tweeners/Sequences capacities to the default values. - - If TRUE also destroys DOTween's gameObject and resets its initializiation, default settings and everything else - (so that next time you use it it will need to be re-initialized) - - - - Clears all cached tween pools. - - - - - Checks all active tweens to find and remove eventually invalid ones (usually because their targets became NULL) - and returns the total number of invalid tweens found and removed. - IMPORTANT: this will cause an error on UWP platform, so don't use it there - BEWARE: this is a slightly expensive operation so use it with care - - - - - Updates all tweens that are set to . - - Manual deltaTime - Unscaled delta time (used with tweens set as timeScaleIndependent) - - - Tweens a property or field to the given value using default plugins - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The end value to reachThe tween's duration - - - Tweens a property or field to the given value using default plugins - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The end value to reachThe tween's duration - - - Tweens a property or field to the given value using default plugins - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The end value to reachThe tween's duration - - - Tweens a property or field to the given value using default plugins - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The end value to reachThe tween's duration - - - Tweens a property or field to the given value using default plugins - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The end value to reachThe tween's duration - - - Tweens a property or field to the given value using default plugins - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The end value to reachThe tween's duration - - - Tweens a property or field to the given value using default plugins - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The end value to reachThe tween's duration - - - Tweens a property or field to the given value using default plugins - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The end value to reachThe tween's duration - - - Tweens a property or field to the given value using default plugins - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The end value to reachThe tween's duration - - - Tweens a property or field to the given value using default plugins - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The end value to reachThe tween's duration - - - Tweens a property or field to the given value using default plugins - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The end value to reachThe tween's duration - - - Tweens a property or field to the given value using default plugins - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The end value to reachThe tween's duration - - - Tweens a property or field to the given value using default plugins - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The end value to reachThe tween's duration - - - Tweens a property or field to the given value using default plugins - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The end value to reachThe tween's duration - - - Tweens a property or field to the given value using a custom plugin - The plugin to use. Each custom plugin implements a static Get() method - you'll need to call to assign the correct plugin in the correct way, like this: - CustomPlugin.Get() - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The end value to reachThe tween's duration - - - Tweens only one axis of a Vector3 to the given value using default plugins. - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The end value to reachThe tween's duration - The axis to tween - - - Tweens only the alpha of a Color to the given value using default plugins - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The end value to reachThe tween's duration - - - Tweens a virtual property from the given start to the given end value - and implements a setter that allows to use that value with an external method or a lambda - Example: - To(MyMethod, 0, 12, 0.5f); - Where MyMethod is a function that accepts a float parameter (which will be the result of the virtual tween) - The action to perform with the tweened value - The value to start from - The end value to reach - The duration of the virtual tween - - - - Punches a Vector3 towards the given direction and then back to the starting one - as if it was connected to the starting position via an elastic. - This tween type generates some GC allocations at startup - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The direction and strength of the punch - The duration of the tween - Indicates how much will the punch vibrate - Represents how much (0 to 1) the vector will go beyond the starting position when bouncing backwards. - 1 creates a full oscillation between the direction and the opposite decaying direction, - while 0 oscillates only between the starting position and the decaying direction - - - Shakes a Vector3 with the given values. - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The duration of the tween - The shake strength - Indicates how much will the shake vibrate - Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). - Setting it to 0 will shake along a single direction and behave like a random punch. - If TRUE only shakes on the X Y axis (looks better with things like cameras). - If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not - Randomness mode - - - Shakes a Vector3 with the given values. - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The duration of the tween - The shake strength on each axis - Indicates how much will the shake vibrate - Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). - Setting it to 0 will shake along a single direction and behave like a random punch. - If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not - Randomness mode - - - Tweens a property or field to the given values using default plugins. - Ease is applied between each segment and not as a whole. - This tween type generates some GC allocations at startup - A getter for the field or property to tween. - Example usage with lambda:()=> myProperty - A setter for the field or property to tween - Example usage with lambda:x=> myProperty = x - The end values to reach for each segment. This array must have the same length as durations - The duration of each segment. This array must have the same length as endValues - - - - Returns a new to be used for tween groups. - Mind that Sequences don't have a target applied automatically like Tweener creation shortcuts, - so if you want to be able to kill this Sequence when calling DOTween.Kill(target) you'll have to add - the target manually; you can do that directly by using the overload instead of this one - - - - - Returns a new to be used for tween groups, and allows to set a target - (because Sequences don't have their target set automatically like Tweener creation shortcuts). - That way killing/controlling tweens by target will apply to this Sequence too. - - The target of the Sequence. Relevant only for static target-based methods like DOTween.Kill(target), - useless otherwise - - - Completes all tweens and returns the number of actual tweens completed - (meaning tweens that don't have infinite loops and were not already complete) - For Sequences only: if TRUE also internal Sequence callbacks will be fired, - otherwise they will be ignored - - - Completes all tweens with the given ID or target and returns the number of actual tweens completed - (meaning the tweens that don't have infinite loops and were not already complete) - For Sequences only: if TRUE internal Sequence callbacks will be fired, - otherwise they will be ignored - - - Flips all tweens (changing their direction to forward if it was backwards and viceversa), - then returns the number of actual tweens flipped - - - Flips the tweens with the given ID or target (changing their direction to forward if it was backwards and viceversa), - then returns the number of actual tweens flipped - - - Sends all tweens to the given position (calculating also eventual loop cycles) and returns the actual tweens involved - - - Sends all tweens with the given ID or target to the given position (calculating also eventual loop cycles) - and returns the actual tweens involved - - - Kills all tweens and returns the number of actual tweens killed - If TRUE completes the tweens before killing them - - - Kills all tweens and returns the number of actual tweens killed - If TRUE completes the tweens before killing them - Eventual IDs or targets to exclude from the killing - - - Kills all tweens with the given ID or target and returns the number of actual tweens killed - If TRUE completes the tweens before killing them - - - Kills all tweens with the given target and the given ID, and returns the number of actual tweens killed - If TRUE completes the tweens before killing them - - - Pauses all tweens and returns the number of actual tweens paused - - - Pauses all tweens with the given ID or target and returns the number of actual tweens paused - (meaning the tweens that were actually playing and have been paused) - - - Plays all tweens and returns the number of actual tweens played - (meaning tweens that were not already playing or complete) - - - Plays all tweens with the given ID or target and returns the number of actual tweens played - (meaning the tweens that were not already playing or complete) - - - Plays all tweens with the given target and the given ID, and returns the number of actual tweens played - (meaning the tweens that were not already playing or complete) - - - Plays backwards all tweens and returns the number of actual tweens played - (meaning tweens that were not already started, playing backwards or rewinded) - - - Plays backwards all tweens with the given ID or target and returns the number of actual tweens played - (meaning the tweens that were not already started, playing backwards or rewinded) - - - Plays backwards all tweens with the given target and ID and returns the number of actual tweens played - (meaning the tweens that were not already started, playing backwards or rewinded) - - - Plays forward all tweens and returns the number of actual tweens played - (meaning tweens that were not already playing forward or complete) - - - Plays forward all tweens with the given ID or target and returns the number of actual tweens played - (meaning the tweens that were not already playing forward or complete) - - - Plays forward all tweens with the given target and ID and returns the number of actual tweens played - (meaning the tweens that were not already started, playing backwards or rewinded) - - - Restarts all tweens, then returns the number of actual tweens restarted - - - Restarts all tweens with the given ID or target, then returns the number of actual tweens restarted - If TRUE includes the eventual tweens delays, otherwise skips them - If >= 0 changes the startup delay of all involved tweens to this value, otherwise doesn't touch it - - - Restarts all tweens with the given target and the given ID, and returns the number of actual tweens played - (meaning the tweens that were not already playing or complete) - If TRUE includes the eventual tweens delays, otherwise skips them - If >= 0 changes the startup delay of all involved tweens to this value, otherwise doesn't touch it - - - Rewinds and pauses all tweens, then returns the number of actual tweens rewinded - (meaning tweens that were not already rewinded) - - - Rewinds and pauses all tweens with the given ID or target, then returns the number of actual tweens rewinded - (meaning the tweens that were not already rewinded) - - - Smoothly rewinds all tweens (delays excluded), then returns the number of actual tweens rewinding/rewinded - (meaning tweens that were not already rewinded). - A "smooth rewind" animates the tween to its start position, - skipping all elapsed loops (except in case of LoopType.Incremental) while keeping the animation fluent. - Note that a tween that was smoothly rewinded will have its play direction flipped - - - Smoothly rewinds all tweens (delays excluded) with the given ID or target, then returns the number of actual tweens rewinding/rewinded - (meaning the tweens that were not already rewinded). - A "smooth rewind" animates the tween to its start position, - skipping all elapsed loops (except in case of LoopType.Incremental) while keeping the animation fluent. - Note that a tween that was smoothly rewinded will have its play direction flipped - - - Toggles the play state of all tweens and returns the number of actual tweens toggled - (meaning tweens that could be played or paused, depending on the toggle state) - - - Toggles the play state of all tweens with the given ID or target and returns the number of actual tweens toggled - (meaning the tweens that could be played or paused, depending on the toggle state) - - - - Returns TRUE if a tween with the given ID or target is active. - You can also use this to know if a shortcut tween is active for a given target. - Example: - transform.DOMoveX(45, 1); // transform is automatically added as the tween target - DOTween.IsTweening(transform); // Returns true - - The target or ID to look for - If FALSE (default) returns TRUE as long as a tween for the given target/ID is active, - otherwise also requires it to be playing - - - - Returns the total number of active tweens (so both Tweeners and Sequences). - A tween is considered active if it wasn't killed, regardless if it's playing or paused - - - - - Returns the total number of active Tweeners. - A Tweener is considered active if it wasn't killed, regardless if it's playing or paused - - - - - Returns the total number of active Sequences. - A Sequence is considered active if it wasn't killed, regardless if it's playing or paused - - - - - Returns the total number of active and playing tweens. - A tween is considered as playing even if its delay is actually playing - - - - - Returns a the total number of active tweens with the given id. - - If TRUE returns only the tweens with the given ID that are currently playing - - - - Returns a list of all active tweens in a playing state. - Returns NULL if there are no active playing tweens. - Beware: each time you call this method a new list is generated, so use it for debug only - - If NULL creates a new list, otherwise clears and fills this one (and thus saves allocations) - - - - Returns a list of all active tweens in a paused state. - Returns NULL if there are no active paused tweens. - Beware: each time you call this method a new list is generated, so use it for debug only - - If NULL creates a new list, otherwise clears and fills this one (and thus saves allocations) - - - - Returns a list of all active tweens with the given id. - Returns NULL if there are no active tweens with the given id. - Beware: each time you call this method a new list is generated - - If TRUE returns only the tweens with the given ID that are currently playing - If NULL creates a new list, otherwise clears and fills this one (and thus saves allocations) - - - - Returns a list of all active tweens with the given target. - Returns NULL if there are no active tweens with the given target. - Beware: each time you call this method a new list is generated - If TRUE returns only the tweens with the given target that are currently playing - If NULL creates a new list, otherwise clears and fills this one (and thus saves allocations) - - - - - Creates virtual tweens that can be used to change other elements via their OnUpdate calls - - - - - Tweens a virtual float. - You can add regular settings to the generated tween, - but do not use SetUpdate or you will overwrite the onVirtualUpdate parameter - - The value to start from - The value to tween to - The duration of the tween - A callback which must accept a parameter of type float, called at each update - - - - Tweens a virtual int. - You can add regular settings to the generated tween, - but do not use SetUpdate or you will overwrite the onVirtualUpdate parameter - - The value to start from - The value to tween to - The duration of the tween - A callback which must accept a parameter of type int, called at each update - - - - Tweens a virtual Vector3. - You can add regular settings to the generated tween, - but do not use SetUpdate or you will overwrite the onVirtualUpdate parameter - - The value to start from - The value to tween to - The duration of the tween - A callback which must accept a parameter of type Vector3, called at each update - - - - Tweens a virtual Color. - You can add regular settings to the generated tween, - but do not use SetUpdate or you will overwrite the onVirtualUpdate parameter - - The value to start from - The value to tween to - The duration of the tween - A callback which must accept a parameter of type Color, called at each update - - - Returns a value based on the given ease and lifetime percentage (0 to 1) - The value to start from when lifetimePercentage is 0 - The value to reach when lifetimePercentage is 1 - The time percentage (0 to 1) at which the value should be taken - The type of ease - - - Returns a value based on the given ease and lifetime percentage (0 to 1) - The value to start from when lifetimePercentage is 0 - The value to reach when lifetimePercentage is 1 - The time percentage (0 to 1) at which the value should be taken - The type of ease - Eventual overshoot to use with Back ease - - - Returns a value based on the given ease and lifetime percentage (0 to 1) - The value to start from when lifetimePercentage is 0 - The value to reach when lifetimePercentage is 1 - The time percentage (0 to 1) at which the value should be taken - The type of ease - Eventual amplitude to use with Elastic easeType - Eventual period to use with Elastic easeType - - - Returns a value based on the given ease and lifetime percentage (0 to 1) - The value to start from when lifetimePercentage is 0 - The value to reach when lifetimePercentage is 1 - The time percentage (0 to 1) at which the value should be taken - The AnimationCurve to use for ease - - - Returns a value based on the given ease and lifetime percentage (0 to 1) - The value to start from when lifetimePercentage is 0 - The value to reach when lifetimePercentage is 1 - The time percentage (0 to 1) at which the value should be taken - The type of ease - - - Returns a value based on the given ease and lifetime percentage (0 to 1) - The value to start from when lifetimePercentage is 0 - The value to reach when lifetimePercentage is 1 - The time percentage (0 to 1) at which the value should be taken - The type of ease - Eventual overshoot to use with Back ease - - - Returns a value based on the given ease and lifetime percentage (0 to 1) - The value to start from when lifetimePercentage is 0 - The value to reach when lifetimePercentage is 1 - The time percentage (0 to 1) at which the value should be taken - The type of ease - Eventual amplitude to use with Elastic easeType - Eventual period to use with Elastic easeType - - - Returns a value based on the given ease and lifetime percentage (0 to 1) - The value to start from when lifetimePercentage is 0 - The value to reach when lifetimePercentage is 1 - The time percentage (0 to 1) at which the value should be taken - The AnimationCurve to use for ease - - - Fires the given callback after the given time. - Callback delay - Callback to fire when the delay has expired - If TRUE (default) ignores Unity's timeScale - - - - Don't assign this! It's assigned automatically when creating 0 duration tweens - - - - - Don't assign this! It's assigned automatically when setting the ease to an AnimationCurve or to a custom ease function - - - - - Allows to wrap ease method in special ways, adding extra features - - - - - Converts the given ease so that it also creates a stop-motion effect, by playing the tween at the given FPS - - FPS at which the tween should be played - Ease type - - - - Converts the given ease so that it also creates a stop-motion effect, by playing the tween at the given FPS - - FPS at which the tween should be played - AnimationCurve to use for the ease - - - - Converts the given ease so that it also creates a stop-motion effect, by playing the tween at the given FPS - - FPS at which the tween should be played - Custom ease function to use - - - - Used to allow method chaining with DOTween.Init - - - - - Directly sets the current max capacity of Tweeners and Sequences - (meaning how many Tweeners and Sequences can be running at the same time), - so that DOTween doesn't need to automatically increase them in case the max is reached - (which might lead to hiccups when that happens). - Sequences capacity must be less or equal to Tweeners capacity - (if you pass a low Tweener capacity it will be automatically increased to match the Sequence's). - Beware: use this method only when there are no tweens running. - - Max Tweeners capacity. - Default: 200 - Max Sequences capacity. - Default: 50 - - - - Behaviour that can be assigned when chaining a SetLink to a tween - - - - Pauses the tween when the link target is disabled - - - Pauses the tween when the link target is disabled, plays it when it's enabled - - - Pauses the tween when the link target is disabled, restarts it when it's enabled - - - Plays the tween when the link target is enabled - - - Restarts the tween when the link target is enabled - - - Kills the tween when the link target is disabled - - - Kills the tween when the link target is destroyed (becomes NULL). This is always active even if another behaviour is chosen - - - Completes the tween when the link target is disabled - - - Completes and kills the tween when the link target is disabled - - - Rewinds the tween (delay excluded) when the link target is disabled - - - Rewinds and kills the tween when the link target is disabled - - - - Path mode (used to determine correct LookAt orientation) - - - - Ignores the path mode (and thus LookAt behaviour) - - - Regular 3D path - - - 2D top-down path - - - 2D side-scroller path - - - - Type of path to use with DOPath tweens - - - - Linear, composed of straight segments between each waypoint - - - Curved path (which uses Catmull-Rom curves) - - - EXPERIMENTAL: Curved path (which uses Cubic Bezier curves, where each point requires two extra control points) - - - - Tweens a Vector2 along a circle. - EndValue represents the center of the circle, start and end value degrees are inside options - ChangeValue x is changeValue°, y is unused - - - - - Path control point - - - - - Path waypoints (modified by PathPlugin when setting relative end/change value or by CubicBezierDecoder) and by DOTweenPathInspector - - - - - Minimum input points necessary to create the path (doesn't correspond to actual waypoints required) - - - - - Gets the point on the path at the given percentage (0 to 1) - - The percentage (0 to 1) at which to get the point - If TRUE constant speed is taken into account, otherwise not - - - - Base interface for all tween plugins options - - - - Resets the plugin - - - - This plugin generates some GC allocations at startup - - - - - Path plugin works exclusively with Transforms - - - - - Rotation mode used with DORotate methods - - - - - Fastest way that never rotates beyond 360° - - - - - Fastest way that rotates beyond 360° - - - - - Adds the given rotation to the transform using world axis and an advanced precision mode - (like when using transform.Rotate(Space.World)). - In this mode the end value is is always considered relative - - - - - Adds the given rotation to the transform's local axis - (like when rotating an object with the "local" switch enabled in Unity's editor or using transform.Rotate(Space.Self)). - In this mode the end value is is always considered relative - - - - - Type of scramble to apply to string tweens - - - - - No scrambling of characters - - - - - A-Z + a-z + 0-9 characters - - - - - A-Z characters - - - - - a-z characters - - - - - 0-9 characters - - - - - Custom characters - - - - - Type of randomness to apply to a shake tween - - - - Default, full randomness - - - Creates a more balanced randomness that looks more harmonic - - - - Methods that extend Tween objects and allow to control or get data from them - - - - Completes the tween - - - Completes the tween - For Sequences only: if TRUE also internal Sequence callbacks will be fired, - otherwise they will be ignored - - - Flips the direction of this tween (backwards if it was going forward or viceversa) - - - Forces the tween to initialize its settings immediately - - - Send the tween to the given position in time - Time position to reach - (if higher than the whole tween duration the tween will simply reach its end) - If TRUE will play the tween after reaching the given position, otherwise it will pause it - - - Send the tween to the given position in time while also executing any callback between the previous time position and the new one - Time position to reach - (if higher than the whole tween duration the tween will simply reach its end) - If TRUE will play the tween after reaching the given position, otherwise it will pause it - - - Kills the tween - If TRUE completes the tween before killing it - - - - Forces this tween to update manually, regardless of the set via SetUpdate. - Note that the tween will still be subject to normal tween rules, so if for example it's paused this method will do nothing. - Also note that if you only want to update this tween instance manually you'll have to set it to anyway, - so that it's not updated automatically. - - Manual deltaTime - Unscaled delta time (used with tweens set as timeScaleIndependent) - - - Pauses the tween - - - Plays the tween - - - Sets the tween in a backwards direction and plays it - - - Sets the tween in a forward direction and plays it - - - Restarts the tween from the beginning - Ignored in case of Sequences. If TRUE includes the eventual tween delay, otherwise skips it - Ignored in case of Sequences. If >= 0 changes the startup delay to this value, otherwise doesn't touch it - - - Rewinds and pauses the tween - Ignored in case of Sequences. If TRUE includes the eventual tween delay, otherwise skips it - - - Smoothly rewinds the tween (delays excluded). - A "smooth rewind" animates the tween to its start position, - skipping all elapsed loops (except in case of LoopType.Incremental) while keeping the animation fluent. - If called on a tween who is still waiting for its delay to happen, it will simply set the delay to 0 and pause the tween. - Note that a tween that was smoothly rewinded will have its play direction flipped - - - Plays the tween if it was paused, pauses it if it was playing - - - Send a path tween to the given waypoint. - Has no effect if this is not a path tween. - BEWARE, this is a special utility method: - it works only with Linear eases. Also, the lookAt direction might be wrong after calling this and might need to be set manually - (because it relies on a smooth path movement and doesn't work well with jumps that encompass dramatic direction changes) - Waypoint index to reach - (if higher than the max waypoint index the tween will simply go to the last one) - If TRUE will play the tween after reaching the given waypoint, otherwise it will pause it - - - - Creates a yield instruction that waits until the tween is killed or complete. - It can be used inside a coroutine as a yield. - Example usage:yield return myTween.WaitForCompletion(); - - - - - Creates a yield instruction that waits until the tween is killed or rewinded. - It can be used inside a coroutine as a yield. - Example usage:yield return myTween.WaitForRewind(); - - - - - Creates a yield instruction that waits until the tween is killed. - It can be used inside a coroutine as a yield. - Example usage:yield return myTween.WaitForKill(); - - - - - Creates a yield instruction that waits until the tween is killed or has gone through the given amount of loops. - It can be used inside a coroutine as a yield. - Example usage:yield return myTween.WaitForElapsedLoops(2); - - Elapsed loops to wait for - - - - Creates a yield instruction that waits until the tween is killed or has reached the given position (loops included, delays excluded). - It can be used inside a coroutine as a yield. - Example usage:yield return myTween.WaitForPosition(2.5f); - - Position (loops included, delays excluded) to wait for - - - - Creates a yield instruction that waits until the tween is killed or started - (meaning when the tween is set in a playing state the first time, after any eventual delay). - It can be used inside a coroutine as a yield. - Example usage:yield return myTween.WaitForStart(); - - - - Returns the total number of loops completed by this tween - - - Returns the eventual delay set for this tween - - - Returns the eventual elapsed delay set for this tween - - - Returns the duration of this tween (delays excluded). - NOTE: when using settings like SpeedBased, the duration will be recalculated when the tween starts - If TRUE returns the full duration loops included, - otherwise the duration of a single loop cycle - - - Returns the elapsed time for this tween (delays exluded) - If TRUE returns the elapsed time since startup loops included, - otherwise the elapsed time within the current loop cycle - - - Returns the elapsed percentage (0 to 1) of this tween (delays exluded) - If TRUE returns the elapsed percentage since startup loops included, - otherwise the elapsed percentage within the current loop cycle - - - Returns the elapsed percentage (0 to 1) of this tween (delays exluded), - based on a single loop, and calculating eventual backwards Yoyo loops as 1 to 0 instead of 0 to 1 - - - Returns FALSE if this tween has been killed or is NULL, TRUE otherwise. - BEWARE: if this tween is recyclable it might have been spawned again for another use and thus return TRUE anyway. - When working with recyclable tweens you should take care to know when a tween has been killed and manually set your references to NULL. - If you want to be sure your references are set to NULL when a tween is killed you can use the OnKill callback like this: - .OnKill(()=> myTweenReference = null) - - - Returns TRUE if this tween was reversed and is set to go backwards - - - Returns TRUE if the tween is complete - (silently fails and returns FALSE if the tween has been killed) - - - Returns TRUE if this tween has been initialized - - - Returns TRUE if this tween is playing - - - Returns the total number of loops set for this tween - (returns -1 if the loops are infinite) - - - - Returns a point on a path based on the given path percentage. - Returns Vector3.zero if this is not a path tween, if the tween is invalid, or if the path is not yet initialized. - A path is initialized after its tween starts, or immediately if the tween was created with the Path Editor (DOTween Pro feature). - You can force a path to be initialized by calling myTween.ForceInit(). - - Percentage of the path (0 to 1) on which to get the point - - - - Returns an array of points that can be used to draw the path. - Note that this method generates allocations, because it creates a new array. - Returns NULL if this is not a path tween, if the tween is invalid, or if the path is not yet initialized. - A path is initialized after its tween starts, or immediately if the tween was created with the Path Editor (DOTween Pro feature). - You can force a path to be initialized by calling myTween.ForceInit(). - - How many points to create for each path segment (waypoint to waypoint). - Only used in case of non-Linear paths - - - - Returns the length of a path. - Returns -1 if this is not a path tween, if the tween is invalid, or if the path is not yet initialized. - A path is initialized after its tween starts, or immediately if the tween was created with the Path Editor (DOTween Pro feature). - You can force a path to be initialized by calling myTween.ForceInit(). - - - - - Types of loop - - - - Each loop cycle restarts from the beginning - - - The tween moves forward and backwards at alternate cycles - - - Continuously increments the tween at the end of each loop cycle (A to B, B to B+(A-B), and so on), thus always moving "onward". - In case of String tweens works only if the tween is set as relative - - - - Controls other tweens as a group - - - - - Methods that extend known Unity objects and allow to directly create and control tweens from their instances - - - - Tweens a Camera's aspect to the given value. - Also stores the camera as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - - - Tweens a Camera's backgroundColor to the given value. - Also stores the camera as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - - - Tweens a Camera's farClipPlane to the given value. - Also stores the camera as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - - - Tweens a Camera's fieldOfView to the given value. - Also stores the camera as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - - - Tweens a Camera's nearClipPlane to the given value. - Also stores the camera as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - - - Tweens a Camera's orthographicSize to the given value. - Also stores the camera as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - - - Tweens a Camera's pixelRect to the given value. - Also stores the camera as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - - - Tweens a Camera's rect to the given value. - Also stores the camera as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - - - Shakes a Camera's localPosition along its relative X Y axes with the given values. - Also stores the camera as the tween's target so it can be used for filtered operations - The duration of the tween - The shake strength - Indicates how much will the shake vibrate - Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). - Setting it to 0 will shake along a single direction. - If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not - Randomness mode - - - Shakes a Camera's localPosition along its relative X Y axes with the given values. - Also stores the camera as the tween's target so it can be used for filtered operations - The duration of the tween - The shake strength on each axis - Indicates how much will the shake vibrate - Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). - Setting it to 0 will shake along a single direction. - If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not - Randomness mode - - - Shakes a Camera's localRotation. - Also stores the camera as the tween's target so it can be used for filtered operations - The duration of the tween - The shake strength - Indicates how much will the shake vibrate - Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). - Setting it to 0 will shake along a single direction. - If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not - Randomness mode - - - Shakes a Camera's localRotation. - Also stores the camera as the tween's target so it can be used for filtered operations - The duration of the tween - The shake strength on each axis - Indicates how much will the shake vibrate - Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). - Setting it to 0 will shake along a single direction. - If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not - Randomness mode - - - Tweens a Light's color to the given value. - Also stores the light as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - - - Tweens a Light's intensity to the given value. - Also stores the light as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - - - Tweens a Light's shadowStrength to the given value. - Also stores the light as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - - - Tweens a LineRenderer's color to the given value. - Also stores the LineRenderer as the tween's target so it can be used for filtered operations. - Note that this method requires to also insert the start colors for the tween, - since LineRenderers have no way to get them. - The start value to tween from - The end value to reachThe duration of the tween - - - Tweens a Material's color to the given value. - Also stores the material as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - - - Tweens a Material's named color property to the given value. - Also stores the material as the tween's target so it can be used for filtered operations - The end value to reach - The name of the material property to tween (like _Tint or _SpecColor) - The duration of the tween - - - Tweens a Material's named color property with the given ID to the given value. - Also stores the material as the tween's target so it can be used for filtered operations - The end value to reach - The ID of the material property to tween (also called nameID in Unity's manual) - The duration of the tween - - - Tweens a Material's alpha color to the given value - (will have no effect unless your material supports transparency). - Also stores the material as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - - - Tweens a Material's alpha color to the given value - (will have no effect unless your material supports transparency). - Also stores the material as the tween's target so it can be used for filtered operations - The end value to reach - The name of the material property to tween (like _Tint or _SpecColor) - The duration of the tween - - - Tweens a Material's alpha color with the given ID to the given value - (will have no effect unless your material supports transparency). - Also stores the material as the tween's target so it can be used for filtered operations - The end value to reach - The ID of the material property to tween (also called nameID in Unity's manual) - The duration of the tween - - - Tweens a Material's named float property to the given value. - Also stores the material as the tween's target so it can be used for filtered operations - The end value to reach - The name of the material property to tween - The duration of the tween - - - Tweens a Material's named float property with the given ID to the given value. - Also stores the material as the tween's target so it can be used for filtered operations - The end value to reach - The ID of the material property to tween (also called nameID in Unity's manual) - The duration of the tween - - - Tweens a Material's texture offset to the given value. - Also stores the material as the tween's target so it can be used for filtered operations - The end value to reach - The duration of the tween - - - Tweens a Material's named texture offset property to the given value. - Also stores the material as the tween's target so it can be used for filtered operations - The end value to reach - The name of the material property to tween - The duration of the tween - - - Tweens a Material's texture scale to the given value. - Also stores the material as the tween's target so it can be used for filtered operations - The end value to reach - The duration of the tween - - - Tweens a Material's named texture scale property to the given value. - Also stores the material as the tween's target so it can be used for filtered operations - The end value to reach - The name of the material property to tween - The duration of the tween - - - Tweens a Material's named Vector property to the given value. - Also stores the material as the tween's target so it can be used for filtered operations - The end value to reach - The name of the material property to tween - The duration of the tween - - - Tweens a Material's named Vector property with the given ID to the given value. - Also stores the material as the tween's target so it can be used for filtered operations - The end value to reach - The ID of the material property to tween (also called nameID in Unity's manual) - The duration of the tween - - - Tweens a TrailRenderer's startWidth/endWidth to the given value. - Also stores the TrailRenderer as the tween's target so it can be used for filtered operations - The end startWidth to reachThe end endWidth to reach - The duration of the tween - - - Tweens a TrailRenderer's time to the given value. - Also stores the TrailRenderer as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - - - Tweens a Transform's position to the given value. - Also stores the transform as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - If TRUE the tween will smoothly snap all values to integers - - - Tweens a Transform's X position to the given value. - Also stores the transform as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - If TRUE the tween will smoothly snap all values to integers - - - Tweens a Transform's Y position to the given value. - Also stores the transform as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - If TRUE the tween will smoothly snap all values to integers - - - Tweens a Transform's Z position to the given value. - Also stores the transform as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - If TRUE the tween will smoothly snap all values to integers - - - Tweens a Transform's localPosition to the given value. - Also stores the transform as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - If TRUE the tween will smoothly snap all values to integers - - - Tweens a Transform's X localPosition to the given value. - Also stores the transform as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - If TRUE the tween will smoothly snap all values to integers - - - Tweens a Transform's Y localPosition to the given value. - Also stores the transform as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - If TRUE the tween will smoothly snap all values to integers - - - Tweens a Transform's Z localPosition to the given value. - Also stores the transform as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - If TRUE the tween will smoothly snap all values to integers - - - Tweens a Transform's rotation to the given value. - Also stores the transform as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - Rotation mode - - - Tweens a Transform's rotation to the given value using pure quaternion values. - Also stores the transform as the tween's target so it can be used for filtered operations. - PLEASE NOTE: DORotate, which takes Vector3 values, is the preferred rotation method. - This method was implemented for very special cases, and doesn't support LoopType.Incremental loops - (neither for itself nor if placed inside a LoopType.Incremental Sequence) - - The end value to reachThe duration of the tween - - - Tweens a Transform's localRotation to the given value. - Also stores the transform as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - Rotation mode - - - Tweens a Transform's rotation to the given value using pure quaternion values. - Also stores the transform as the tween's target so it can be used for filtered operations. - PLEASE NOTE: DOLocalRotate, which takes Vector3 values, is the preferred rotation method. - This method was implemented for very special cases, and doesn't support LoopType.Incremental loops - (neither for itself nor if placed inside a LoopType.Incremental Sequence) - - The end value to reachThe duration of the tween - - - Tweens a Transform's localScale to the given value. - Also stores the transform as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - - - Tweens a Transform's localScale uniformly to the given value. - Also stores the transform as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - - - Tweens a Transform's X localScale to the given value. - Also stores the transform as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - - - Tweens a Transform's Y localScale to the given value. - Also stores the transform as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - - - Tweens a Transform's Z localScale to the given value. - Also stores the transform as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - - - Tweens a Transform's rotation so that it will look towards the given world position. - Also stores the transform as the tween's target so it can be used for filtered operations - The position to look atThe duration of the tween - Eventual axis constraint for the rotation - The vector that defines in which direction up is (default: Vector3.up) - - - EXPERIMENTAL Tweens a Transform's rotation so that it will look towards the given world position, - while also updating the lookAt position every frame - (contrary to which calculates the lookAt rotation only once, when the tween starts). - Also stores the transform as the tween's target so it can be used for filtered operations - The position to look atThe duration of the tween - Eventual axis constraint for the rotation - The vector that defines in which direction up is (default: Vector3.up) - - - Punches a Transform's localPosition towards the given direction and then back to the starting one - as if it was connected to the starting position via an elastic. - The direction and strength of the punch (added to the Transform's current position) - The duration of the tween - Indicates how much will the punch vibrate - Represents how much (0 to 1) the vector will go beyond the starting position when bouncing backwards. - 1 creates a full oscillation between the punch direction and the opposite direction, - while 0 oscillates only between the punch and the start position - If TRUE the tween will smoothly snap all values to integers - - - Punches a Transform's localScale towards the given size and then back to the starting one - as if it was connected to the starting scale via an elastic. - The punch strength (added to the Transform's current scale) - The duration of the tween - Indicates how much will the punch vibrate - Represents how much (0 to 1) the vector will go beyond the starting size when bouncing backwards. - 1 creates a full oscillation between the punch scale and the opposite scale, - while 0 oscillates only between the punch scale and the start scale - - - Punches a Transform's localRotation towards the given size and then back to the starting one - as if it was connected to the starting rotation via an elastic. - The punch strength (added to the Transform's current rotation) - The duration of the tween - Indicates how much will the punch vibrate - Represents how much (0 to 1) the vector will go beyond the starting rotation when bouncing backwards. - 1 creates a full oscillation between the punch rotation and the opposite rotation, - while 0 oscillates only between the punch and the start rotation - - - Shakes a Transform's localPosition with the given values. - The duration of the tween - The shake strength - Indicates how much will the shake vibrate - Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). - Setting it to 0 will shake along a single direction. - If TRUE the tween will smoothly snap all values to integers - If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not - Randomness mode - - - Shakes a Transform's localPosition with the given values. - The duration of the tween - The shake strength on each axis - Indicates how much will the shake vibrate - Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). - Setting it to 0 will shake along a single direction. - If TRUE the tween will smoothly snap all values to integers - If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not - Randomness mode - - - Shakes a Transform's localRotation. - The duration of the tween - The shake strength - Indicates how much will the shake vibrate - Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). - Setting it to 0 will shake along a single direction. - If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not - Randomness mode - - - Shakes a Transform's localRotation. - The duration of the tween - The shake strength on each axis - Indicates how much will the shake vibrate - Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). - Setting it to 0 will shake along a single direction. - If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not - Randomness mode - - - Shakes a Transform's localScale. - The duration of the tween - The shake strength - Indicates how much will the shake vibrate - Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). - Setting it to 0 will shake along a single direction. - If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not - Randomness mode - - - Shakes a Transform's localScale. - The duration of the tween - The shake strength on each axis - Indicates how much will the shake vibrate - Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). - Setting it to 0 will shake along a single direction. - If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not - Randomness mode - - - Tweens a Transform's position to the given value, while also applying a jump effect along the Y axis. - Returns a Sequence instead of a Tweener. - Also stores the transform as the tween's target so it can be used for filtered operations - The end value to reach - Power of the jump (the max height of the jump is represented by this plus the final Y offset) - Total number of jumps - The duration of the tween - If TRUE the tween will smoothly snap all values to integers - - - Tweens a Transform's localPosition to the given value, while also applying a jump effect along the Y axis. - Returns a Sequence instead of a Tweener. - Also stores the transform as the tween's target so it can be used for filtered operations - The end value to reach - Power of the jump (the max height of the jump is represented by this plus the final Y offset) - Total number of jumps - The duration of the tween - If TRUE the tween will smoothly snap all values to integers - - - Tweens a Transform's position through the given path waypoints, using the chosen path algorithm. - Also stores the transform as the tween's target so it can be used for filtered operations - The waypoints to go through - The duration of the tween - The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) - The path mode: 3D, side-scroller 2D, top-down 2D - The resolution of the path (useless in case of Linear paths): higher resolutions make for more detailed curved paths but are more expensive. - Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints - The color of the path (shown when gizmos are active in the Play panel and the tween is running) - - - Tweens a Transform's localPosition through the given path waypoints, using the chosen path algorithm. - Also stores the transform as the tween's target so it can be used for filtered operations - The waypoint to go through - The duration of the tween - The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) - The path mode: 3D, side-scroller 2D, top-down 2D - The resolution of the path: higher resolutions make for more detailed curved paths but are more expensive. - Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints - The color of the path (shown when gizmos are active in the Play panel and the tween is running) - - - IMPORTANT: Unless you really know what you're doing, you should use the overload that accepts a Vector3 array instead. - Tweens a Transform's position via the given path. - Also stores the transform as the tween's target so it can be used for filtered operations - The path to use - The duration of the tween - The path mode: 3D, side-scroller 2D, top-down 2D - - - IMPORTANT: Unless you really know what you're doing, you should use the overload that accepts a Vector3 array instead. - Tweens a Transform's localPosition via the given path. - Also stores the transform as the tween's target so it can be used for filtered operations - The path to use - The duration of the tween - The path mode: 3D, side-scroller 2D, top-down 2D - - - Tweens a Tween's timeScale to the given value. - Also stores the Tween as the tween's target so it can be used for filtered operations - The end value to reachThe duration of the tween - - - Tweens a Light's color to the given value, - in a way that allows other DOBlendableColor tweens to work together on the same target, - instead than fight each other as multiple DOColor would do. - Also stores the Light as the tween's target so it can be used for filtered operations - The value to tween toThe duration of the tween - - - Tweens a Material's color to the given value, - in a way that allows other DOBlendableColor tweens to work together on the same target, - instead than fight each other as multiple DOColor would do. - Also stores the Material as the tween's target so it can be used for filtered operations - The value to tween toThe duration of the tween - - - Tweens a Material's named color property to the given value, - in a way that allows other DOBlendableColor tweens to work together on the same target, - instead than fight each other as multiple DOColor would do. - Also stores the Material as the tween's target so it can be used for filtered operations - The value to tween to - The name of the material property to tween (like _Tint or _SpecColor) - The duration of the tween - - - Tweens a Material's named color property with the given ID to the given value, - in a way that allows other DOBlendableColor tweens to work together on the same target, - instead than fight each other as multiple DOColor would do. - Also stores the Material as the tween's target so it can be used for filtered operations - The value to tween to - The ID of the material property to tween (also called nameID in Unity's manual) - The duration of the tween - - - Tweens a Transform's position BY the given value (as if you chained a SetRelative), - in a way that allows other DOBlendableMove tweens to work together on the same target, - instead than fight each other as multiple DOMove would do. - Also stores the transform as the tween's target so it can be used for filtered operations - The value to tween byThe duration of the tween - If TRUE the tween will smoothly snap all values to integers - - - Tweens a Transform's localPosition BY the given value (as if you chained a SetRelative), - in a way that allows other DOBlendableMove tweens to work together on the same target, - instead than fight each other as multiple DOMove would do. - Also stores the transform as the tween's target so it can be used for filtered operations - The value to tween byThe duration of the tween - If TRUE the tween will smoothly snap all values to integers - - - EXPERIMENTAL METHOD - Tweens a Transform's rotation BY the given value (as if you chained a SetRelative), - in a way that allows other DOBlendableRotate tweens to work together on the same target, - instead than fight each other as multiple DORotate would do. - Also stores the transform as the tween's target so it can be used for filtered operations - The value to tween byThe duration of the tween - Rotation mode - - - EXPERIMENTAL METHOD - Tweens a Transform's lcoalRotation BY the given value (as if you chained a SetRelative), - in a way that allows other DOBlendableRotate tweens to work together on the same target, - instead than fight each other as multiple DORotate would do. - Also stores the transform as the tween's target so it can be used for filtered operations - The value to tween byThe duration of the tween - Rotation mode - - - Punches a Transform's localRotation BY the given value and then back to the starting one - as if it was connected to the starting rotation via an elastic. Does it in a way that allows other - DOBlendableRotate tweens to work together on the same target - The punch strength (added to the Transform's current rotation) - The duration of the tween - Indicates how much will the punch vibrate - Represents how much (0 to 1) the vector will go beyond the starting rotation when bouncing backwards. - 1 creates a full oscillation between the punch rotation and the opposite rotation, - while 0 oscillates only between the punch and the start rotation - - - Tweens a Transform's localScale BY the given value (as if you chained a SetRelative), - in a way that allows other DOBlendableScale tweens to work together on the same target, - instead than fight each other as multiple DOScale would do. - Also stores the transform as the tween's target so it can be used for filtered operations - The value to tween byThe duration of the tween - - - - Completes all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens completed - (meaning the tweens that don't have infinite loops and were not already complete) - - For Sequences only: if TRUE also internal Sequence callbacks will be fired, - otherwise they will be ignored - - - - Completes all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens completed - (meaning the tweens that don't have infinite loops and were not already complete) - - For Sequences only: if TRUE also internal Sequence callbacks will be fired, - otherwise they will be ignored - - - - Kills all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens killed. - - If TRUE completes the tween before killing it - - - - Kills all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens killed. - - If TRUE completes the tween before killing it - - - - Flips the direction (backwards if it was going forward or viceversa) of all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens flipped. - - - - - Flips the direction (backwards if it was going forward or viceversa) of all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens flipped. - - - - - Sends to the given position all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens involved. - - Time position to reach - (if higher than the whole tween duration the tween will simply reach its end) - If TRUE will play the tween after reaching the given position, otherwise it will pause it - - - - Sends to the given position all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens involved. - - Time position to reach - (if higher than the whole tween duration the tween will simply reach its end) - If TRUE will play the tween after reaching the given position, otherwise it will pause it - - - - Pauses all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens paused. - - - - - Pauses all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens paused. - - - - - Plays all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens played. - - - - - Plays all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens played. - - - - - Plays backwards all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens played. - - - - - Plays backwards all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens played. - - - - - Plays forward all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens played. - - - - - Plays forward all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens played. - - - - - Restarts all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens restarted. - - - - - Restarts all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens restarted. - - - - - Rewinds all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens rewinded. - - - - - Rewinds all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens rewinded. - - - - - Smoothly rewinds all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens rewinded. - - - - - Smoothly rewinds all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens rewinded. - - - - - Toggles the paused state (plays if it was paused, pauses if it was playing) of all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens involved. - - - - - Toggles the paused state (plays if it was paused, pauses if it was playing) of all tweens that have this target as a reference - (meaning tweens that were started from this target, or that had this target added as an Id) - and returns the total number of tweens involved. - - - - - This class serves only as a utility class to store tween settings to apply on multiple tweens. - It is in no way needed otherwise, since you can directly apply tween settings to a tween via chaining - - - - A variable you can eventually Clear and reuse when needed, - to avoid instantiating TweenParams objects - - - Creates a new TweenParams object, which you can use to store tween settings - to pass to multiple tweens via myTween.SetAs(myTweenParms) - - - Clears and resets this TweenParams instance using default values, - so it can be reused without instantiating another one - - - Sets the autoKill behaviour of the tween. - Has no effect if the tween has already started - If TRUE the tween will be automatically killed when complete - - - Sets an ID for the tween, which can then be used as a filter with DOTween's static methods. - The ID to assign to this tween. Can be an int, a string, an object or anything else. - - - Sets an ID for the tween, which can then be used as a filter with DOTween's static methods. - The ID to assign to this tween. Can be an int, a string, an object or anything else. - - - Sets an ID for the tween, which can then be used as a filter with DOTween's static methods. - The ID to assign to this tween. Can be an int, a string, an object or anything else. - - - Sets the target for the tween, which can then be used as a filter with DOTween's static methods. - IMPORTANT: use it with caution. If you just want to set an ID for the tween use SetId instead. - When using shorcuts the shortcut target is already assigned as the tween's target, - so using this method will overwrite it and prevent shortcut-operations like myTarget.DOPause from working correctly. - The target to assign to this tween. Can be an int, a string, an object or anything else. - - - Sets the looping options for the tween. - Has no effect if the tween has already started - Number of cycles to play (-1 for infinite - will be converted to 1 in case the tween is nested in a Sequence) - Loop behaviour type (default: LoopType.Restart) - - - Sets the ease of the tween. - If applied to Sequences eases the whole sequence animation - Eventual overshoot or amplitude to use with Back or Elastic easeType (default is 1.70158) - Eventual period to use with Elastic easeType (default is 0) - - - Sets the ease of the tween using an AnimationCurve. - If applied to Sequences eases the whole sequence animation - - - Sets the ease of the tween using a custom ease function. - If applied to Sequences eases the whole sequence animation - - - Sets the recycling behaviour for the tween. - If TRUE the tween will be recycled after being killed, otherwise it will be destroyed. - - - Sets the update type to the one defined in DOTween.defaultUpdateType (UpdateType.Normal unless changed) - and lets you choose if it should be independent from Unity's Time.timeScale - If TRUE the tween will ignore Unity's Time.timeScale - - - Sets the type of update (default or independent) for the tween - The type of update (default: UpdateType.Normal) - If TRUE the tween will ignore Unity's Time.timeScale - - - Sets the onStart callback for the tween. - Called the first time the tween is set in a playing state, after any eventual delay - - - Sets the onPlay callback for the tween. - Called when the tween is set in a playing state, after any eventual delay. - Also called each time the tween resumes playing from a paused state - - - Sets the onRewind callback for the tween. - Called when the tween is rewinded, - either by calling Rewind or by reaching the start position while playing backwards. - Rewinding a tween that is already rewinded will not fire this callback - - - Sets the onUpdate callback for the tween. - Called each time the tween updates - - - Sets the onStepComplete callback for the tween. - Called the moment the tween completes one loop cycle, even when going backwards - - - Sets the onComplete callback for the tween. - Called the moment the tween reaches its final forward position, loops included - - - Sets the onKill callback for the tween. - Called the moment the tween is killed - - - Sets the onWaypointChange callback for the tween. - Called when a path tween reaches a new waypoint - - - Sets a delayed startup for the tween. - Has no effect on Sequences or if the tween has already started - - - If isRelative is TRUE sets the tween as relative - (the endValue will be calculated as startValue + endValue instead than being used directly). - Has no effect on Sequences or if the tween has already started - - - If isSpeedBased is TRUE sets the tween as speed based - (the duration will represent the number of units the tween moves x second). - Has no effect on Sequences, nested tweens, or if the tween has already started - - - - Methods that extend Tween objects and allow to set their parameters - - - - Sets the autoKill behaviour of the tween to TRUE. - Has no effect if the tween has already started or if it's added to a Sequence - - - Sets the autoKill behaviour of the tween. - Has no effect if the tween has already started or if it's added to a Sequence - If TRUE the tween will be automatically killed when complete - - - Sets an ID for the tween (), which can then be used as a filter with DOTween's static methods. - The ID to assign to this tween. Can be an int, a string, an object or anything else. - - - Sets a string ID for the tween (), which can then be used as a filter with DOTween's static methods. - Filtering via string is 2X faster than using an object as an ID (using the alternate obejct overload) - The string ID to assign to this tween. - - - Sets an int ID for the tween (), which can then be used as a filter with DOTween's static methods. - Filtering via int is 4X faster than via object, 2X faster than via string (using the alternate object/string overloads) - The int ID to assign to this tween. - - - Allows to link this tween to a GameObject - so that it will be automatically killed when the GameObject is destroyed. - Has no effect if the tween is added to a Sequence - The link target (unrelated to the target set via SetTarget) - - - Allows to link this tween to a GameObject and assign a behaviour depending on it. - This will also automatically kill the tween when the GameObject is destroyed. - Has no effect if the tween is added to a Sequence - The link target (unrelated to the target set via SetTarget) - The behaviour to use ( is always evaluated even if you choose another one) - - - Sets the target for the tween, which can then be used as a filter with DOTween's static methods. - IMPORTANT: use it with caution. If you just want to set an ID for the tween use SetId instead. - When using shorcuts the shortcut target is already assigned as the tween's target, - so using this method will overwrite it and prevent shortcut-operations like myTarget.DOPause from working correctly. - The target to assign to this tween. Can be an int, a string, an object or anything else. - - - Sets the looping options for the tween. - Has no effect if the tween has already started - Number of cycles to play (-1 for infinite - will be converted to 1 in case the tween is nested in a Sequence) - - - Sets the looping options for the tween. - Has no effect if the tween has already started - Number of cycles to play (-1 for infinite - will be converted to 1 in case the tween is nested in a Sequence) - Loop behaviour type (default: LoopType.Restart) - - - Sets the ease of the tween. - If applied to Sequences eases the whole sequence animation - - - Sets the ease of the tween. - If applied to Sequences eases the whole sequence animation - - Eventual overshoot to use with Back or Flash ease (default is 1.70158 - 1 for Flash). - In case of Flash ease it must be an intenger and sets the total number of flashes that will happen. - Using an even number will complete the tween on the starting value, while an odd one will complete it on the end value. - - - - Sets the ease of the tween. - If applied to Sequences eases the whole sequence animation - Eventual amplitude to use with Elastic easeType or overshoot to use with Flash easeType (default is 1.70158 - 1 for Flash). - In case of Flash ease it must be an integer and sets the total number of flashes that will happen. - Using an even number will complete the tween on the starting value, while an odd one will complete it on the end value. - - Eventual period to use with Elastic or Flash easeType (default is 0). - In case of Flash ease it indicates the power in time of the ease, and must be between -1 and 1. - 0 is balanced, 1 weakens the ease with time, -1 starts the ease weakened and gives it power towards the end. - - - - Sets the ease of the tween using an AnimationCurve. - If applied to Sequences eases the whole sequence animation - - - Sets the ease of the tween using a custom ease function (which must return a value between 0 and 1). - If applied to Sequences eases the whole sequence animation - - - Allows the tween to be recycled after being killed. - - - Sets the recycling behaviour for the tween. - If TRUE the tween will be recycled after being killed, otherwise it will be destroyed. - - - Sets the update type to UpdateType.Normal and lets you choose if it should be independent from Unity's Time.timeScale - If TRUE the tween will ignore Unity's Time.timeScale - - - Sets the type of update for the tween - The type of update (defalt: UpdateType.Normal) - - - Sets the type of update for the tween and lets you choose if it should be independent from Unity's Time.timeScale - The type of update - If TRUE the tween will ignore Unity's Time.timeScale - - - EXPERIMENTAL: inverts this tween, so that it will play from the end to the beginning - (playing it backwards will actually play it from the beginning to the end). - Has no effect if the tween has already started or if it's added to a Sequence - - - EXPERIMENTAL: inverts this tween, so that it will play from the end to the beginning - (playing it backwards will actually play it from the beginning to the end). - Has no effect if the tween has already started or if it's added to a Sequence - If TRUE the tween will be inverted, otherwise it won't - - - Sets the onStart callback for the tween, clearing any previous onStart callback that was set. - Called the first time the tween is set in a playing state, after any eventual delay - - - Sets the onPlay callback for the tween, clearing any previous onPlay callback that was set. - Called when the tween is set in a playing state, after any eventual delay. - Also called each time the tween resumes playing from a paused state - - - Sets the onPause callback for the tween, clearing any previous onPause callback that was set. - Called when the tween state changes from playing to paused. - If the tween has autoKill set to FALSE, this is called also when the tween reaches completion. - - - Sets the onRewind callback for the tween, clearing any previous onRewind callback that was set. - Called when the tween is rewinded, - either by calling Rewind or by reaching the start position while playing backwards. - Rewinding a tween that is already rewinded will not fire this callback - - - Sets the onUpdate callback for the tween, clearing any previous onUpdate callback that was set. - Called each time the tween updates - - - Sets the onStepComplete callback for the tween, clearing any previous onStepComplete callback that was set. - Called the moment the tween completes one loop cycle, even when going backwards - - - Sets the onComplete callback for the tween, clearing any previous onComplete callback that was set. - Called the moment the tween reaches its final forward position, loops included - - - Sets the onKill callback for the tween, clearing any previous onKill callback that was set. - Called the moment the tween is killed - - - Sets the onWaypointChange callback for the tween, clearing any previous onWaypointChange callback that was set. - Called when a path tween's current waypoint changes - - - Sets the parameters of the tween (id, ease, loops, delay, timeScale, callbacks, etc) as the parameters of the given one. - Doesn't copy specific SetOptions settings: those will need to be applied manually each time. - Has no effect if the tween has already started. - NOTE: the tween's target will not be changed - Tween from which to copy the parameters - - - Sets the parameters of the tween (id, ease, loops, delay, timeScale, callbacks, etc) as the parameters of the given TweenParams. - Has no effect if the tween has already started. - TweenParams from which to copy the parameters - - - Adds the given tween to the end of the Sequence. - Has no effect if the Sequence has already started - The tween to append - - - Adds the given tween to the beginning of the Sequence, pushing forward the other nested content. - Has no effect if the Sequence has already started - The tween to prepend - - - Inserts the given tween at the same time position of the last tween, callback or intervale added to the Sequence. - Note that, in case of a Join after an interval, the insertion time will be the time where the interval starts, not where it finishes. - Has no effect if the Sequence has already started - - - Inserts the given tween at the given time position in the Sequence, - automatically adding an interval if needed. - Has no effect if the Sequence has already started - The time position where the tween will be placed - The tween to insert - - - Adds the given interval to the end of the Sequence. - Has no effect if the Sequence has already started - The interval duration - - - Adds the given interval to the beginning of the Sequence, pushing forward the other nested content. - Has no effect if the Sequence has already started - The interval duration - - - Adds the given callback to the end of the Sequence. - Has no effect if the Sequence has already started - The callback to append - - - Adds the given callback to the beginning of the Sequence, pushing forward the other nested content. - Has no effect if the Sequence has already started - The callback to prepend - - - Inserts the given callback at the given time position in the Sequence, - automatically adding an interval if needed. - Has no effect if the Sequence has already started - The time position where the callback will be placed - The callback to insert - - - Changes a TO tween into a FROM tween: sets the current target's position as the tween's endValue - then immediately sends the target to the previously set endValue. - - - Changes a TO tween into a FROM tween: sets the current target's position as the tween's endValue - then immediately sends the target to the previously set endValue. - If TRUE the FROM value will be calculated as relative to the current one - - - Changes a TO tween into a FROM tween: sets the current value of the target as the endValue, - and the previously passed endValue as the actual startValue. - If TRUE sets the target to from value immediately, otherwise waits for the tween to start - If TRUE the FROM value will be calculated as relative to the current one - - - Changes a TO tween into a FROM tween: sets the tween's starting value to the given one - and eventually sets the tween's target to that value immediately. - Value to start from - If TRUE sets the target to from value immediately, otherwise waits for the tween to start - If TRUE the FROM/TO values will be calculated as relative to the current ones - - - Changes a TO tween into a FROM tween: sets the tween's starting value to the given one - and eventually sets the tween's target to that value immediately. - Alpha value to start from (in case of Fade tweens) - If TRUE sets the target to from value immediately, otherwise waits for the tween to start - If TRUE the FROM/TO values will be calculated as relative to the current ones - - - Changes a TO tween into a FROM tween: sets the tween's starting value to the given one - and eventually sets the tween's target to that value immediately. - Value to start from (in case of Vector tweens that act on a single coordinate or scale tweens) - If TRUE sets the target to from value immediately, otherwise waits for the tween to start - If TRUE the FROM/TO values will be calculated as relative to the current ones - - - Changes a TO tween into a FROM tween: sets the tween's starting value to the given one - and eventually sets the tween's target to that value immediately. - Value to start from (in case of Vector tweens that act on a single coordinate or scale tweens) - If TRUE sets the target to from value immediately, otherwise waits for the tween to start - If TRUE the FROM/TO values will be calculated as relative to the current ones - - - Sets a delayed startup for the tween. - In case of Sequences behaves the same as , - which means the delay will repeat in case of loops (while with tweens it's ignored after the first loop cycle). - Has no effect if the tween has already started - - - EXPERIMENTAL: implemented in v1.2.340. - Sets a delayed startup for the tween with options to choose how the delay is applied in case of Sequences. - Has no effect if the tween has already started - Only used by types: If FALSE sets the delay as a one-time occurrence - (defaults to this for types), - otherwise as a Sequence interval which will repeat at the beginning of every loop cycle - - - Sets the tween as relative - (the endValue will be calculated as startValue + endValue instead than being used directly). - Has no effect on Sequences or if the tween has already started - - - If isRelative is TRUE sets the tween as relative - (the endValue will be calculated as startValue + endValue instead than being used directly). - Has no effect on Sequences or if the tween has already started - - - If isSpeedBased is TRUE sets the tween as speed based - (the duration will represent the number of units the tween moves x second). - Has no effect on Sequences, nested tweens, or if the tween has already started - - - If isSpeedBased is TRUE sets the tween as speed based - (the duration will represent the number of units the tween moves x second). - Has no effect on Sequences, nested tweens, or if the tween has already started - - - Options for float tweens - If TRUE the tween will smoothly snap all values to integers - - - Options for Vector2 tweens - If TRUE the tween will smoothly snap all values to integers - - - Options for Vector2 tweens - Selecting an axis will tween the vector only on that axis, leaving the others untouched - If TRUE the tween will smoothly snap all values to integers - - - Options for Vector3 tweens - If TRUE the tween will smoothly snap all values to integers - - - Options for Vector3 tweens - Selecting an axis will tween the vector only on that axis, leaving the others untouched - If TRUE the tween will smoothly snap all values to integers - - - Options for Vector4 tweens - If TRUE the tween will smoothly snap all values to integers - - - Options for Vector4 tweens - Selecting an axis will tween the vector only on that axis, leaving the others untouched - If TRUE the tween will smoothly snap all values to integers - - - Options for Quaternion tweens - If TRUE (default) the rotation will take the shortest route, and will not rotate more than 360°. - If FALSE the rotation will be fully accounted. Is always FALSE if the tween is set as relative - - - Options for Color tweens - If TRUE only the alpha value of the color will be tweened - - - Options for Vector4 tweens - If TRUE the tween will smoothly snap all values to integers - - - Options for Vector4 tweens - If TRUE, rich text will be interpreted correctly while animated, - otherwise all tags will be considered as normal text - The type of scramble to use, if any - A string containing the characters to use for scrambling. - Use as many characters as possible (minimum 10) because DOTween uses a fast scramble mode which gives better results with more characters. - Leave it to NULL to use default ones - - - Options for Vector3Array tweens - If TRUE the tween will smoothly snap all values to integers - - - Options for Vector3Array tweens - If TRUE the tween will smoothly snap all values to integers - - - Options for ShapeCircle tweens - If TRUE the center you set in the DOTween.To method will be considered as relative - to the starting position of the target - If TRUE the tween will smoothly snap all values to integers - - - Options for Path tweens (created via the DOPath shortcut) - The eventual movement axis to lock. You can input multiple axis if you separate them like this: - AxisConstrain.X | AxisConstraint.Y - The eventual rotation axis to lock. You can input multiple axis if you separate them like this: - AxisConstrain.X | AxisConstraint.Y - - - Options for Path tweens (created via the DOPath shortcut) - If TRUE the path will be automatically closed - The eventual movement axis to lock. You can input multiple axis if you separate them like this: - AxisConstrain.X | AxisConstraint.Y - The eventual rotation axis to lock. You can input multiple axis if you separate them like this: - AxisConstrain.X | AxisConstraint.Y - - - Additional LookAt options for Path tweens (created via the DOPath shortcut). - Orients the target towards the given position. - Must be chained directly to the tween creation method or to a SetOptions - The position to look at - The eventual direction to consider as "forward". - If left to NULL defaults to the regular forward side of the transform - The vector that defines in which direction up is (default: Vector3.up) - - - Additional LookAt options for Path tweens (created via the DOPath shortcut). - Orients the target towards the given position with options to keep the Z rotation stable. - Must be chained directly to the tween creation method or to a SetOptions - The position to look at - If TRUE doesn't rotate the target along the Z axis - - - Additional LookAt options for Path tweens (created via the DOPath shortcut). - Orients the target towards another transform. - Must be chained directly to the tween creation method or to a SetOptions - The transform to look at - The eventual direction to consider as "forward". - If left to NULL defaults to the regular forward side of the transform - The vector that defines in which direction up is (default: Vector3.up) - - - Additional LookAt options for Path tweens (created via the DOPath shortcut). - Orients the target towards another transform with options to keep the Z rotation stable. - Must be chained directly to the tween creation method or to a SetOptions - The transform to look at - If TRUE doesn't rotate the target along the Z axis - - - Additional LookAt options for Path tweens (created via the DOPath shortcut). - Orients the target to the path, with the given lookAhead. - Must be chained directly to the tween creation method or to a SetOptions - The percentage of lookAhead to use (0 to 1) - The eventual direction to consider as "forward". - If left to NULL defaults to the regular forward side of the transform - The vector that defines in which direction up is (default: Vector3.up) - - - Additional LookAt options for Path tweens (created via the DOPath shortcut). - Orients the path with options to keep the Z rotation stable. - Must be chained directly to the tween creation method or to a SetOptions - The percentage of lookAhead to use (0 to 1) - If TRUE doesn't rotate the target along the Z axis - - - - Types of log behaviours - - - - Log only warnings and errors - - - Log warnings, errors and additional infos - - - Log only errors - - - - Indicates either a Tweener or a Sequence - - - - TimeScale for the tween - - - If TRUE the tween will play backwards - - - If TRUE the tween is completely inverted but without playing it backwards - (play backwards will actually play the tween in the original direction) - - - Object ID (usable for filtering with DOTween static methods). Can be anything except a string or an int - (use or for those) - - - String ID (usable for filtering with DOTween static methods). 2X faster than using an object id - - - Int ID (usable for filtering with DOTween static methods). 4X faster than using an object id, 2X faster than using a string id. - Default is -999 so avoid using an ID like that or it will capture all unset intIds - - - Tween target (usable for filtering with DOTween static methods). Automatically set by tween creation shortcuts - - - Called when the tween is set in a playing state, after any eventual delay. - Also called each time the tween resumes playing from a paused state - - - Called when the tween state changes from playing to paused. - If the tween has autoKill set to FALSE, this is called also when the tween reaches completion. - - - Called when the tween is rewinded, - either by calling Rewind or by reaching the start position while playing backwards. - Rewinding a tween that is already rewinded will not fire this callback - - - Called each time the tween updates - - - Called the moment the tween completes one loop cycle - - - Called the moment the tween reaches completion (loops included) - - - Called the moment the tween is killed - - - Called when a path tween's current waypoint changes - - - Tweeners-only (ignored by Sequences), returns TRUE if the tween was set as relative - - - - Set by SetTarget if DOTween's Debug Mode is on (see DOTween Utility Panel -> "Store GameObject's ID" debug option - - - - FALSE when tween is (or should be) despawned - set only by TweenManager - - - Gets and sets the time position (loops included, delays excluded) of the tween - - - Returns TRUE if the tween is set to loop (either a set number of times or infinitely) - - - TRUE after the tween was set in a play state at least once, AFTER any delay is elapsed - - - Time position within a single loop cycle - - - - Animates a single value - - - - Changes the start value of a tween and rewinds it (without pausing it). - Has no effect with tweens that are inside Sequences - The new start value - If bigger than 0 applies it as the new tween duration - - - Changes the end value of a tween and rewinds it (without pausing it). - Has no effect with tweens that are inside Sequences - The new end value - If bigger than 0 applies it as the new tween duration - If TRUE the start value will become the current target's value, otherwise it will stay the same - - - Changes the end value of a tween and rewinds it (without pausing it). - Has no effect with tweens that are inside Sequences - The new end value - If TRUE the start value will become the current target's value, otherwise it will stay the same - - - Changes the start and end value of a tween and rewinds it (without pausing it). - Has no effect with tweens that are inside Sequences - The new start value - The new end value - If bigger than 0 applies it as the new tween duration - - - - Used internally - - - - - Update type - - - - Updates every frame during Update calls - - - Updates every frame during LateUpdate calls - - - Updates using FixedUpdate calls - - - Updates using manual update calls - - - diff --git a/Assets/TEngine/Thirdly/DOTween/DOTween.XML.meta b/Assets/TEngine/Thirdly/DOTween/DOTween.XML.meta deleted file mode 100644 index 9d5a815b..00000000 --- a/Assets/TEngine/Thirdly/DOTween/DOTween.XML.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: a0739bb6e06ccb04dab3edf7f70ce0db -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/DOTween.dll b/Assets/TEngine/Thirdly/DOTween/DOTween.dll deleted file mode 100644 index 4122abf7b2468abcc8bab2114f8475a26517fc42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174592 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 diff --git a/Assets/TEngine/Thirdly/DOTween/DOTween.dll.meta b/Assets/TEngine/Thirdly/DOTween/DOTween.dll.meta deleted file mode 100644 index 5b471d35..00000000 --- a/Assets/TEngine/Thirdly/DOTween/DOTween.dll.meta +++ /dev/null @@ -1,33 +0,0 @@ -fileFormatVersion: 2 -guid: 061f5aaffb4b88347b3032b56e57a36e -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 1 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - - first: - Windows Store Apps: WindowsStoreApps - second: - enabled: 0 - settings: - CPU: AnyCPU - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/Editor.meta b/Assets/TEngine/Thirdly/DOTween/Editor.meta deleted file mode 100644 index 9d15eb84..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Editor.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: f4281f1600344bd409026cf6f6ccaec1 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/Editor/DOTweenEditor.XML b/Assets/TEngine/Thirdly/DOTween/Editor/DOTweenEditor.XML deleted file mode 100644 index 8b824724..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Editor/DOTweenEditor.XML +++ /dev/null @@ -1,110 +0,0 @@ - - - - DOTweenEditor - - - - - Starts the update loop of tween in the editor. Has no effect during playMode. - - Eventual callback to call after every update - - - - Stops the update loop and clears the onPreviewUpdated callback. - - If TRUE also resets the tweened objects to their original state. - Note that this works by calling Rewind on all tweens, so it will work correctly - only if you have a single tween type per object and it wasn't killed - If TRUE also kills any cached tween - - - - Readies the tween for editor preview by setting its UpdateType to Manual plus eventual extra settings. - - The tween to ready - If TRUE (recommended) removes all callbacks (OnComplete/Rewind/etc) - If TRUE prevents the tween from being auto-killed at completion - If TRUE starts playing the tween immediately - - - Full major version + first minor version (ex: 2018.1f) - - - Major version - - - First minor version (ex: in 2018.1 it would be 1) - - - - Checks that the given editor texture use the correct import settings, - and applies them if they're incorrect. - - - - - Returns TRUE if setup is required - - - - - Returns TRUE if the file/directory at the given path exists. - - Path, relative to Unity's project folder - - - - - Converts the given project-relative path to a full path, - with backward (\) slashes). - - - - - Converts the given full path to a path usable with AssetDatabase methods - (relative to Unity's project folder, and with the correct Unity forward (/) slashes). - - - - - Connects to a asset. - If the asset already exists at the given path, loads it and returns it. - Otherwise, either returns NULL or automatically creates it before loading and returning it - (depending on the given parameters). - - Asset type - File path (relative to Unity's project folder) - If TRUE and the requested asset doesn't exist, forces its creation - - - - Full path for the given loaded assembly, assembly file included - - - - - Adds the given global define if it's not already present - - - - - Removes the given global define if it's present - - - - - Returns TRUE if the given global define is present in all the - or only in the given , depending on passed parameters. - - - to use. Leave NULL to check in all of them. - - - - Not used as menu item anymore, but as a utiity function - - - - diff --git a/Assets/TEngine/Thirdly/DOTween/Editor/DOTweenEditor.XML.meta b/Assets/TEngine/Thirdly/DOTween/Editor/DOTweenEditor.XML.meta deleted file mode 100644 index 70f7c054..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Editor/DOTweenEditor.XML.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 24cae712cdc6c394c970122d164a20b4 -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/Editor/DOTweenEditor.dll b/Assets/TEngine/Thirdly/DOTween/Editor/DOTweenEditor.dll deleted file mode 100644 index c37b48606037f9f3893239c877854690ec0e4d32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66560 zcmce<34B|{wLd<(lCNZW-y|rv{^77uG&dDDKUDqW=4? z)lbxK+7(aM^_z*EX0*4iGuqdeNY(9#)tLi*b@9Hs)^+W5y@{?^b3uWBsw#T@av@f` z+@kyF(oU(i9q`E-*)gpr$4t?awUn< z|MpX%M8cnea@SD;xA$*_&(q(9e8spwl4*I^j`qr zaa)z%!1%9Di0#d0(j>#MZqSh%dP4FoxCGtRY{q&L5F}j%bY>f9csl-;2(i?Ga`FPQ zEB;6~P2`9>_M$&-6(Tbyi+n6lHWOA?lA2K_gkN(HqcD%=8AkIwno$ngFf8pEsUYqN z9b`QjK-vfbq?V!bQDTLtEbbeW$Jw+Y%C}7$q5|hF!fmmAfnGg7V()zH&xlz<%0F-q|;;G2}0@{TCG8K;3}qLh9EF6TEU5`dn%F`F1O zG8s@&H|7un-S5l+?R4XGV%(m|@DpPmF^*?4;5`5-;bR=4PPM@rqn zX0Lf4(&2pbC-lfMf9~MCAUSVH4gzGqZZyI`#xwx3OAX>k1d3q@$#EI*m*+8{shn_HOE z$s8J+1>xE3aDMY@=G@L48k_~;N`pMaZ+@RSG$iwR7!>Fcj~k;b*D%nKrU~ZT5HO2# zM1L;1In0A3jVFI&DA&iKqAaH*#|VQ`rkCjED)18#V0JsNgUD2JS83#(`rjRwns)vAbK}Mr884$TIHNhi%53lDnNLcq{w_0 z;c2S|Fn{ex>$++K=uVjl7JdE%sV|r4tYU3if~Htx|Np5))pPdAD3fljvmM-gry8sm zb^8D3mWJn^qTZ7?A1&Wxnc`S}i5~Hm=rWqXS60FEf(9lnKTlYi-sBF3U6lsrUp>@< z*#~iooh3*Kj3HiMAW8GpH}S;aK^&vuWRG_QVnO3>F+Lmd3Ga|2iAPU9kEFctS~Z4f z^yKmA$qz47qld;#9?u^6;YKxXXvF04q>&#kRU?MRN*<4ud{$q_Xz_XFq)9C^P`JNQ zwk#mqR6T+zg(q)*q8)B=Hgu#v1M3FN6UI#Binu~S14{*68%1+G#w^fiRU%g{uWe4OL82hHVop#u){-!s!!tr)_b58k6Vd~@iFIJ)d2PO) z8{C>$4`RO0E}=Qsr$qC8QWO)T$7^oIDD@c|AYDhb8yGtNPg2naW+i`9jd=kCygp+S zFk>^omMf%)IVvS zja+tF?!9s0S{vlcpy<4B;pv0Nj!?Y zv{=#&7)}o`WOiZ)IPA|h+c=X1&j6sErXwHI%;{7rxi76(^w1Hl$u}|?3Q{N?rG$Zz zpp%47zO9p6>!C)?orF{AjpRcfaSpc*^G*Vh$RC{J3TZ|RsRpAPZ~#PCLuFzoQ38ow z^l&HQ^av&{riUl78;{x#5t=;j2I|$# zSvFRwn`>;WN;faDv1;8sY-2UL`G}28(9Jh(Y@%)!*PPrP0+*IBw0T3A<~=r6?K6LGV>Ldr zAm3_k!vvqXERAvFeddK0f$NXV)V*?ikiy1Zfa{u&&6Yy&^Ec+!(Lo2V9pRibA0rUc zLZU?T2lB!}-Frl}GJ;8qvv`AB^St_X@!5aCICBY14(!XCfteZB<%5nUuNpCl2wT%}BW-r-(1dNELhcu2Z#wUTYO>@NUD61HH2Vm2uVPNT##wa9GI@HP!U_0u| z{VeUtXi=a?HX*SeY}yM34{Bau9!13=%>CYfe0%TnCaHSdFB9g z(d2S~LL*A>V2^MGl32$S2_&vWoq;kvd?s3AoW^90EAD2@a1s%c-=@NW|r>#EJh4>V!e<1FxwiICA45DJ(eB~z*YE+1CuKM z1xKgDLgt7j@Gdcbu_(i^anbl~0)^(H;3xz<2HJ^194QEnBIVIX4Zu)<5m^`$P8jHI z8BdKvl!^kJV))9%3c2HGm!_^C(jdqWa5&2g#uu0@?u@skbFQ2WpCjMV@|gUcT43333s?kDt&I6BhfXTOj(1 z3ev@z*Ql|imu^0aii5`If#-Rziz9dk$~@s}Z;9s!vl3sRGCje9a9)WA;R!+AH~V-l zx9K>t@{uNw7&Et6+1NOYJd!pogBHN+4dV!ymR=V?FZvsq3rk{Eu8lwuPeW6%aRhDg zoX`RF0wm)Iby z6y`ak+gga27p7Cmbn0L_b!$5Ht#s;%bm~u5%4*YkRsP6UsG#QPGtCc446d)6MI}f< z3IEfzR`2uFK0xRwW#XK{x=|ElEJYT^c@MnCDjPdytL%l2vKO4PY|1o3AW&N@3noPB zt&2-gb^tyya-LoGMYYAX#WjKCSD@}F(d%f1br506Mf1Z{-HTn6JVNJlbP1BTK>Q98 zN>2&DADnahsJ2-R8jw7giPiVogKeqQvW4Jb{B4@Gj#HkTo~&C}scUi0e?H z4|;lP8=9*|&WBP(+KB*0xhug_C8mXNIF}jM#rZg8ju!B{Bh{K)XKGHwor8B>RHJbx zKscz4WqcJ3za&#B%@dxc8hEU7A^H*HYY@4UsG-`1(0O!Fp^u=0EY-gbwzREBtR*Yq z&o~OAhUR_)&u|en{4Pr67~jOh_!dA;B+s2w=rQgly3dW&w~>nEYZ%bQB4~Wa64X#Q z#hKeYe1Kjuau(`tiWdpv9?GyiI7$Sd{|3}={5xRcUV!9x0Y(u`JR<}W_W>dsI2M(jh100^QA)}h{sSCY!xE~2KrrzG5VP5EY|jV* zR)E`|_#qWbS!4+qzMc^R)rp74DdB8l69^_Ap^TJtO4^NGMv?>qfm(m9-_a%_%F0?v zh5$)SnBb5hqN+kBe>7H^hT8nZk3q(!pBg*58hNr>+#nlDJ2@$At^wLiuBiZE7?9_?>qKcahY98&KP%0v_*rFso}bm` zUHq&u@8{N#Ic-Y65L=It_3W`0j5%FUn3M1}banZS!;nFyL6$V8=CR>rkgnN2cLZJr?$ zHRd@oF~RJRiHYVVGBL@#QYLE6FUdrmc~mCq&HH6yviZMcVv2d35~DQvVO^k!pt7lE z`~ubqM~oJ=tdK{7Zqz~8nBp+20Gu)bkw5LSxt7Prz~cpChOp7J^5>tJlsVMGoC{d zN5=&fe01D|$MAM1V~u3=5+e$RJjXr5E9iU&Yhc?(0k#odQ&r?*!>SvdP=_3NiSZlM zq1GVJBMBlea~@cV)b%Y4jNgKx4RxS~%AoN(M#%C|?V!})PCQg0$G|pzPv8X>q?WMJ zo4h>Zg>!f^RMN*GGx8!pq;TX9^za%l;n5V(hGLYFLb*d!8{&G`N-Z~j|I3Rff96N; zEKa_RJiMsj^@j0Bpym&u(+C9*mH$s9^9_Io=1a(#P};*|3}N0EOt<2r3^qCFQ9u+N)NKK`PHlfbmPw;H=5rcL;nlYAJ3wD1IBB_ z;5tVBie#SgH^6+aZ(G60>qwP(M&6)D&d8he&`17G4_e0FBHJo`E@QwPLoMvt-o#sw zHcwdi$lE|A%~NF!s&~?~VvA;0Td5L{6sPwcTqKUWxJ;X%XA@+tjgGjq%@UUF|mgBTcj0^v^Uc-KLMwC$n~?`=_XwcL7vp^D;}5k$#1 zPCx++0P+NiVsuu;UNBLH?;{0srJ&yuJe76Lx1qr}t|~s3$(tr93tR2qU=gx( z&yyCZ1`>>9IQ5V{#tF9Lay0x5YE+e#5|4f zE@s#yr|B$Nm#4|64bi$MtZPHtsr|evlT5cP+iN}r#SxqSWa-}+ULNp=!+Mjo2>ih2 zSc|}tN!FOen+m^P=$ZYrEY++^bKFC2+6a&IjL;543EYhU7b){Za@|Hf3TzB}-Ns}}IQk+7 z>n_^xU?|Y`M&+CWsYs2R^%%fn(UtF0*9vu?F%`_5g+GKcyuA3op%HDo#%k1<)0D$i zx>Hv{r$U^=7JG&opbp>5DhOAUy7^vKnMW(}c!D@HBEJQ39?e59;v$yYc@Zn5?&a#* zWJ4>Y!AyGyI0^rGh8j^apCLC*cAN98{*!d}C3A&EYz%pZra`=}>irKtY|a!Xx?Ia- zh~w&(KT@AjFp+q!a~Av~&(L(x<)OAKQFR0eD?L40-u-vsAh6Rdxw(^Z7JF7pzQ}FV9;sr^GEcDYesOY2jiwMTG>;7S#U9 zZN8k&2}Q`BOQku5#usCTDG+Jq>yVOL8FF6Dd@GHU6Km$XX`I&inh}BpxV#+kJjT2a z?K1DH!%fw{10=tIULM^ELGuLB7S~&}T|`?8)Vv{0gG+eKuM+L0Gz}xsWB#3J#$+om z2BgPq25O#{reR2WOp|EWr)j-JJ3_P{q-lLbdy;6{6sx=hXyxYQG~Q1#^MRVUG^N^b z324?01M?=3={VpOepZ^1sf1UVd-z#x{)V45=6MZ7pJ4u)o}=h1PcjU1jqXJXp={p> zk#q@0f|mCdCNpcB`F=C+eNzhP4vph zYQp840@??uWQ4*-69L?vQ73qG_@>x1Ks0|&*_UKy=N>YT5r=wh=&;SkyJi0{;oM{9 zpGk&$Y+M;0YX2e`?zeGec<2>QgADiHxH3ExX=ILYAC4zu%sOckCsE;9O*9vSSZT~Y zX{N9-Hq!|8mAQ^M+-oP*16O~iqi>r0eB49tNnHVB&PnU~B17D*9du* z`2@+ZkBuwCA?vRs!yZ1a42Ll9bjYxuk0-hIJ z3PdBNbXQJyIBqaxo{=SkyA#F>5H?ODQ*noq_eOFI#7dnmQ_x)pO+4;;djZ@ahS`Q%@wF%vEbjy@gZ}i#Bc*B9*g~-WaeVhJAgi)R;0O)R z#9UP#&LB}1mg*&$UorFIGCz%1S?6mIn8;(B$_b9ruqL*j2OI+fEz<3wCL^RxqXEUE z${|Msh)0owMgxXNje|yxz~11XQO9%dJ80y1?0pUzIU0MLgGMvi2muF;1_+N5o95qyqAs+l)J#QfAg_|OQ9~8=3|p3( zs;G->Dm7M7&$Ox3G(}x(QF*-k-E0MneyWNuhqA--x8eA`^}|@ZOd{W~`<#95xMc^10(395xSe3b^|n95xYg$~=Lx99+~2lz9VXJ{hvS z@`SpF{lk%oEy$U2*i9TPHY2li_7(?=ZOJSzJB@?I24$9y{lvjyt1>G$%ZR#nyKj5$ z_7czblAP@&`t}m<_7dOrlHBbJx-g=6fm!A+@tfbn7?-;}JyKKRx62+PzvHQmUSaFr zEG`+ECpG5!vbbbylcqD~=4Nrp;3iFE%q{U`vB~PZx|HmkEH>HKq%bYn*=m!GO>f9z zXX{ONHfgeuxw91~Tk||2+1Z+ty?I)bY#5NQ=~Zp3l82PQub}}njQ}Dreect;t~Vz_ zFSfQDXMObjKkTRJ+ki}~UCet0x%oC{SfXZ&m7)y`-5Wz}qc8j6KBXqtLpPziCLAd8 zQW4S8k6AQQA@NdSwvjck#?>435Y8=T^J>$3gs(HRbf}}aoCL%deWrOm^5V}VueqNTJ`1Lbl(@a-HH6heXk#${ zSfwt%6Pnlb)G^$%!#z@-9s?mC%9V4LSIk{RUjd=Ey1A{$jJCRYb>&&nJWa#bDLpGV z;^U$RxxYVL>XH17?7SZ-3Qu2V{j#ik8EApUpN7?fN{3`C zNF24o8+^E3TIOX*d~t3$7?EaGMOlgLB3XMUS`;n;iFA=w6RFILOQ&A`9;S8WlrGYK z9pA;nccJh`f_qW59j<|IVKgHf+g^H<)AnV)@FccziSLNiLRvqf1^p%Hfiho7x(|M3 zo0eQp`N(%gN4YDXe1v=vr~U#8;5{962wgM_`0Z?(L7hQ8-sbfkDaciRIzQLZ3t@Mp zAlG64Vs}$z?ikDa*z)WmxcD~v9*5;;T?(^Hi_=sQUJauh!Mh^rFqnreKHc3^hCBY$ zpBcv1vyH9e%Catvodav&_ApiVEg0JaV|$db`3}CcGb|&=&Q;>PZ4%irEgzmcWi2;o@L@m1iUNV9q<@~-Breb_wiir5WR2eQyWqn^N zD^DdlA@#BHV91TFhlr=B$Ij!ZXH1^8+y;yo(ppQjp~a!KBP0eIJru3lxDwt9$D;PH zCWpdb&{zUu(EJ{HDo8)t5N;T`6nPTopcs{0jbvgC0AFI1FD%y*%J&zWkl!E_@!x~r z2H|3bHZ)2KVDYXEU51oA+g^aPEa5yF{{yN$>2<$h%IM4}$O5oXeb1ip)4ON0X!lP)C4(-+POPjTd=TM2w2VZ5AlE5XjG8OX0U zYQ{1=hOa`sp}V!A{dlV5;t3MtWo%%0BlQ=v<&qfwsSBEiu=+uqqq3T6CZpZ*J&U;p z9ildo$Ix>je985C$Y?`k-()*V)dZ$an(7FxhsSEC}O!4}946Yglz5Va_>5Q5ZZ1N#Mi!IvnfZ4ig_7z2b; zrH<>O(v#VYGi4)B82Ag$nW%H!)RAU=h)QV-sd6bX7 zU!Zd`T&Nibf#5X=ebGTT&IjMP0DyjZg%!uTi|=UGpg*>HglI&6*s8tJ;!sT`X(X|N z(C;#6f)_Nu0||Sd3#oPz3b0E*LpSL{ZZ_&qdn{!)m%gF>318g*SE zyNSst*!g2LI8aUMy@&NeTdjckZi z>3$yhBoJpm`^^K8k(YRW^D(6VZb>^k*x7A-P3WWQv@Z^=n)A^bo(CD$@T7Hq^JA3q zuvH3QRywtY<6d8K)^0npoa*=jwHlY$nA7E`^3#;op_b1gKEnTA!slXqu%M6|BczFb z9dO*`5Z43o1E)WtUj`bEti?T9^k;zM6}p&#!RC}-4xH$>XVLEmjw5SP@3G}+9(r6C zv{o#coSsI^l~7vVmzFVxV!;BOOJdElpWJBp1d31rAqHOMa5tcX5E$N>CIp7jD#b({ zqh}3!vv9gpA~Oeuccs&lj~uRAJRDEsf#HkO>B`{`(;5Vacc%c>eKOQ!?F zbnC;aqbQx8FidwSBz^MsC!RZNxW~p}D>2-g#)HEp>2zQi`^0p4ed%;?IFU~CRF4Ly zue*@x%uO(@tdH*sDQDr=3l5`FaslRCW$+;~vbhUc&CdcP`_q*$XNatS;96{_RB@L8 zzmxFnelf*dlyMrsm@=rt4q%$hD1&fESDIfyPNh9{qN>hB($T5r!?qN4ty9YGYV*&w z6m`1O61EeV`KPCABv+X1|J9U5>_tjGNp;&!VlK4h$z2X$HDI+U1^iCJ*^yAlEe~g} znykgdXnNwNP8*_<@I6~O0}?_%|FjD=;pd-v=keS#e?FFM^1aFnY1cI8EJ$llgTUEF zdr+9`Y$}VXAg@-#il{R&?8Sv-TEyBT z!aT4rW0@<X>H>;w=A|gaya9ltMzCBJumjyWYzMy~ zN-h{h)XHAg88g691yX3EJ4Wnl*GreB-Mgg1zZC zo-}-E`_O}OsiKLO#i2beUbZxrV-NKiR0~1c|97~Az=1XPVRY~=f8E9OF2gcv1H6U4 zTdJ43_zr=jqG(Cw7=irQ=*!f% z^jlovVquXBz2lL69g)J^@feX=Zu-?AeduPCC4bkYL?8MJ5LxeD_-v!BDX41lM20ku z(R3n6Yc^i&!GwHqD11@nLDC;T-Es#%gSq_F=^N^Lu?R1=_<9E4Yw;&#^JO`?im&0v zaCiu+^9uf1Kee3?2Dv+iX@qj0Xaa8$(0e#DcQ(+S-9Y}8jV|4LJ87Kn8^Vcz{FZg( z93NZF&Cu9K){qqXN-U+>ZiAp-*Ho)89JT^0QP?UpTMDPIW8Nf-lLnP{Mb|-3`qQec z?-td-ap*G9G=5f^XVG)`T4-j=v@4lGC37pw&=jc|pMXxGAE8_BUp85cPHs&OfiQY0 zc=mZ5b=q0DEQPO2Y#aR~SfS?R=b-N>-sI44C($XZKlGy8d;$e0>dEb-~EdALPg0~YrXnRb{4fs)1RigXtH2W0qwdYD`qjVWitrX1s4F-T({nleM5DrcT-1F5b97{{Hcl6`R{Y z65>Yu-Y-rZrY!BD+WAjI2swA+eYv?9v*KT_IrK$ksvWC2`i{MTS^~pb;AC8&gRsgK z;!J#?Di13fULJfXJ3Nkq5aq|#2ii&*1OS#5;tv7YGF==kSy88pP$|LxF8;8#NW4-< zxh9nysM5s&hP@0+N{R9)r(a|^m!ZGJK;Bo139e_#g2shGzZj}o7}UiR#VhIx#Z{BL zi*#|pggu%ro@ID(khoWiB6p#W6+X!5;`z{ls(`q==3p((x>$a1HBq)rqSDTo zM)2oT3H}=>y6A*Vsdy!iN^6@mqp(nXSVWq*QCg|^*)%HigA$VYTNP10hk6UewbQzb z0^*`tD(42kLQ#)g0r3liD6QJT+CPc?=v`fWlFMIV%qV>FEi7CrKA1>-_rnR)ceBx=QqdVE`d_?6KVC~V zxjaO05&OWgI->XGb{7?jhrQIl-!D8^dye?Gsq}kG&()qcrBK|;@I&u;82>`tN&sV) z{wo&03hb^ulhdOZYWGYa%!6NU*^d`r4;zG)-J|1m_}zY&c&MP=QzEA67vk57zMDhP&FN2b`dPpY zqn~kK=GidX&hRpZ^BBe%F7^}m-CTmxIem=NK2HC#`ZAQ?%Vj=V@NfPSu`K6q|15FI zl+m2i#a}AhJ*SHsEB^_23t)+8tNboxexy^buQL3-)Q8h;fV0Gh+Cz}}u14CH))2g) zkl@`uf2V$M91OPiJ^D!v`3CuAFkkV2v%K zTkFUydj7-yfOw2yH^XLz zWfO?LfYZNW=r15jiqqd?_&UQi3`-drEVGp1L8e@*QLa!m!PA-E&9H`{#xif_5qBce zCE^>^KLz|tkl+`m{nUTDD4qN$yyDTxPx$Laj{6~`e_3!L{Lo+aQ>2aQmw8+w2v{#- zp=Tg7rT7`pQ+|Ra#xwp6qvydZW{E5Feu-Xwj^X`&N-yU0YKAv3yoTv}IQ=J1-^uAb zhQ0NVLaW2IzX6=>egd$;LzY~KpKP5aj`@C%8YMjx`XjivP5&cm??o@n65lNSn}5sb zkD$qx(eI!yph;;vG#^3_%3M~9D!5&bK;9*uU^t8tT;epAtPT+URqdak)J-AF7*&tr zm&+~#Wy|R2>)%2xf2<~WX)VF+g#=e3ZOL4i^AAuqGyGieAF%M3#Cx#6OMD18UEJ;0 zg%@?{;z{^eqqsWfGK|f4;dPRti%)^Bi`PI|Uq{jGQlTZQcemM2ys{tIzPJn0MO6^fS>=5^KP6^r@U zj1#Zk)tFZ*-eBw|-?6gC@T*z>kUZb(Wj+rU%h>*rF0W6E@FW+zfjnNm4v;huq#k|op@bgamLHb8dDioc1r)Z5 zu_+4M#@I}S?Plyug|BK%W~@tL-(&0&h24PG)(QIQGOFFEC9SVy?2vDM ztbvI50oeJ zW{8^=_I|-!ZKha#n&jmd&edj#)wD^0X0?TT@@9*lF?L9}Yc^}AiTS4!?~v#(BozlQ&naUm$tEXuLk}bn!dJC}!a|^TaEP zcXh*&y!m4NLXwocMPe&sH;LzArA6Wbg}ukvLlX0St$L4Vk*LJBlKS?QAYm!S4*Bky zM%bH@Cw^J;)x1Sw!XlOg_V0OTiTf0GxO%g;Ogycy6IDOXTP7m3af4mHR{w0?O7Ytk z!sIA!6El|)wqIPItBW?VsgrDtc_I__e~;mh1Uj#nanlz7wI%+IiyU3nW%p zUXXvDcuiry@l@nrDEcpyyuQ+!{ENh|71lF(N`6#aaFHqnKNQs^-tUmu2LEaK-J(27 zn6z13Ok+&iEG`x?CfgSmt&H8|dwlvC`EjvNVebIDSbS4q3xVwxFDPsmupUviL)KRx z@_Bm2G=&|W?(_7CGZglku~|!qR>p1;*9Qr^nX&!i^l7>)A>QtkdYc zW@855BPKFNWj>(q5vQfGVm`xgVP`<65hVfIGwmup6`bQH$v_eP@?~cQNsgruR})Va z5;s~@T&#&76w9=C`t$|dl#+JL9l z%HmR)kFvb8MbEPi7x}2(C7jE-h>lyRpnDX( z2z6=V*=Z#C4xmT0=F_>+Kc`abo-8H!ZbPA=f4N}?z{oUe8H|2VRdq?N~ zx&kX67rq5TGS2j+(7`2+)DoTgk$RKbcs}ba<-O3ytt`-sTA%~ku8DU&M1On&Q67Z6 zCWz}6{h+%zjaINFrTpPsTi)s~l60p3$~Ko!`W5wsTfARGtzOC6uH=?hv*oX2OUm+P zA4MkSif1QbPXegpoBYpC@?&0pc2Y6+4g?o4Y+=~Oa0A0_45NS*BF^bc7+wRYi)R3< z#WgNU9|fGolw$18iIS_$oG=$x>n<%`AgZ)yCoLBB+S>)KfH#!3A{N#msyrg5hBsr5 zEq7fgrfc^$Y!|b%J22ZnA}T>&pj{WR0^l^;c!-T2AAxc29QVutsLOSCr|9|C;7u^Sr3 zvFa<)Y9>61?>zo=(o49p`_Qzv#r>isc%j&@-BtW9;4<%rpl>jAyhhnDL5JjHZolgq ztqWanjrM+^4)93vbilt(BRCKu7-7o!lI}YVlsh@y;wA1of$6UO+Et;YuA|!8;)(_lv7asjj;k=wFy4d)}kHh&AVQO)Kkl-LFk7Hj%!mY%jxMz+eb*!6TG;bdt-bnT z*PGhZ#@*swtvL5NTm-MneOtV#>b)@dH`hJdC0IL7*G`na4fsXxyRKaKT;GSTOSCN& zIa-x_LPefd@BU3;Dd6_pD!}u6b%0BK(*O^bxqLqL@ z3a!(sTsc+4=*JVKy(sgMvdxhE4q&e92f5odYW3SL$`wcYKP$FErm^Bm2)TPyo9C|A}zqrEAf z!CT`u1(o@xnCpENl)2v5wLx)t*|1n7Hli06iIt^qiz?So-MQ{6=v?g1b>W{|aSysX zO6x&+D%9xS<{m7#PAhTURHVHaBGJbD{N+lqbS zu>1R=x!M9AJFT$uVi9#O@?PxT&*=?Je;4V?+;OB2xZf4wDW3&A5yDt=|GnmB_dV`6 z8*Xzy>Uyo_9)>@39~BdeA9o*jwTJ$<`+m1?(u>G@Z!y7rL4v`Y7eSve=@rPdRKL#f z15p0x_IXxwOILGC?|1(`ILY&fdu8=hPZYI>0M81{@;vHZ<(-H0Q&nero`cO>kv_9* zwdb(wbK!QRE2eEhu5Sb=*VcmbA>T4-2h#CralnZ+6(Z`o1h3wru9x8taaaEI7u}Dz z&kd3MRi(24e-K;^`0v4fls~Tq^Q3E5SwG7BqBa$j88us7&$-rxDkz*aG>3 z6&2!L@vWjgo}=!(>YLq1ppCXQ-=x$K%2s{LMyLYp8+_fq|@Q%PwJx8_QqlBZ{I}DGw zA44mio%Aen&19?I5%>*qwN(GnbC1@i&DD--PX%5_t{*V`ufSW-;q58^1T3BUI^e}q zDg6vn9%8tXDDc4dK%db-+#l2tyk-i?Ph`qnL=iWXx^muhw=m@yP>yQ(9)f>&|I>3w zke-Lc-)nt2N43Az7UWQwWjTk$d(%jNf<&px$<;RI&gFD1xLb1DQ365iwmD7kkQm9O zTm%n^e-$>MOoE5R8ZM3CA>l)`Jc?gzq4cGp5M&4*5`Qk7fi%HGVs6oCNE4jy`KfyW zD5p=oP~78QV5~x0JX6=_+>hCsO1NtZ&b2(@qHa(QH0}nsxwsGTs!(4JSvZyRu6r)x z)dJ5T&Q9+at8lt?zxW~Aem`dA-Jsk9%01{EU2NhwcHA`!ynGNXWd)(_ncjr8VTosTx3;V!FT+dI_G0QxFS!RRwXND^o-pKG)hKm^9 z#c&(L{eaW8mod^e@q95$dlIp06VDo(IL_Y+t%||jKlRm|dt6sHzL#^q+nwWs&hJjr zUFC?te%B+e7mZ2!Bd+h3MgafLFopH^VfTTuIr?GOg*dy;bvIx{fzE!8*Zhs2MjepPSt{Jr)r!2hWI z4k$O`jP#KBD$ddmiBjKpK`Ct@%BOuq>GTq$5p+m=*)7N81NuGgS85&xd|!VOFg4-V zOnHg&R=t7rYc=oamuPoP*p6BIPmS9VOaD<9NAFPo9tNE1EyVmh2hb230V85B;7sv# zz|+L90Ovy&ygLzR0WJ|HV5_*tr-|j_PJf|TDgFk^YB4XjRBR9j{2JaX+zGf%d<`(l zFvc*>@F2K8oL(LPyj2{9%>AI0iYGuR6u%bdI_)k|HlBa2;+kEX1;3DlNz$Mxj0b8|O09P}2J##mK+l+tL>EirmoC78SYs3wJ zQ^Xem!{TnhISkJb_aeQF>F0%8($kZ2+WDCQG8NR?! z6mvNYM~iP18w=Lsm%cwGJ}-VEelAwIHo11VZg>5ct3}(UCA2--VeL8X9WCOX=U(sr zguB3VrRS`i%{f=++?aD;&I37*<~*76i=5|kUeCc7KJ<(9TXZZ&yft1gb`3??ZwS0K z(g8yuKj3ZC{n#nEu;aqXI{wSUYEp;~To+>Z)XDG}hJO=8`8=oJDx>tOiYQ z?y8Ofz7{0-?P;-mAHJ-j;XU3IKn*RDZF1w+ct+5+V!X-rfS!Z@u%iR?iBUX@vCq&! zrWUO_U&Q0BYDXl>vtEJN_ER zMG!E892)-3iyFXY{H}tAyA8E~Gx2^@6SG*~*(eV?N!;+(5R0Y*&P8qw??RgZ=OKrN z=rjv(0i;~`xA*2CeFmglh*xuwJ`++dye*xF^aYU8#D(DFi~yW^)cZT}S8b2&a&;&T-~ z*WmMMe7-I2c0DNm==!=C*1WDKv+-V&8gp{yGBXARm1L(A*%<3h?6EjX47QPFDrOp23amF1nU&gv@l{;j z6-R?J^JKLmL&UBpgRGi}+A_#WS{gE$SxY9dbw#tPRu<5_xlOF=!__CzYDV|A$5I3R zgskgp>r3`?ClM-TEh%(&cg&3S!HX=?=2X0gk#+sCzRep~i}t}}D%RWFwhpVjJ<*uQam#4c18k0qJ4 zQE|pFI+C#-XdLU>6x|_ulbs2(C%!{;;Mx~plHj7not9$D5FN^kWP9wA0kXZ!-?=N=w-ae{3@hCm-AAJijZvb> zjj?FwE=Z+0JbYqingM%vo3SLxV1UNVorbp3NYOa8D9L^^o=Rf_af{v+YZ>T@CoDATM95FpKtpnU zrID20#Jj|zlZCFuyE{6TB3{D1&W^`= zq+~jzjLRL@+2qI{S3WCbj4PvD^JJy;M^n4nd!or*n-Uvi{XNmn*w|9yNo6TCWh^&c z!dO<6=c4tfVl1!UOk9k?IzBU=T-Ux;4zDpe&+bV?Q_`Xpgw$n@u07Z#wVyRvDXF0oK-O+)b)beOD zwjPlL6!NZgW7Fp162>8)-4ojv#~^F(hfS4lA^xVK80Nwn#G*T45;xJ;2U~1Pv?m4# zA4ta9qunud9Yi~$Ju<~HglSTDYeHs{$<4_isTr1{GmDV^do6_8okq@%_aHv75YfAB zl=7had!mEr`*r5I@t&S#9G!^NOZqwNv~CZg&#puwwa#qm?eB@F2EeBh#tspVGV5XY z=*}1d;ZEtEvS`t<8gV7LDWTAHedk68`x6M7X~N2Q%#50yy9N~n-Q6EGW6Sq-vT}%b zdlI{2)*7R&w?AQ`fos>V+r;J+1AR#{YZomxB!$#Wr7^NXUwCEbe?=@s*x6>HS5Y=`02A#n zGWgk(jx-KB39NJgk?1KRMp|BuBWEG#X)Mmvnu6t|0+Qa=XHCNxT~z0$c#0l7J5?eM zZ#7k#W)qoh+@;=nYl2ZS9qAe86qz=+S<+e4ks>>l6&?0ebc!O|d3Lgjm2;Ja4a858 zktZ)pQq5%+%5#~8IOZ~o)Rjol!WmtrDB~@Lm4&Q4%05*#wEF zsE;fb4bJsZiXtlW(m2*5vYfVFmE1WHmo#e$*OtPp*10;mBi17sm^B?3Mi!j6U9HC) zjAXnkh9R72>rC`5P4qbP?8ro|nw*(wQg+}Jla|G3x#A?MMdrqM=PrtB4wlra$5whr ziq}E11(>;6t#sp|qD+(0OH(p^cA`(EIQpfrcwcv7M`EAK!1lw?ZN+MWHadfAqrEb` z^-+SX-HX__3(JR8lmZK_%p_^EBizukHEN>KEYi_0*B}y!CsnWzSlo3{6cp#us)|#H zaXW~D6{FLSAWB=E4ARPIG6R=uy1t#1or3YQT`^h;o}DnW;>Ss%wcrd8CpBr&ClKFw z1=-%2=#OFNXQr@M?2*{Ygc<(?jA-F9@=(OX)SOHr;&WPtZcfUm%}MG38cNt2GVYjO zoVZ-GF=Y$wL^u^q_ClPKaw|zy@(^@pU7bkuOBq>>H9Ig(g=UeWtk_p^If%;5%dnca z_ZdjbRpPoHY-W1ntK&OZfMyZQJyA0r#cYM;1De4$-Mb6js3v60{wW!gEdp)Rth8!8 zOhwC(rC5G&0n0GgGSWF6K)B`*fVoLN&yB`Y=t7z* z<2}49>yTCyYodJv(H@1Y>r)A6sZts1WHG?YWp4jYteXY4i#$TwQ-rPSqY7vNjbwW& z)}KbnHf#pD=%K~JUUF`%en_L3$y+vBiMOP%DcdnXWe>z17_aemlHb`9$h;+4Ca; z#IY)KaH&st{IHK9Y)Ay7KqmIk*iw7q^q#E4+O2b@DDO&D6yn7&!k%*Gc5ISF$GP!7 zPSDWqRq2jh2yih|3UniETIrS1o^Hft%1H9v6pSr|;whz9N0X^GY)|*C>qa=^f-tKI z2va$fR3{aicHu;#3&WQ+?T>bGn##4(WPo^5_7cfChCD4x&yAXWMBa?`XlJxPM#D{h zIP_Z*o22gvw%smVGj?W2j2-wp@`>{=lme!?| z;9TiM7aGq)WY{SIOmlUCDFfpdp}|DVa=K=R;VTgR|L; zXP(IlOul?Li`7M^iDNJfUx9+GiCHX-Ve(I7RB>Oz?3F_Hd@aQsxb!KW1l#1gj+_m< zXm%>=Jd2lOiXmwK3DC_!2p2l0tKq|p$wK_=Sw3@==F^yC0Z8)>UY}z-#2^kr1>wNGOr& zhEe2Dv5@6`1Cr7?80}-$P7`Z-OFg-~5OhK+tQieQXQU*;G^x_p)zTB+DYIhIK{v23 zsU%IFI3ePKX@n=zSkfXRWX5S}EfBss=-h%&qOullYSO|lw9;bmBgJU75QV>fq#zkk zZDXuqZB<1qj3x_R6TLWLrja<@%R*!qS{P-E(>xRJ%4!403#Zrs9YtCMSqgWtxZK%VN5s^rmh%0#bOSogMGEQ9gl2AY5kEj!{Fl=c`MZ>;0h1g)@EM+XxF zDTT}Z@6v%(N?CziM4`Ntq+O@N`xE^G{SMJoA^}ZI2W5vWXCop64meG93c79woz89U z>q_9j45ycE*bAvOsZ8<_0w>ivm(%Gt474HS9-=LnXzPM&k9$BsD+P4~EU>WXcH+uE zC~M}fg(%jRgwo_w*w#=om0)XHJ58Q>nU5KmIrKziv^Fp+aPHSH<6b6d1*Ubmp6lD$ z%CE252Ya!fO~P+vCV1ONNVG{m=VM737-h~KbWZ6c(CK483{A&yICYQW%#r#HiVpP3 z6puEh(KLvv!Ig&uczHkwoet zr44Az4>u89%uH5NI?~xV0RUa@0kP45+oM!+Pz#}z zIB2q3-tNk39ZBq>tX-Pi_M|a>%c4R<>r!mZx&1NuVonmUu(Ie`kt~axg`$OHDYB|8 zy6T54sueG#k0ejRl?7(YU`x4^wvd#GS6eid5YmMY4Uv|<&Rq%FSo`!E@4rAx!U4vk zAsk_5O4&jwlw)I^oSD}@XivObMOj#ZUM!}msXtvH zMi}`wPI3{uMKhhL0P;hPe0VfR?{rk*7n&H2bTaQC$~VWficj>Ri8hA@gX3L-47B#U z1#1?!x=MD2ST=y!q*o!>5h!gef~*ZqQv`Xs!Y+r?NcmjLFN@gE&yL1>;J`~`yP|vI zINul8OJI{bKF>P#NBFceP%98dZGzg~V1d804<^MMJZ_mh(_Wf>n~_YPtw)fFby)|PNyO+> z*1JqTDpPCRB=#doeh-qAdlxL3cEaDFFFXc=fKT7>=GfY|EZ>KT3o^25TCr0`I)ae* z4c4mTSL=p>Q$n?DbN@~{6i^{a3ZOEX=#b+(<4_zmNH@qH6?CpHdgb{#tpcsnktFU` z^zMLd=@>DoUcM`Y0xXul{MG}F;+qRS>dr*EA~^?9qZMB^<tA^xQ$KZ#EYC1#c}? zW!O)4C&f|>Ut0Y1M0Y0T#!;Hh8fqd+o5}X{W;7`$T3S&{Go%HnGo%gDBwELl`^Zr% ziX6i+~!Z#&w%qjg_QOMuv z=v@wQWNzz7+5mjGTcc>@i{t9f&^Yz1JWRNtT-T!ciVK@&qp$dwz2ksojb9_ zP;(%+H`&(B?kH$Ej*X;!`D-yBJ|r!KYD3dnt4( z9Xa7Djoe5%a7;R62OeE;Wp$=$O`dWAWf3JN*O%nsD%Fk#tE4h^#+=Ir9*p($B=!m% z>)L^KWo#b^&TvPRQyrqH(^~1HNrdN*I!+mz;Uf=L#%38$BP^uG3ZCR_XI$Bn>M^eL z%2-eT(!@SCC0=++lkyuRm`~uKljaflAwRn0@|#u!3MVGNj~I7{zc#TEo0+a1iLOEA zlIO$*xe9VkdQU^0y?kG+bAVTI7LkTIbLov2Mo4=n!u7g7h|?huse?Bzh=?fFdLt_m z{T<6M!MiN%Qz+fmhv`~k(z(>+Pi#q0uH=ZDX^M5|ViCv>t#n(GZpyARm-qIgC`3i5 zfP@fDtzsQ+NAAThKgIBSPt9TtzD?eRZ)*1dPXdnu_JR__??H($OU9 zw*F-0I%Q7TQ@xpWWZQa1RzGLgmo5JhJv(~U|Fk-1Lq584r}QbCeaRxR178iu)TU0f zpt);6T`tZRbr?Kx9#VDqLO~~-zK0$EOng0I2wzngM*bl&3(rOPGJ?%t%s7=^Cmv|1 zgUoEmxC**a-s$*nCjJuz1c@RsE5%q*C!8}1$K44>?GggGiBuG>D{;blq01hL*JidN z+dV}?CVza_6SKybI=Mx~jLaM#G%zVb@3n<_h`u^wmxw$?nH1s8#TQdRZz4Ggke%?f0S@2mk)nR@X3y(& zmRli9aoP;}&Z07+$W1|d;~2fVlwSB+HA+r`FLJ1M;U31PS%}fEWOkCX_+|_XJN|D$ zW}E{;;RIBcuD%=;nq5rbd*Q@njyi4#xh{1NHE$_&k+w%E|Mk>zj5e8M0Ux`+yi%PS!(flC)e_;Be|{)tMnbrfsL6qHV-GS=;P< zRy|{NcFH((9@93vo(x^bw9Q!_t;u#kKS#M)ZJUb;;bi?LdE>XuneSw6%an2GkkvM4 zJsG-YwJo!}aoRR7({ILKe>Ed6$n|I1KeAS=L>3(RMkr6pC zCuOHKLTj9L&%p1F;Q|8Lu_%)xyebO0&k$lT)5di?SxP^O!Pa#sftE-+;NLyK`~Z5Q2lAVc6YrZiVz1y?U;vR0T8-`>uWFia?RC({uilLrxQ!;m*q9}90E!s0{$}Y3Ru?AR=GCR>)Ipa2?wbrh!KZ7G;_PW98zu8OP zOgwWor~WuuDazMZtbpBdh>E%`Z*1q@lGZ+(J+t>C{Z`bq2MOqO9)(N5fV?BP`VH-9>ZSdW8 z#6>BWNu7;6idiRg)! zpbhDEMG-~ocnqiUGU8^@IL8LaQIxcDq;W@%G_8nAp?I+a^>kwOCrfltD(re3RL&<$ zF==$Fd=82upM#pt7e~FB`4lB9pQ3WhmSd&W4;x!8OXH4~rD>dF8CqphyOj0PxFbg< zZ8_o|ooCVB0r@JVJ+i1(woS4)TOVs$YMv#mdT=txk@vMz@9NJPZ(Tqklz~39P z^JLEfT=JP8Ep>`IYO{}K=m=#lelcPuejQ>l;?H>ePDspx%y|6y_`QfZ>X>FcJ{{G} zhs12O6#U?F*o@*HMYTE{9#LFF46NFSn7S79Hqe$kIs4z)gspKL#;SvRCD6e%geb_+ z0IX9Sc|PS_Tv@w%%ON_IsRteBO*^n~7&~o{1J%KC$f3!VX!2>sc}NR7i8l0dOHRk6 zb;wVSPaAu3lO(2i;dBlr&%LN7c^FNt{6FoTON?AqddJVb{iy2K zwd)#>d32jH#xf7vZDUUW2M;#x#=X~hwhMIE9)4D~B+lMJ37sosV z+>_em8Lg8t#JV-GuAWw_g@m|ebSdX`HpktwqKSMjy?b0=p9kRR_g=xVK-EeOXsfFk zR&MXGpY5A!BUCt-VTPV9Y7Y28KC?)35xR%9-ZTv=k9w1GP}_hxjr+ldpkdJ+!)jR& z?QqvZ^F`xW?T~1H(&s!6$_)&QCpyilUQehmndaApm#um~+rvP5NiD3+JXCIK_B{R9 z^sWTUMY!R|JwGhm%(}1@fVbdsUjarnM5}(@?EA8QZ1ibK71&YxVd6%jOFow4JX_|y zrZyuRj2258gq8#xvxO4E{G7xxq%B?z>6w$m>}DtpHgN^}I#XVhJqVb}8v8j@Av4T2 zk}4E&1(i3743;k~Dq+$55P2Hb#Qj`h@65h9EMqV-6MRuU?HvXNGaF^9VD_DEOIqJsEMnL-Bg^7~C@A%+?2P9`AEw%zrVQx1FtfGvFcvZe-z7cpmWs_|8^l=U^ukH+m6w4*X| zM`X4zVO6REd^hx%IQumWyxvXv_pa|BHbevPC~E&>ZYRyE6XH_mc}Wv=TR#@Kd2_r% z2#SMk#4;hYP;ChUw53dJ7Q7~N;5n9Ljcl>?HbE92R4YMY1j`&1CjzlWY%`gig$6Sz zGs0=fFCU$3Q4fqmyzUHHdva!0N@g{>@+{8B_c>>>}-!7+%s+PZam8FlT;h2I??v4}^ z6pt5sE=fts&Y*a8Ry@7xsk0Qbhqa=d#Bh6yBR&f}k`x(!ifoGM5}&@?0|n}b zIw_k<%86CiB}=8>r`6g?I8~DUjL97`$pg4zPA#PKNh(dN*FnGWI+o##v7>#elf(+C zql}8_o9E)RC_kiMlC-Q8Vzs~{yEdQcU6{iiHa>^XYzmJ^J8yo@XEYbFFvSqBse8*1 zjfw!bEYYPBU-s;W zWLMBB=*8FcoVAi>4f++P9!>{PfKHgzFb!AY`}$LaP;kl1DnysW1=V><#8Tt9mjn==F! z77P$pz=#X(WzE6NI?hos$W3hnp>I)3W3PJh-c4F`OaL*f%2TOC5&7iBC?PC

Y{$x4Y@J4>gUBBl3VWFbNa-n5dH+I7iDar8b`s%#&T{jmrh9EVYc%yE6BkP0%6Yi zb%!iivqc_~8f6X4kDL*7nQoquJi;zA>dl{ zVA_Xlykzd45%tugCl!Q{G(4?WPU5^QNve`lsQEnU+MpBro=QxJDoR95X$$oho^P>Z&w-44VOt#lc_FV%P(;u9uP4N?KPwXH`5b znd$htBP9qudMsgmZKK1s!BT(4d3P!?y*Uf6!Ya8@7*($K+G&#f1a#E;yKazXw5qX+ zwO;=a>+-O!7X<~##XjXYW{bp7MEV!q6IHG0FZXort;|;>r^?JKw&nAK*Cqb0<@Lz* z)F1*v>;!h;SD-=Pt`$`o;~WA7%V)nJGe{;GvluEBBvWv;mh{0vf?_#4kh>BKG&m4a zU9Q0qFau!=@yx82dwCcCypk%UPA~*k;d;Yk*dN#I+(lU{wTf0wHqIz2Shwm~}fv8p?J>K-JW zOj4X$QAmn6WkINSTFomQX^URTujh7vaTY$aoney@s=Z`%tPo@MDhqYdLn=S)TJ5Nu zSz4>FhNIY(PBNb)~NTCLKv1lm*b4>WM6T){petvVL1ZVK;l4n(d%ujX%d0bz9=XJyb zw}?g{x#gr7-8C)w;<8Lr(ZG(;zblxyZWH0wO$qLTG=hB@(IrlKpCEn9FH9}^^|sHt zq&AE^It4s5m^LVJdx}n=JG{FI2(3S6?UyaNZ6_f+)QMnND0W};48g8h66ZdR4pD?L zJS+-ME&#>)ne{HmEoRAJV0kuGb#z>m@5+@6%h3c34h3YaWNw+ovIglNL=hCsttpm~ zb6?{g43;amiA}|~7B`fO-EL@FbU?402=6d07A=vsG3&^Itzhph-Gz`8V|1_z1!uPk zK~fMdVC3n2Le_hqT04im9zW{+3>Mu^7lm45?$>}56oOtT#-v^;m%0aucTi1uwNLmF zyC0Hi3#mMl00rEr{SymTVKJ`AgaXKJ7arWN2|Uk7GR=efk5c7T|FG_#RqJb-JcQr2 zKDt-O&Q1tzL92O+VmT2t!p+0{Vo8CvKromGRfGW{lV&*x@_4o zMTE`btZHrn;4GV?KxcVI6K=6!s)cppNx{Ieo3zUd(l!zygM%WHQ3+*S7E9Q6nWrvq zI<*8RSwsOgg&u+{GXXhN;LxTe^=QE6Gtboeh^g{=HjFDyhxo!Y`C%9=T~1KdWE%N4 z^7@1#aEo&g3G6fxoO6#W%|z;pq$ep)c5$4D+M~$!X{~QkYmDI}s=MSU%LjjN2)}9ar*N`Gb37cL`w_Xk2%4FXn~DbEX7vb ztqH3J`-~mS`m8GE=`EQ>nKD$>SiXF9zX$Zn25;GZs&sS*Ys zs;_kF9sV1?cqdn>qEur?OCl2nX;ZJCe?IsZZ)|@5wtati|HeQ4lXL5ya{bLHs`sh* zGoUw(1|Jh%;=yKLl*ILc)#>FZ8B|N!`p)3$wDn08_c=G(KbW@12AXj+e!HIgn6?}C zufGT@)t+PB0b*YkhHgfGOfc(VzpoZ0HP@dcgUaZM8?jrOhqflLx11!7~vwRm-7F-lLQCxq@X zy{R`HEvww1UFdJ>0g4`*6MC$rI>bUGhW=Gn`M^$w2K1#y+D57tCiQWt6vUGEcpbqGl6b$w3iB23psm`mFW zqpm*|NoUgbxs{{-iWnl6zB;fq(i{UqsrAFY!E^!I(^u11Jpl_zqt@r;l)sFwjQZBP zm0-5k)rKQ~MUynzZP4%-Xx640-V!eoNk*(~zwJfcXnzlhH`?F#e_Cz(^p^ekGeneV z<_Y0FSc|0?`hT7(|-g+EF|8m4>kLvdcD#9VO-O@QT^1! zdM^1{uO+U((fS}BOH{^=_*2OSb{qZbAM+07P8x5nlZAu4{`_*72f%?+^qeqJ{7vd#MddZ*7I`)9J5N0U+Bjkp258_nLUPhvfg#HS-#H7p=H zirXMp8*I!rW@BEMPvp+ju@bZO#w;_9j@JMFTgRWhW5>U}wYKb`tF`8P%a;i{x^J(w zwRfjtR*G0YY-Uu!E)S>%Th$8n&Kq@Kex^<3p;hwARcSp)w-~MTCbm4}YrTgok5GB| zW98vDVnliHQ#TrXvsm1dp9os+K4L3vuKZ-{ZPrje8hm@NMh^0%cAkjYvX} zV7aG!(KMypMP9+l!1EIGB4h3PX^i9uWUX`)pTTrbJUBKeqp6@&pRUR>w65vR8-0Tl zG{{WL8tBb_-u#%JGO1Wu>=~>7Fb{IcIr+Xf)kZ$8*j!c3Tv&yD>$0 z)!3~lR?cfTujwAlpG>U~Rp1!=OX)dW$Vrif;Z~MvCyp|Bkvo`5m>sFKSod4&Rqu?R*~aZd|V1 zy9+&xJ<4EzjOmg)Z5p!mnm(pi6&U-!L{-1=LOoZ9@*!q&yj zJ5D{aZS%tRt=l*6IJx76)7u|?XvbH#ZPV^1a(`KR=RfY)`0-bG!@7@_WV3-B%BUY^IZ2Gf({7f!x> zTn|25)DtbrSGHU{eG=@xTtBmSdbRdQz0CV&Z~TrI`Z+hRXa7x|J$pd+?X_o=FE08A z7BTjJHwebc-cWwi`o(Y{@&dVCW!LijSVN~%wcYLXdrJSm-i+KuoMHBJu}{X#J*)c8 zyk0q-%Qq74nz{vK5MO<&Q`&jFaql>SG8N*#mD zEHw>sjGTn#=U&ICqq>UMU()rws^L4hzwQ4Q0gZ$cr-9F?*NZ(M{gv;-y&3FxhblDU zfxA;9Bcg;Dqd$j zM=pw9Fn>{1DEYk}ZB6&C7XFmy4Vg@&XZ301Nx_z?7Dp2v5>?#sf}aO8Q*kbn?rDt; zU+@bOaKZ@M4rO=%59|Ve`DD_#85$q+vav{z?_5x}&bb61mzT*7FO%}vs${BidBl$i jnO%+=+L?kIjq^;pl^3OoMm6sDcHYY1-;DYH&Vl~}GWITt diff --git a/Assets/TEngine/Thirdly/DOTween/Editor/DOTweenEditor.dll.meta b/Assets/TEngine/Thirdly/DOTween/Editor/DOTweenEditor.dll.meta deleted file mode 100644 index b3a9618d..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Editor/DOTweenEditor.dll.meta +++ /dev/null @@ -1,33 +0,0 @@ -fileFormatVersion: 2 -guid: aedf8b6f17a988f42b54e472c2309147 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 1 - settings: - DefaultValueInitialized: true - - first: - Windows Store Apps: WindowsStoreApps - second: - enabled: 0 - settings: - CPU: AnyCPU - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/Editor/Imgs.meta b/Assets/TEngine/Thirdly/DOTween/Editor/Imgs.meta deleted file mode 100644 index 7b5f20a9..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Editor/Imgs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d66e1c8933c8a974581d50c64ded29d1 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/DOTweenIcon.png b/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/DOTweenIcon.png deleted file mode 100644 index d06fc7c3e49fb705b19f50a23884e11e08fd6e89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1565 zcmV+&2IBdNP)pK&q+iZU-R{R_dCD)yXSsA=iKiWUaHS%xglyYZad)#h+<5;*}0 zNm4;#XNMU$Zj;|vsJ23aE-5O{$8uo1iN`?c(v%ev86gvrQJJtDUgxox^bsB@>w%Sv@Z{F3?7c1><;yj*g<&fQ;rHj}CCd5!B9uJ9iB}?8sX9 z0l}mbA`+6NSzvKr7orW|#Qq*|(_H8{K}SN-b6PMMr68BfK|728UnV4rbuENZG2Z=Z5Wu9k@Z ztFhSr_^u&Go2vR`!G?lmnDf^U%@^vc&8BfCWA&5;S^i0KcuQ?}kJ(Z3^ukf69xF;y zhTjIduJg}*jhXlo$g+|CIjkSftK3odtF^Ij{rKV$Cnn9$)I>`OWpR2BZvMLfc!?KG z`Ygj57^xT!Rkoeb;;a>--p1*pKcW45EApC=r9;lR-6-kL1bPPs&3JrJ`3>IVgWG}u zrp-R@PdWz2X;89OBJXFclQSuKH%hu+=km#Rb8S^yF>)=)yvW|npJ`O9bTXp9hsHlb znp{n43g)Eywa^bS0=L=}#fV_6`pc{T=00UOIql`_gv<&0h%GG1sFbh_*L zqP^;2G6HL$uEjx);7q^Pe;Vac1Sb6of8vi>KZaIU-M!xHLy7h)J?TTTtlXuy)v(S-r9V9I7cw) zBJ@dWbWCbJy!KBwxl~8X#1q??E z(FRaBcRnf^OG3xEWE{XiDJhYPVBV54Q*B2`fK%)r4bJp zv@(2PX=l*%^bG!@&}Ku`gi%4ta5WNM0#2BfuE7?N_gS0ljFV#0yW1U1N=~9Q$*7V9 zs*5|&bg|QQt;WLQDrER5jfAhm2W6wJag5au!96_|(2Th-DB`E<_rUdkM#GW4COG!3 z`K~-?KL;C^l|r|5RUE^pEPvtTLR^K!B04D#hpLNGOCz;*Z|Rx&7b{!rLVU{NI)eH5 zyg0@a6A$elUi>gA6@P$cWD53gSzVnTr*}j6sd4;47Sd19E6U{>QXP%UxLJ2^hjTS@ z6ZIq2+r)$@>IAiS(jN5U4r-m;p98e&wn5+}NTri*S7~M1@c0mh@Mz$FrSMzj$u5?< P00000NkvXXu0mjftl$Bl diff --git a/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/DOTweenIcon.png.meta b/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/DOTweenIcon.png.meta deleted file mode 100644 index f63796bb..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/DOTweenIcon.png.meta +++ /dev/null @@ -1,147 +0,0 @@ -fileFormatVersion: 2 -guid: 0f064174735833948ac63e0d2e3a9b30 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - ignoreMasterTextureLimit: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: 0 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: Standalone - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: Server - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: Android - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: WebGL - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/DOTweenMiniIcon.png b/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/DOTweenMiniIcon.png deleted file mode 100644 index 7cd74c1a26df1a45564c7a0e21c62d0ef3af2fd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{!3Opi<85sBugD~Uq{1quc!H=FU zjv*3LlT#WP(iF^Cl2R3(u|Mi}s1fft&-^joZ3WZ(2Ug1Y!S$8-a*li}_21XqSnvJ# z@Y+`2=i8W`Zfg*cV81TuZmqUr`JI~8M}9x(m1v%HMLo`ySuokJ?%Vq7{C4$+ST-HH z5`RuO<@s#=8XoVy+lF)YEaxg?4vAr1(jlM1>Tx0PF<0}pFUf679a{7Ee==}5`qQz? zuIUa#(3byge21?t-^6oqTDwHc&iz0s`zDdQwtGKbESsPtIM1KwqFB4+nW=frYn!|7 zvs(U9y->(A=TFZ3t)>6Hv^;B{u+A(fd3smW;eIaTDS0KOITHVv7#gf%Y$mkMJ`MCd NgQu&X%Q~loCICTRfS>>X diff --git a/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/DOTweenMiniIcon.png.meta b/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/DOTweenMiniIcon.png.meta deleted file mode 100644 index bcd3b3f2..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/DOTweenMiniIcon.png.meta +++ /dev/null @@ -1,147 +0,0 @@ -fileFormatVersion: 2 -guid: 8b0d9756c3521d14b92dba857a7972f3 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - ignoreMasterTextureLimit: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: 0 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: Standalone - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: Server - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: Android - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: WebGL - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Footer.png b/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Footer.png deleted file mode 100644 index e29d02fe18b777b1d316feb647b339803c5126de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4409 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 diff --git a/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Footer.png.meta b/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Footer.png.meta deleted file mode 100644 index 61c08c2e..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Footer.png.meta +++ /dev/null @@ -1,147 +0,0 @@ -fileFormatVersion: 2 -guid: 0734e0be112d0c8439af3e5efba446c7 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - ignoreMasterTextureLimit: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: 0 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: Standalone - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: Server - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: Android - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: WebGL - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Footer_dark.png b/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Footer_dark.png deleted file mode 100644 index e48db5ef7a2b83eff50d6e3b5fe9ba3bcd4a5015..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4429 zcmV-T5wh-yP)pV|4BqaRCt{2oC}ndRTam-d$}`=KmylMW&q7h$wvaYFsxjKXh5NY zB9jj^Mg|3ZgbTB@GBPO*luF(MISEQRg33b?5=J1f0`oy8p+q3e3=A`fs0_^9+wXtp zoV(6^e)rD6fVgV*T4$ZtKKnerz4zJsoO5r;JA!c2O*i!kg+dQapFaKEBT3i7h!G>c z7>~!_fPUy`&`$+7-+c2y=Jlm%)240kji+}k7Mnd|#*9u)?Zd3y3%=qp%=Ka4SY9OR z?UvE517q9S)G_=&L-<$^pc$Is(*TjC5!HwCP5<8^+lqJ|{k>w_78DeGj`|@a+YnY#x7Zm= zHvJAIoWK}<*U%aaA3nT0v<8u^%FN81`N$)W>}8H$C!dW*pKtLP)1{1K7k&NZP}aB^ zjy^PLN8n?Bo9IQD z@Zd}(%)AT1jW=b@o8jm{Q+EV0&yUf138qHliRms^8YUb@^g(WJ?p4y}ghCkiowBmB zepOXf&qkxs88Gd6($WVH9=sCVSEfvv@-__lYtk=c^9~ms1nO~UmCHYHJI>0=8c1Iq zq5pYk*HAQ-wi1jxN&nEGL4L+Bl#rcI^i#qTnDLjy)9K?L)r}lE@;R7(a{m5l2t(tESBvn6~B*tw(-_R!~FgNQJf zeMGPOiZdBoSGRz**y+cs0n&`G85#ji6$CNoTASe`t$@iAg20EpfT%OfummRbh*f+% z<>wa{7cZi0w#*O8UZE_X^ejWBC!sy{OASp$@M)|ow37@#o1TOM#~bqKz|TIv^5cL_`u-@ku<((E8V)2rJtzTuGl6=5}PN{ClhS655W zHeova%k>jFcI>zSbE|-U)?&v$O}ZDwHE8td7Kc6yVB{S7X-QgwaFH4J4;lBLshcm2 z%}#Iw@gHW*npKGa%z@T0LJ9q?qMiJgz+J|`9t26I-VzvIg0~j`V5w7INSFFVXlr(3Gc&P%U}j++JxUAt%~D#8BFkbvYTL##jZ^+Z4M*%lvZ|W>O=@3 zx`K8cp!*M7Z%(4VV)NPswr}6wmwwLy_n!#I3zj~NsgtMg6EwaEJIXvUy6pqUIEv5= z&YwM6~gGUg&b=S{Z^0 zrH)P8w{L#}LU5msml59E)8VJMS#A_G-z+yBntY-5X$6>LHyZuGvFe|lA&Z@4D`SxM zzPP~#&2UWNe^wCCkiCv&|GHf!%J`)F&Ckz25i{;&b1N>NX`Ak6{CFcrjy%n)yH&3T zy4hFE4s{B?PdiM?@|iPdmb*BZuI-LH?zmG(?gM|bi*MWeq3z>~+Gl2ZUkt@VS+THJ z)#m+H8@A+Mlr-mbD1p+bkuT`BlbKpxUakWRucD&jt>WV1ddkht1C#k}zv-zv7{*kQ zot?eY(g*_e`#&oP|F4jlnJH5+aj1YWB<^8gvTbA^z&x8`@%Z?91<)segf*8R1m|iU z1dzVW*T=oo-9d64;e6BAILd~2K65)d@43zyvDm|L&(kxUh!=``x?BIK%?HW026P7{ z^RC{5O?<#!@;wu@qES6#neW!qrw$`}gQNM3vgHz>($dn`PzJxn-y26@!{J0mQT z8n;TWLY>q5VvrU&9Dx3vx-&ppE7IYO7%?IbybXM;H`C#z0vzenaW?Z9|EXl(gI0Ax6(0$oK~GC`UjeNWH=V8x8uLun^#bsU8ru(apCDS|mN75gny1um21nmcZ=G~( ztefe3DVxk#b6MY?xVY4J3!n$5a{d5T7H;;e~ z)JM(k(9=)H;3rQe_0j>TbWbZ27ix4g1%|mnfl5tUAM8Q<1i=LzZKfKyePHGSG`snC zmms_#(Dvp$U<(Aazy*x|K^CGfW4}?ti`KoHd{@dZG7kei${$oXl==AkMzB6+^V8Rl znBznKaz8G8FCh#{H+3Q%%pzBT9m)ZHRKb*b-nM@xIf|9~~vg^#V zWIadLt*OkZz2t|(1TRo`A!%(f+A0T8_YwK=)QuA@^140lr8hg~xw54849fLD@7I+7 z%-_G9v8=4D8E6Atg2}9TUeB`q=lB8^NzWGa#Co+`E>ny?uCO~DsOf<@4C|H#Wrd9sIpa-|%8cKd}m=UF)JQ^`x2 zJm*7gV=i#-qJ9Fq-qVa}pV9n{f^<(TJuv~D^F0G#h8|2oaaO5 zPeB#*v(h|s&^UE*mat2~pU4>Z2t8nk5UZWj`cXz=rsa44}`gyOOHZ4nOgKrf?3nGF?Qn+wy8nX$@0Sfh(j z^E^fCIWWLVXk{)Gk8I4sF@8B?9AWF>3V$+Ckq7 z!zF%;fX35v11-7)A$iFIbN3>WFs#tAmb4R-T4ZidlXkEiGa_lv>(K&T2s-(YgQVA~ zLjs1{3K|ET_S&JIa^~?2V;kX{+pYL5wVIFm(9;jV-R3K4Gg%4d`(>gi0`VK=5r%cl z&##eOm`~exOk2(GkUxqu&N0mAyT0Pn4wF`Aogxv}v(II^`f<%Sh`>-{;^lg*X#5-b zLS?MQ8U&!bz9HX9>-MqByimOEsZA&zI@y-R;-Qj|PO3ujfu3{169lpzh!RJ%&aS1t zqU_Yk_gpUUZRYZAZf9Jh3knJ*r(F;qr2E0i=@5KZX_&YRThB7$os>->bRoDx^scY@ z-T;!)99rB7HbCPn%C@;klxs^C?GYBwJl9?&lPO@Fn+fOGJPiISA4ks}bV{I`+P3~S z+KmvdmzYl(^e0htrVqt^94CRU@ICk58Zf^EFsIF_>JAl{mwu$w)eT+)CpBqkC7#DK z_mYNiSwpK7D$Hq-+UOWl&pn=zDP#@^G~ZT1G-5Tidf6Mp7`xJz?aJ$4wllB)GR&oo z4UNJ4;!oh>+H}fyTeQ=Toyk14JM3wwpJcnBLcO8U_RivI3lwt}kzXV;0;&5t<;A`x z>7FTD&^9acsvk7^DCpN`(DFai)&k2e9PQv;%NWMlpJCSPI2M~j{ZK0;@*{K-VopN> zPpW7$mwxBVL`yNBBrpyMd5+Ji?wktWJP-d=f%(~}e(1E8b$PiVeEZy8=CCP}Y1l)* zF|li9>nIB}jVi7gAZ4-;H{rYvPc6RVForDws)S$i>_HCZrcMC&%1=qvNZ(z*1SF{+ zhBfL?Mqsu2xh&Rhlh$^mUwP>jrDYH?*@w~uI3g#*9Cro0*-s1D`z2`L{cLLwz*P6* z4D04|u{rWe{yT&;5My};ftZ+|pP!eJks%Xp8hMT3B|lxZY5npoFEcZ9jec$kz4d4` z39=s4$t0Q>FdY4sIw4fI+;YojG5vnv+u@Q>SXlTfbl+y|;|32Ne0Tfy?PV%mN|+La z|0#iN<9o?}kr^TFs-L7@>qlg6?x*FW9h^-z)MY}(CscVeA>G2Vsrd7Vx)Wu^wT zhd=Lu2jpKw)Ai$mc7!)!ic95fE07m~LZt6yl&yhZt_$qq}LVicQ?svt48^OOrr#gIe?RIyQ->cWKa-#k7p-dmH zTQnNgZ=c7LpJ{24-|Enn$yDLAOVSFWdz3)WAzIVlV+74zzQIpe)9(0hTO7P9gL}Oj zSdSd9?t-^iYn;u{1nE~k8M z3$NBaR^O%fVM-8xQ?&S&PX^3yj_SZk{MN+0{N3du$hoHe9y7l8189_+c1idzW*92o TqmFO~00000NkvXXu0mjf{EM6C diff --git a/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Footer_dark.png.meta b/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Footer_dark.png.meta deleted file mode 100644 index 79f8c8e5..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Footer_dark.png.meta +++ /dev/null @@ -1,147 +0,0 @@ -fileFormatVersion: 2 -guid: b45c9712d571b6a4cabd39308714c39d -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - ignoreMasterTextureLimit: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: 0 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: Standalone - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: Server - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: Android - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: WebGL - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Header.jpg b/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Header.jpg deleted file mode 100644 index 4d710d719075150879b1ee76680af87791c4d3b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22787 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 QE#Li`lK-oJv9mh=KQ4fgsQ>@~ diff --git a/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Header.jpg.meta b/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Header.jpg.meta deleted file mode 100644 index 0d6711a9..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Editor/Imgs/Header.jpg.meta +++ /dev/null @@ -1,147 +0,0 @@ -fileFormatVersion: 2 -guid: e63414f88c287614aaf399d82b16dd3f -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - ignoreMasterTextureLimit: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: 0 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: Standalone - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: Server - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: Android - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: WebGL - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/Modules.meta b/Assets/TEngine/Thirdly/DOTween/Modules.meta deleted file mode 100644 index 26cb7d30..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Modules.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: f90a36fa01e48e54990d241610369b67 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleAudio.cs b/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleAudio.cs deleted file mode 100644 index c195b6cc..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleAudio.cs +++ /dev/null @@ -1,202 +0,0 @@ -// Author: Daniele Giardini - http://www.demigiant.com -// Created: 2018/07/13 - -#if true // MODULE_MARKER -using System; -using DG.Tweening.Core; -using DG.Tweening.Plugins.Options; -using UnityEngine; -#if UNITY_5 || UNITY_2017_1_OR_NEWER -using UnityEngine.Audio; // Required for AudioMixer -#endif - -#pragma warning disable 1591 -namespace DG.Tweening -{ - public static class DOTweenModuleAudio - { - #region Shortcuts - - #region Audio - - ///

Tweens an AudioSource's volume to the given value. - /// Also stores the AudioSource as the tween's target so it can be used for filtered operations - /// The end value to reach (0 to 1)The duration of the tween - public static TweenerCore DOFade(this AudioSource target, float endValue, float duration) - { - if (endValue < 0) endValue = 0; - else if (endValue > 1) endValue = 1; - TweenerCore t = DOTween.To(() => target.volume, x => target.volume = x, endValue, duration); - t.SetTarget(target); - return t; - } - - /// Tweens an AudioSource's pitch to the given value. - /// Also stores the AudioSource as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOPitch(this AudioSource target, float endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.pitch, x => target.pitch = x, endValue, duration); - t.SetTarget(target); - return t; - } - - #endregion - -#if UNITY_5 || UNITY_2017_1_OR_NEWER - #region AudioMixer (Unity 5 or Newer) - - /// Tweens an AudioMixer's exposed float to the given value. - /// Also stores the AudioMixer as the tween's target so it can be used for filtered operations. - /// Note that you need to manually expose a float in an AudioMixerGroup in order to be able to tween it from an AudioMixer. - /// Name given to the exposed float to set - /// The end value to reachThe duration of the tween - public static TweenerCore DOSetFloat(this AudioMixer target, string floatName, float endValue, float duration) - { - TweenerCore t = DOTween.To(()=> { - float currVal; - target.GetFloat(floatName, out currVal); - return currVal; - }, x=> target.SetFloat(floatName, x), endValue, duration); - t.SetTarget(target); - return t; - } - - #region Operation Shortcuts - - /// - /// Completes all tweens that have this target as a reference - /// (meaning tweens that were started from this target, or that had this target added as an Id) - /// and returns the total number of tweens completed - /// (meaning the tweens that don't have infinite loops and were not already complete) - /// - /// For Sequences only: if TRUE also internal Sequence callbacks will be fired, - /// otherwise they will be ignored - public static int DOComplete(this AudioMixer target, bool withCallbacks = false) - { - return DOTween.Complete(target, withCallbacks); - } - - /// - /// Kills all tweens that have this target as a reference - /// (meaning tweens that were started from this target, or that had this target added as an Id) - /// and returns the total number of tweens killed. - /// - /// If TRUE completes the tween before killing it - public static int DOKill(this AudioMixer target, bool complete = false) - { - return DOTween.Kill(target, complete); - } - - /// - /// Flips the direction (backwards if it was going forward or viceversa) of all tweens that have this target as a reference - /// (meaning tweens that were started from this target, or that had this target added as an Id) - /// and returns the total number of tweens flipped. - /// - public static int DOFlip(this AudioMixer target) - { - return DOTween.Flip(target); - } - - /// - /// Sends to the given position all tweens that have this target as a reference - /// (meaning tweens that were started from this target, or that had this target added as an Id) - /// and returns the total number of tweens involved. - /// - /// Time position to reach - /// (if higher than the whole tween duration the tween will simply reach its end) - /// If TRUE will play the tween after reaching the given position, otherwise it will pause it - public static int DOGoto(this AudioMixer target, float to, bool andPlay = false) - { - return DOTween.Goto(target, to, andPlay); - } - - /// - /// Pauses all tweens that have this target as a reference - /// (meaning tweens that were started from this target, or that had this target added as an Id) - /// and returns the total number of tweens paused. - /// - public static int DOPause(this AudioMixer target) - { - return DOTween.Pause(target); - } - - /// - /// Plays all tweens that have this target as a reference - /// (meaning tweens that were started from this target, or that had this target added as an Id) - /// and returns the total number of tweens played. - /// - public static int DOPlay(this AudioMixer target) - { - return DOTween.Play(target); - } - - /// - /// Plays backwards all tweens that have this target as a reference - /// (meaning tweens that were started from this target, or that had this target added as an Id) - /// and returns the total number of tweens played. - /// - public static int DOPlayBackwards(this AudioMixer target) - { - return DOTween.PlayBackwards(target); - } - - /// - /// Plays forward all tweens that have this target as a reference - /// (meaning tweens that were started from this target, or that had this target added as an Id) - /// and returns the total number of tweens played. - /// - public static int DOPlayForward(this AudioMixer target) - { - return DOTween.PlayForward(target); - } - - /// - /// Restarts all tweens that have this target as a reference - /// (meaning tweens that were started from this target, or that had this target added as an Id) - /// and returns the total number of tweens restarted. - /// - public static int DORestart(this AudioMixer target) - { - return DOTween.Restart(target); - } - - /// - /// Rewinds all tweens that have this target as a reference - /// (meaning tweens that were started from this target, or that had this target added as an Id) - /// and returns the total number of tweens rewinded. - /// - public static int DORewind(this AudioMixer target) - { - return DOTween.Rewind(target); - } - - /// - /// Smoothly rewinds all tweens that have this target as a reference - /// (meaning tweens that were started from this target, or that had this target added as an Id) - /// and returns the total number of tweens rewinded. - /// - public static int DOSmoothRewind(this AudioMixer target) - { - return DOTween.SmoothRewind(target); - } - - /// - /// Toggles the paused state (plays if it was paused, pauses if it was playing) of all tweens that have this target as a reference - /// (meaning tweens that were started from this target, or that had this target added as an Id) - /// and returns the total number of tweens involved. - /// - public static int DOTogglePause(this AudioMixer target) - { - return DOTween.TogglePause(target); - } - - #endregion - - #endregion -#endif - - #endregion - } -} -#endif diff --git a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleAudio.cs.meta b/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleAudio.cs.meta deleted file mode 100644 index 63cdbe9a..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleAudio.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3c71b264e4935eb48a73700e83827632 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleEPOOutline.cs b/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleEPOOutline.cs deleted file mode 100644 index 2ab3775c..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleEPOOutline.cs +++ /dev/null @@ -1,146 +0,0 @@ -using UnityEngine; - -#if false || EPO_DOTWEEN // MODULE_MARKER - -using EPOOutline; -using DG.Tweening.Plugins.Options; -using DG.Tweening; -using DG.Tweening.Core; - -namespace DG.Tweening -{ - public static class DOTweenModuleEPOOutline - { - public static int DOKill(this SerializedPass target, bool complete) - { - return DOTween.Kill(target, complete); - } - - public static TweenerCore DOFloat(this SerializedPass target, string propertyName, float endValue, float duration) - { - var tweener = DOTween.To(() => target.GetFloat(propertyName), x => target.SetFloat(propertyName, x), endValue, duration); - tweener.SetOptions(true).SetTarget(target); - return tweener; - } - - public static TweenerCore DOFade(this SerializedPass target, string propertyName, float endValue, float duration) - { - var tweener = DOTween.ToAlpha(() => target.GetColor(propertyName), x => target.SetColor(propertyName, x), endValue, duration); - tweener.SetOptions(true).SetTarget(target); - return tweener; - } - - public static TweenerCore DOColor(this SerializedPass target, string propertyName, Color endValue, float duration) - { - var tweener = DOTween.To(() => target.GetColor(propertyName), x => target.SetColor(propertyName, x), endValue, duration); - tweener.SetOptions(false).SetTarget(target); - return tweener; - } - - public static TweenerCore DOVector(this SerializedPass target, string propertyName, Vector4 endValue, float duration) - { - var tweener = DOTween.To(() => target.GetVector(propertyName), x => target.SetVector(propertyName, x), endValue, duration); - tweener.SetOptions(false).SetTarget(target); - return tweener; - } - - public static TweenerCore DOFloat(this SerializedPass target, int propertyId, float endValue, float duration) - { - var tweener = DOTween.To(() => target.GetFloat(propertyId), x => target.SetFloat(propertyId, x), endValue, duration); - tweener.SetOptions(true).SetTarget(target); - return tweener; - } - - public static TweenerCore DOFade(this SerializedPass target, int propertyId, float endValue, float duration) - { - var tweener = DOTween.ToAlpha(() => target.GetColor(propertyId), x => target.SetColor(propertyId, x), endValue, duration); - tweener.SetOptions(true).SetTarget(target); - return tweener; - } - - public static TweenerCore DOColor(this SerializedPass target, int propertyId, Color endValue, float duration) - { - var tweener = DOTween.To(() => target.GetColor(propertyId), x => target.SetColor(propertyId, x), endValue, duration); - tweener.SetOptions(false).SetTarget(target); - return tweener; - } - - public static TweenerCore DOVector(this SerializedPass target, int propertyId, Vector4 endValue, float duration) - { - var tweener = DOTween.To(() => target.GetVector(propertyId), x => target.SetVector(propertyId, x), endValue, duration); - tweener.SetOptions(false).SetTarget(target); - return tweener; - } - - public static int DOKill(this Outlinable.OutlineProperties target, bool complete = false) - { - return DOTween.Kill(target, complete); - } - - public static int DOKill(this Outliner target, bool complete = false) - { - return DOTween.Kill(target, complete); - } - - /// - /// Controls the alpha (transparency) of the outline - /// - public static TweenerCore DOFade(this Outlinable.OutlineProperties target, float endValue, float duration) - { - var tweener = DOTween.ToAlpha(() => target.Color, x => target.Color = x, endValue, duration); - tweener.SetOptions(true).SetTarget(target); - return tweener; - } - - /// - /// Controls the color of the outline - /// - public static TweenerCore DOColor(this Outlinable.OutlineProperties target, Color endValue, float duration) - { - var tweener = DOTween.To(() => target.Color, x => target.Color = x, endValue, duration); - tweener.SetOptions(false).SetTarget(target); - return tweener; - } - - /// - /// Controls the amount of blur applied to the outline - /// - public static TweenerCore DOBlurShift(this Outlinable.OutlineProperties target, float endValue, float duration, bool snapping = false) - { - var tweener = DOTween.To(() => target.BlurShift, x => target.BlurShift = x, endValue, duration); - tweener.SetOptions(snapping).SetTarget(target); - return tweener; - } - - /// - /// Controls the amount of blur applied to the outline - /// - public static TweenerCore DOBlurShift(this Outliner target, float endValue, float duration, bool snapping = false) - { - var tweener = DOTween.To(() => target.BlurShift, x => target.BlurShift = x, endValue, duration); - tweener.SetOptions(snapping).SetTarget(target); - return tweener; - } - - /// - /// Controls the amount of dilation applied to the outline - /// - public static TweenerCore DODilateShift(this Outlinable.OutlineProperties target, float endValue, float duration, bool snapping = false) - { - var tweener = DOTween.To(() => target.DilateShift, x => target.DilateShift = x, endValue, duration); - tweener.SetOptions(snapping).SetTarget(target); - return tweener; - } - - /// - /// Controls the amount of dilation applied to the outline - /// - public static TweenerCore DODilateShift(this Outliner target, float endValue, float duration, bool snapping = false) - { - var tweener = DOTween.To(() => target.DilateShift, x => target.DilateShift = x, endValue, duration); - tweener.SetOptions(snapping).SetTarget(target); - return tweener; - } - } -} -#endif diff --git a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleEPOOutline.cs.meta b/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleEPOOutline.cs.meta deleted file mode 100644 index 3d4c6e11..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleEPOOutline.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 7803b79ced363be41ad9da9387fbb695 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModulePhysics.cs b/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModulePhysics.cs deleted file mode 100644 index 08b07006..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModulePhysics.cs +++ /dev/null @@ -1,216 +0,0 @@ -// Author: Daniele Giardini - http://www.demigiant.com -// Created: 2018/07/13 - -#if true // MODULE_MARKER -using System; -using DG.Tweening.Core; -using DG.Tweening.Core.Enums; -using DG.Tweening.Plugins; -using DG.Tweening.Plugins.Core.PathCore; -using DG.Tweening.Plugins.Options; -using UnityEngine; - -#pragma warning disable 1591 -namespace DG.Tweening -{ - public static class DOTweenModulePhysics - { - #region Shortcuts - - #region Rigidbody - - /// Tweens a Rigidbody's position to the given value. - /// Also stores the rigidbody as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOMove(this Rigidbody target, Vector3 endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.position, target.MovePosition, endValue, duration); - t.SetOptions(snapping).SetTarget(target); - return t; - } - - /// Tweens a Rigidbody's X position to the given value. - /// Also stores the rigidbody as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOMoveX(this Rigidbody target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.position, target.MovePosition, new Vector3(endValue, 0, 0), duration); - t.SetOptions(AxisConstraint.X, snapping).SetTarget(target); - return t; - } - - /// Tweens a Rigidbody's Y position to the given value. - /// Also stores the rigidbody as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOMoveY(this Rigidbody target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.position, target.MovePosition, new Vector3(0, endValue, 0), duration); - t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target); - return t; - } - - /// Tweens a Rigidbody's Z position to the given value. - /// Also stores the rigidbody as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOMoveZ(this Rigidbody target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.position, target.MovePosition, new Vector3(0, 0, endValue), duration); - t.SetOptions(AxisConstraint.Z, snapping).SetTarget(target); - return t; - } - - /// Tweens a Rigidbody's rotation to the given value. - /// Also stores the rigidbody as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// Rotation mode - public static TweenerCore DORotate(this Rigidbody target, Vector3 endValue, float duration, RotateMode mode = RotateMode.Fast) - { - TweenerCore t = DOTween.To(() => target.rotation, target.MoveRotation, endValue, duration); - t.SetTarget(target); - t.plugOptions.rotateMode = mode; - return t; - } - - /// Tweens a Rigidbody's rotation so that it will look towards the given position. - /// Also stores the rigidbody as the tween's target so it can be used for filtered operations - /// The position to look atThe duration of the tween - /// Eventual axis constraint for the rotation - /// The vector that defines in which direction up is (default: Vector3.up) - public static TweenerCore DOLookAt(this Rigidbody target, Vector3 towards, float duration, AxisConstraint axisConstraint = AxisConstraint.None, Vector3? up = null) - { - TweenerCore t = DOTween.To(() => target.rotation, target.MoveRotation, towards, duration) - .SetTarget(target).SetSpecialStartupMode(SpecialStartupMode.SetLookAt); - t.plugOptions.axisConstraint = axisConstraint; - t.plugOptions.up = (up == null) ? Vector3.up : (Vector3)up; - return t; - } - - #region Special - - /// Tweens a Rigidbody's position to the given value, while also applying a jump effect along the Y axis. - /// Returns a Sequence instead of a Tweener. - /// Also stores the Rigidbody as the tween's target so it can be used for filtered operations - /// The end value to reach - /// Power of the jump (the max height of the jump is represented by this plus the final Y offset) - /// Total number of jumps - /// The duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static Sequence DOJump(this Rigidbody target, Vector3 endValue, float jumpPower, int numJumps, float duration, bool snapping = false) - { - if (numJumps < 1) numJumps = 1; - float startPosY = 0; - float offsetY = -1; - bool offsetYSet = false; - Sequence s = DOTween.Sequence(); - Tween yTween = DOTween.To(() => target.position, target.MovePosition, new Vector3(0, jumpPower, 0), duration / (numJumps * 2)) - .SetOptions(AxisConstraint.Y, snapping).SetEase(Ease.OutQuad).SetRelative() - .SetLoops(numJumps * 2, LoopType.Yoyo) - .OnStart(() => startPosY = target.position.y); - s.Append(DOTween.To(() => target.position, target.MovePosition, new Vector3(endValue.x, 0, 0), duration) - .SetOptions(AxisConstraint.X, snapping).SetEase(Ease.Linear) - ).Join(DOTween.To(() => target.position, target.MovePosition, new Vector3(0, 0, endValue.z), duration) - .SetOptions(AxisConstraint.Z, snapping).SetEase(Ease.Linear) - ).Join(yTween) - .SetTarget(target).SetEase(DOTween.defaultEaseType); - yTween.OnUpdate(() => { - if (!offsetYSet) { - offsetYSet = true; - offsetY = s.isRelative ? endValue.y : endValue.y - startPosY; - } - Vector3 pos = target.position; - pos.y += DOVirtual.EasedValue(0, offsetY, yTween.ElapsedPercentage(), Ease.OutQuad); - target.MovePosition(pos); - }); - return s; - } - - /// Tweens a Rigidbody's position through the given path waypoints, using the chosen path algorithm. - /// Also stores the Rigidbody as the tween's target so it can be used for filtered operations. - /// NOTE: to tween a rigidbody correctly it should be set to kinematic at least while being tweened. - /// BEWARE: doesn't work on Windows Phone store (waiting for Unity to fix their own bug). - /// If you plan to publish there you should use a regular transform.DOPath. - /// The waypoints to go through - /// The duration of the tween - /// The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) - /// The path mode: 3D, side-scroller 2D, top-down 2D - /// The resolution of the path (useless in case of Linear paths): higher resolutions make for more detailed curved paths but are more expensive. - /// Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints - /// The color of the path (shown when gizmos are active in the Play panel and the tween is running) - public static TweenerCore DOPath( - this Rigidbody target, Vector3[] path, float duration, PathType pathType = PathType.Linear, - PathMode pathMode = PathMode.Full3D, int resolution = 10, Color? gizmoColor = null - ) - { - if (resolution < 1) resolution = 1; - TweenerCore t = DOTween.To(PathPlugin.Get(), () => target.position, target.MovePosition, new Path(pathType, path, resolution, gizmoColor), duration) - .SetTarget(target).SetUpdate(UpdateType.Fixed); - - t.plugOptions.isRigidbody = true; - t.plugOptions.mode = pathMode; - return t; - } - /// Tweens a Rigidbody's localPosition through the given path waypoints, using the chosen path algorithm. - /// Also stores the Rigidbody as the tween's target so it can be used for filtered operations - /// NOTE: to tween a rigidbody correctly it should be set to kinematic at least while being tweened. - /// BEWARE: doesn't work on Windows Phone store (waiting for Unity to fix their own bug). - /// If you plan to publish there you should use a regular transform.DOLocalPath. - /// The waypoint to go through - /// The duration of the tween - /// The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) - /// The path mode: 3D, side-scroller 2D, top-down 2D - /// The resolution of the path: higher resolutions make for more detailed curved paths but are more expensive. - /// Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints - /// The color of the path (shown when gizmos are active in the Play panel and the tween is running) - public static TweenerCore DOLocalPath( - this Rigidbody target, Vector3[] path, float duration, PathType pathType = PathType.Linear, - PathMode pathMode = PathMode.Full3D, int resolution = 10, Color? gizmoColor = null - ) - { - if (resolution < 1) resolution = 1; - Transform trans = target.transform; - TweenerCore t = DOTween.To(PathPlugin.Get(), () => trans.localPosition, x => target.MovePosition(trans.parent == null ? x : trans.parent.TransformPoint(x)), new Path(pathType, path, resolution, gizmoColor), duration) - .SetTarget(target).SetUpdate(UpdateType.Fixed); - - t.plugOptions.isRigidbody = true; - t.plugOptions.mode = pathMode; - t.plugOptions.useLocalPosition = true; - return t; - } - // Used by path editor when creating the actual tween, so it can pass a pre-compiled path - internal static TweenerCore DOPath( - this Rigidbody target, Path path, float duration, PathMode pathMode = PathMode.Full3D - ) - { - TweenerCore t = DOTween.To(PathPlugin.Get(), () => target.position, target.MovePosition, path, duration) - .SetTarget(target); - - t.plugOptions.isRigidbody = true; - t.plugOptions.mode = pathMode; - return t; - } - internal static TweenerCore DOLocalPath( - this Rigidbody target, Path path, float duration, PathMode pathMode = PathMode.Full3D - ) - { - Transform trans = target.transform; - TweenerCore t = DOTween.To(PathPlugin.Get(), () => trans.localPosition, x => target.MovePosition(trans.parent == null ? x : trans.parent.TransformPoint(x)), path, duration) - .SetTarget(target); - - t.plugOptions.isRigidbody = true; - t.plugOptions.mode = pathMode; - t.plugOptions.useLocalPosition = true; - return t; - } - - #endregion - - #endregion - - #endregion - } -} -#endif diff --git a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModulePhysics.cs.meta b/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModulePhysics.cs.meta deleted file mode 100644 index 665729f4..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModulePhysics.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 25613cce4119f2145827edc347f8f45a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModulePhysics2D.cs b/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModulePhysics2D.cs deleted file mode 100644 index d01f7289..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModulePhysics2D.cs +++ /dev/null @@ -1,193 +0,0 @@ -// Author: Daniele Giardini - http://www.demigiant.com -// Created: 2018/07/13 - -#if true && (UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1_OR_NEWER) // MODULE_MARKER -using System; -using DG.Tweening.Core; -using DG.Tweening.Plugins; -using DG.Tweening.Plugins.Core.PathCore; -using DG.Tweening.Plugins.Options; -using UnityEngine; - -#pragma warning disable 1591 -namespace DG.Tweening -{ - public static class DOTweenModulePhysics2D - { - #region Shortcuts - - #region Rigidbody2D Shortcuts - - /// Tweens a Rigidbody2D's position to the given value. - /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOMove(this Rigidbody2D target, Vector2 endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.position, target.MovePosition, endValue, duration); - t.SetOptions(snapping).SetTarget(target); - return t; - } - - /// Tweens a Rigidbody2D's X position to the given value. - /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOMoveX(this Rigidbody2D target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.position, target.MovePosition, new Vector2(endValue, 0), duration); - t.SetOptions(AxisConstraint.X, snapping).SetTarget(target); - return t; - } - - /// Tweens a Rigidbody2D's Y position to the given value. - /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOMoveY(this Rigidbody2D target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.position, target.MovePosition, new Vector2(0, endValue), duration); - t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target); - return t; - } - - /// Tweens a Rigidbody2D's rotation to the given value. - /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DORotate(this Rigidbody2D target, float endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.rotation, target.MoveRotation, endValue, duration); - t.SetTarget(target); - return t; - } - - #region Special - - /// Tweens a Rigidbody2D's position to the given value, while also applying a jump effect along the Y axis. - /// Returns a Sequence instead of a Tweener. - /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations. - /// IMPORTANT: a rigidbody2D can't be animated in a jump arc using MovePosition, so the tween will directly set the position - /// The end value to reach - /// Power of the jump (the max height of the jump is represented by this plus the final Y offset) - /// Total number of jumps - /// The duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static Sequence DOJump(this Rigidbody2D target, Vector2 endValue, float jumpPower, int numJumps, float duration, bool snapping = false) - { - if (numJumps < 1) numJumps = 1; - float startPosY = 0; - float offsetY = -1; - bool offsetYSet = false; - Sequence s = DOTween.Sequence(); - Tween yTween = DOTween.To(() => target.position, x => target.position = x, new Vector2(0, jumpPower), duration / (numJumps * 2)) - .SetOptions(AxisConstraint.Y, snapping).SetEase(Ease.OutQuad).SetRelative() - .SetLoops(numJumps * 2, LoopType.Yoyo) - .OnStart(() => startPosY = target.position.y); - s.Append(DOTween.To(() => target.position, x => target.position = x, new Vector2(endValue.x, 0), duration) - .SetOptions(AxisConstraint.X, snapping).SetEase(Ease.Linear) - ).Join(yTween) - .SetTarget(target).SetEase(DOTween.defaultEaseType); - yTween.OnUpdate(() => { - if (!offsetYSet) { - offsetYSet = true; - offsetY = s.isRelative ? endValue.y : endValue.y - startPosY; - } - Vector3 pos = target.position; - pos.y += DOVirtual.EasedValue(0, offsetY, yTween.ElapsedPercentage(), Ease.OutQuad); - target.MovePosition(pos); - }); - return s; - } - - /// Tweens a Rigidbody2D's position through the given path waypoints, using the chosen path algorithm. - /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations. - /// NOTE: to tween a Rigidbody2D correctly it should be set to kinematic at least while being tweened. - /// BEWARE: doesn't work on Windows Phone store (waiting for Unity to fix their own bug). - /// If you plan to publish there you should use a regular transform.DOPath. - /// The waypoints to go through - /// The duration of the tween - /// The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) - /// The path mode: 3D, side-scroller 2D, top-down 2D - /// The resolution of the path (useless in case of Linear paths): higher resolutions make for more detailed curved paths but are more expensive. - /// Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints - /// The color of the path (shown when gizmos are active in the Play panel and the tween is running) - public static TweenerCore DOPath( - this Rigidbody2D target, Vector2[] path, float duration, PathType pathType = PathType.Linear, - PathMode pathMode = PathMode.Full3D, int resolution = 10, Color? gizmoColor = null - ) - { - if (resolution < 1) resolution = 1; - int len = path.Length; - Vector3[] path3D = new Vector3[len]; - for (int i = 0; i < len; ++i) path3D[i] = path[i]; - TweenerCore t = DOTween.To(PathPlugin.Get(), () => target.position, x => target.MovePosition(x), new Path(pathType, path3D, resolution, gizmoColor), duration) - .SetTarget(target).SetUpdate(UpdateType.Fixed); - - t.plugOptions.isRigidbody2D = true; - t.plugOptions.mode = pathMode; - return t; - } - /// Tweens a Rigidbody2D's localPosition through the given path waypoints, using the chosen path algorithm. - /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations - /// NOTE: to tween a Rigidbody2D correctly it should be set to kinematic at least while being tweened. - /// BEWARE: doesn't work on Windows Phone store (waiting for Unity to fix their own bug). - /// If you plan to publish there you should use a regular transform.DOLocalPath. - /// The waypoint to go through - /// The duration of the tween - /// The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) - /// The path mode: 3D, side-scroller 2D, top-down 2D - /// The resolution of the path: higher resolutions make for more detailed curved paths but are more expensive. - /// Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints - /// The color of the path (shown when gizmos are active in the Play panel and the tween is running) - public static TweenerCore DOLocalPath( - this Rigidbody2D target, Vector2[] path, float duration, PathType pathType = PathType.Linear, - PathMode pathMode = PathMode.Full3D, int resolution = 10, Color? gizmoColor = null - ) - { - if (resolution < 1) resolution = 1; - int len = path.Length; - Vector3[] path3D = new Vector3[len]; - for (int i = 0; i < len; ++i) path3D[i] = path[i]; - Transform trans = target.transform; - TweenerCore t = DOTween.To(PathPlugin.Get(), () => trans.localPosition, x => target.MovePosition(trans.parent == null ? x : trans.parent.TransformPoint(x)), new Path(pathType, path3D, resolution, gizmoColor), duration) - .SetTarget(target).SetUpdate(UpdateType.Fixed); - - t.plugOptions.isRigidbody2D = true; - t.plugOptions.mode = pathMode; - t.plugOptions.useLocalPosition = true; - return t; - } - // Used by path editor when creating the actual tween, so it can pass a pre-compiled path - internal static TweenerCore DOPath( - this Rigidbody2D target, Path path, float duration, PathMode pathMode = PathMode.Full3D - ) - { - TweenerCore t = DOTween.To(PathPlugin.Get(), () => target.position, x => target.MovePosition(x), path, duration) - .SetTarget(target); - - t.plugOptions.isRigidbody2D = true; - t.plugOptions.mode = pathMode; - return t; - } - internal static TweenerCore DOLocalPath( - this Rigidbody2D target, Path path, float duration, PathMode pathMode = PathMode.Full3D - ) - { - Transform trans = target.transform; - TweenerCore t = DOTween.To(PathPlugin.Get(), () => trans.localPosition, x => target.MovePosition(trans.parent == null ? x : trans.parent.TransformPoint(x)), path, duration) - .SetTarget(target); - - t.plugOptions.isRigidbody2D = true; - t.plugOptions.mode = pathMode; - t.plugOptions.useLocalPosition = true; - return t; - } - - #endregion - - #endregion - - #endregion - } -} -#endif diff --git a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModulePhysics2D.cs.meta b/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModulePhysics2D.cs.meta deleted file mode 100644 index 97f8af00..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModulePhysics2D.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0132230e45b5aa240af6090093c4d605 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleSprite.cs b/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleSprite.cs deleted file mode 100644 index 549fff39..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleSprite.cs +++ /dev/null @@ -1,93 +0,0 @@ -// Author: Daniele Giardini - http://www.demigiant.com -// Created: 2018/07/13 - -#if true && (UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1_OR_NEWER) // MODULE_MARKER -using System; -using UnityEngine; -using DG.Tweening.Core; -using DG.Tweening.Plugins.Options; - -#pragma warning disable 1591 -namespace DG.Tweening -{ - public static class DOTweenModuleSprite - { - #region Shortcuts - - #region SpriteRenderer - - /// Tweens a SpriteRenderer's color to the given value. - /// Also stores the spriteRenderer as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOColor(this SpriteRenderer target, Color endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); - t.SetTarget(target); - return t; - } - - /// Tweens a Material's alpha color to the given value. - /// Also stores the spriteRenderer as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOFade(this SpriteRenderer target, float endValue, float duration) - { - TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); - t.SetTarget(target); - return t; - } - - /// Tweens a SpriteRenderer's color using the given gradient - /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). - /// Also stores the image as the tween's target so it can be used for filtered operations - /// The gradient to useThe duration of the tween - public static Sequence DOGradientColor(this SpriteRenderer target, Gradient gradient, float duration) - { - Sequence s = DOTween.Sequence(); - GradientColorKey[] colors = gradient.colorKeys; - int len = colors.Length; - for (int i = 0; i < len; ++i) { - GradientColorKey c = colors[i]; - if (i == 0 && c.time <= 0) { - target.color = c.color; - continue; - } - float colorDuration = i == len - 1 - ? duration - s.Duration(false) // Verifies that total duration is correct - : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); - s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); - } - s.SetTarget(target); - return s; - } - - #endregion - - #region Blendables - - #region SpriteRenderer - - /// Tweens a SpriteRenderer's color to the given value, - /// in a way that allows other DOBlendableColor tweens to work together on the same target, - /// instead than fight each other as multiple DOColor would do. - /// Also stores the SpriteRenderer as the tween's target so it can be used for filtered operations - /// The value to tween toThe duration of the tween - public static Tweener DOBlendableColor(this SpriteRenderer target, Color endValue, float duration) - { - endValue = endValue - target.color; - Color to = new Color(0, 0, 0, 0); - return DOTween.To(() => to, x => { - Color diff = x - to; - to = x; - target.color += diff; - }, endValue, duration) - .Blendable().SetTarget(target); - } - - #endregion - - #endregion - - #endregion - } -} -#endif diff --git a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleSprite.cs.meta b/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleSprite.cs.meta deleted file mode 100644 index 8f648443..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleSprite.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4702eb0361fc0f04abcdd010f3325281 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUI.cs b/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUI.cs deleted file mode 100644 index b3a6fd1a..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUI.cs +++ /dev/null @@ -1,662 +0,0 @@ -// Author: Daniele Giardini - http://www.demigiant.com -// Created: 2018/07/13 - -#if true && (UNITY_4_6 || UNITY_5 || UNITY_2017_1_OR_NEWER) // MODULE_MARKER - -using System; -using System.Globalization; -using UnityEngine; -using UnityEngine.UI; -using DG.Tweening.Core; -using DG.Tweening.Core.Enums; -using DG.Tweening.Plugins; -using DG.Tweening.Plugins.Options; -using Outline = UnityEngine.UI.Outline; -using Text = UnityEngine.UI.Text; - -#pragma warning disable 1591 -namespace DG.Tweening -{ - public static class DOTweenModuleUI - { - #region Shortcuts - - #region CanvasGroup - - /// Tweens a CanvasGroup's alpha color to the given value. - /// Also stores the canvasGroup as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOFade(this CanvasGroup target, float endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.alpha, x => target.alpha = x, endValue, duration); - t.SetTarget(target); - return t; - } - - #endregion - - #region Graphic - - /// Tweens an Graphic's color to the given value. - /// Also stores the image as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOColor(this Graphic target, Color endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); - t.SetTarget(target); - return t; - } - - /// Tweens an Graphic's alpha color to the given value. - /// Also stores the image as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOFade(this Graphic target, float endValue, float duration) - { - TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); - t.SetTarget(target); - return t; - } - - #endregion - - #region Image - - /// Tweens an Image's color to the given value. - /// Also stores the image as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOColor(this Image target, Color endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); - t.SetTarget(target); - return t; - } - - /// Tweens an Image's alpha color to the given value. - /// Also stores the image as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOFade(this Image target, float endValue, float duration) - { - TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); - t.SetTarget(target); - return t; - } - - /// Tweens an Image's fillAmount to the given value. - /// Also stores the image as the tween's target so it can be used for filtered operations - /// The end value to reach (0 to 1)The duration of the tween - public static TweenerCore DOFillAmount(this Image target, float endValue, float duration) - { - if (endValue > 1) endValue = 1; - else if (endValue < 0) endValue = 0; - TweenerCore t = DOTween.To(() => target.fillAmount, x => target.fillAmount = x, endValue, duration); - t.SetTarget(target); - return t; - } - - /// Tweens an Image's colors using the given gradient - /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). - /// Also stores the image as the tween's target so it can be used for filtered operations - /// The gradient to useThe duration of the tween - public static Sequence DOGradientColor(this Image target, Gradient gradient, float duration) - { - Sequence s = DOTween.Sequence(); - GradientColorKey[] colors = gradient.colorKeys; - int len = colors.Length; - for (int i = 0; i < len; ++i) { - GradientColorKey c = colors[i]; - if (i == 0 && c.time <= 0) { - target.color = c.color; - continue; - } - float colorDuration = i == len - 1 - ? duration - s.Duration(false) // Verifies that total duration is correct - : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); - s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); - } - s.SetTarget(target); - return s; - } - - #endregion - - #region LayoutElement - - /// Tweens an LayoutElement's flexibleWidth/Height to the given value. - /// Also stores the LayoutElement as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOFlexibleSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => new Vector2(target.flexibleWidth, target.flexibleHeight), x => { - target.flexibleWidth = x.x; - target.flexibleHeight = x.y; - }, endValue, duration); - t.SetOptions(snapping).SetTarget(target); - return t; - } - - /// Tweens an LayoutElement's minWidth/Height to the given value. - /// Also stores the LayoutElement as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOMinSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => new Vector2(target.minWidth, target.minHeight), x => { - target.minWidth = x.x; - target.minHeight = x.y; - }, endValue, duration); - t.SetOptions(snapping).SetTarget(target); - return t; - } - - /// Tweens an LayoutElement's preferredWidth/Height to the given value. - /// Also stores the LayoutElement as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOPreferredSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => new Vector2(target.preferredWidth, target.preferredHeight), x => { - target.preferredWidth = x.x; - target.preferredHeight = x.y; - }, endValue, duration); - t.SetOptions(snapping).SetTarget(target); - return t; - } - - #endregion - - #region Outline - - /// Tweens a Outline's effectColor to the given value. - /// Also stores the Outline as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOColor(this Outline target, Color endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.effectColor, x => target.effectColor = x, endValue, duration); - t.SetTarget(target); - return t; - } - - /// Tweens a Outline's effectColor alpha to the given value. - /// Also stores the Outline as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOFade(this Outline target, float endValue, float duration) - { - TweenerCore t = DOTween.ToAlpha(() => target.effectColor, x => target.effectColor = x, endValue, duration); - t.SetTarget(target); - return t; - } - - /// Tweens a Outline's effectDistance to the given value. - /// Also stores the Outline as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOScale(this Outline target, Vector2 endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.effectDistance, x => target.effectDistance = x, endValue, duration); - t.SetTarget(target); - return t; - } - - #endregion - - #region RectTransform - - /// Tweens a RectTransform's anchoredPosition to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOAnchorPos(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, endValue, duration); - t.SetOptions(snapping).SetTarget(target); - return t; - } - /// Tweens a RectTransform's anchoredPosition X to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOAnchorPosX(this RectTransform target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(endValue, 0), duration); - t.SetOptions(AxisConstraint.X, snapping).SetTarget(target); - return t; - } - /// Tweens a RectTransform's anchoredPosition Y to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOAnchorPosY(this RectTransform target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(0, endValue), duration); - t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target); - return t; - } - - /// Tweens a RectTransform's anchoredPosition3D to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOAnchorPos3D(this RectTransform target, Vector3 endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, endValue, duration); - t.SetOptions(snapping).SetTarget(target); - return t; - } - /// Tweens a RectTransform's anchoredPosition3D X to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOAnchorPos3DX(this RectTransform target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(endValue, 0, 0), duration); - t.SetOptions(AxisConstraint.X, snapping).SetTarget(target); - return t; - } - /// Tweens a RectTransform's anchoredPosition3D Y to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOAnchorPos3DY(this RectTransform target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(0, endValue, 0), duration); - t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target); - return t; - } - /// Tweens a RectTransform's anchoredPosition3D Z to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOAnchorPos3DZ(this RectTransform target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(0, 0, endValue), duration); - t.SetOptions(AxisConstraint.Z, snapping).SetTarget(target); - return t; - } - - /// Tweens a RectTransform's anchorMax to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOAnchorMax(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.anchorMax, x => target.anchorMax = x, endValue, duration); - t.SetOptions(snapping).SetTarget(target); - return t; - } - - /// Tweens a RectTransform's anchorMin to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOAnchorMin(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.anchorMin, x => target.anchorMin = x, endValue, duration); - t.SetOptions(snapping).SetTarget(target); - return t; - } - - /// Tweens a RectTransform's pivot to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOPivot(this RectTransform target, Vector2 endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.pivot, x => target.pivot = x, endValue, duration); - t.SetTarget(target); - return t; - } - /// Tweens a RectTransform's pivot X to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOPivotX(this RectTransform target, float endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.pivot, x => target.pivot = x, new Vector2(endValue, 0), duration); - t.SetOptions(AxisConstraint.X).SetTarget(target); - return t; - } - /// Tweens a RectTransform's pivot Y to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOPivotY(this RectTransform target, float endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.pivot, x => target.pivot = x, new Vector2(0, endValue), duration); - t.SetOptions(AxisConstraint.Y).SetTarget(target); - return t; - } - - /// Tweens a RectTransform's sizeDelta to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOSizeDelta(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.sizeDelta, x => target.sizeDelta = x, endValue, duration); - t.SetOptions(snapping).SetTarget(target); - return t; - } - - /// Punches a RectTransform's anchoredPosition towards the given direction and then back to the starting one - /// as if it was connected to the starting position via an elastic. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The direction and strength of the punch (added to the RectTransform's current position) - /// The duration of the tween - /// Indicates how much will the punch vibrate - /// Represents how much (0 to 1) the vector will go beyond the starting position when bouncing backwards. - /// 1 creates a full oscillation between the punch direction and the opposite direction, - /// while 0 oscillates only between the punch and the start position - /// If TRUE the tween will smoothly snap all values to integers - public static Tweener DOPunchAnchorPos(this RectTransform target, Vector2 punch, float duration, int vibrato = 10, float elasticity = 1, bool snapping = false) - { - return DOTween.Punch(() => target.anchoredPosition, x => target.anchoredPosition = x, punch, duration, vibrato, elasticity) - .SetTarget(target).SetOptions(snapping); - } - - /// Shakes a RectTransform's anchoredPosition with the given values. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The duration of the tween - /// The shake strength - /// Indicates how much will the shake vibrate - /// Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). - /// Setting it to 0 will shake along a single direction. - /// If TRUE the tween will smoothly snap all values to integers - /// If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not - /// Randomness mode - public static Tweener DOShakeAnchorPos(this RectTransform target, float duration, float strength = 100, int vibrato = 10, float randomness = 90, bool snapping = false, bool fadeOut = true, ShakeRandomnessMode randomnessMode = ShakeRandomnessMode.Full) - { - return DOTween.Shake(() => target.anchoredPosition, x => target.anchoredPosition = x, duration, strength, vibrato, randomness, true, fadeOut, randomnessMode) - .SetTarget(target).SetSpecialStartupMode(SpecialStartupMode.SetShake).SetOptions(snapping); - } - /// Shakes a RectTransform's anchoredPosition with the given values. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The duration of the tween - /// The shake strength on each axis - /// Indicates how much will the shake vibrate - /// Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). - /// Setting it to 0 will shake along a single direction. - /// If TRUE the tween will smoothly snap all values to integers - /// If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not - /// Randomness mode - public static Tweener DOShakeAnchorPos(this RectTransform target, float duration, Vector2 strength, int vibrato = 10, float randomness = 90, bool snapping = false, bool fadeOut = true, ShakeRandomnessMode randomnessMode = ShakeRandomnessMode.Full) - { - return DOTween.Shake(() => target.anchoredPosition, x => target.anchoredPosition = x, duration, strength, vibrato, randomness, fadeOut, randomnessMode) - .SetTarget(target).SetSpecialStartupMode(SpecialStartupMode.SetShake).SetOptions(snapping); - } - - #region Special - - /// Tweens a RectTransform's anchoredPosition to the given value, while also applying a jump effect along the Y axis. - /// Returns a Sequence instead of a Tweener. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reach - /// Power of the jump (the max height of the jump is represented by this plus the final Y offset) - /// Total number of jumps - /// The duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static Sequence DOJumpAnchorPos(this RectTransform target, Vector2 endValue, float jumpPower, int numJumps, float duration, bool snapping = false) - { - if (numJumps < 1) numJumps = 1; - float startPosY = 0; - float offsetY = -1; - bool offsetYSet = false; - - // Separate Y Tween so we can elaborate elapsedPercentage on that insted of on the Sequence - // (in case users add a delay or other elements to the Sequence) - Sequence s = DOTween.Sequence(); - Tween yTween = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(0, jumpPower), duration / (numJumps * 2)) - .SetOptions(AxisConstraint.Y, snapping).SetEase(Ease.OutQuad).SetRelative() - .SetLoops(numJumps * 2, LoopType.Yoyo) - .OnStart(()=> startPosY = target.anchoredPosition.y); - s.Append(DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(endValue.x, 0), duration) - .SetOptions(AxisConstraint.X, snapping).SetEase(Ease.Linear) - ).Join(yTween) - .SetTarget(target).SetEase(DOTween.defaultEaseType); - s.OnUpdate(() => { - if (!offsetYSet) { - offsetYSet = true; - offsetY = s.isRelative ? endValue.y : endValue.y - startPosY; - } - Vector2 pos = target.anchoredPosition; - pos.y += DOVirtual.EasedValue(0, offsetY, s.ElapsedDirectionalPercentage(), Ease.OutQuad); - target.anchoredPosition = pos; - }); - return s; - } - - #endregion - - #endregion - - #region ScrollRect - - /// Tweens a ScrollRect's horizontal/verticalNormalizedPosition to the given value. - /// Also stores the ScrollRect as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static Tweener DONormalizedPos(this ScrollRect target, Vector2 endValue, float duration, bool snapping = false) - { - return DOTween.To(() => new Vector2(target.horizontalNormalizedPosition, target.verticalNormalizedPosition), - x => { - target.horizontalNormalizedPosition = x.x; - target.verticalNormalizedPosition = x.y; - }, endValue, duration) - .SetOptions(snapping).SetTarget(target); - } - /// Tweens a ScrollRect's horizontalNormalizedPosition to the given value. - /// Also stores the ScrollRect as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static Tweener DOHorizontalNormalizedPos(this ScrollRect target, float endValue, float duration, bool snapping = false) - { - return DOTween.To(() => target.horizontalNormalizedPosition, x => target.horizontalNormalizedPosition = x, endValue, duration) - .SetOptions(snapping).SetTarget(target); - } - /// Tweens a ScrollRect's verticalNormalizedPosition to the given value. - /// Also stores the ScrollRect as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static Tweener DOVerticalNormalizedPos(this ScrollRect target, float endValue, float duration, bool snapping = false) - { - return DOTween.To(() => target.verticalNormalizedPosition, x => target.verticalNormalizedPosition = x, endValue, duration) - .SetOptions(snapping).SetTarget(target); - } - - #endregion - - #region Slider - - /// Tweens a Slider's value to the given value. - /// Also stores the Slider as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOValue(this Slider target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.value, x => target.value = x, endValue, duration); - t.SetOptions(snapping).SetTarget(target); - return t; - } - - #endregion - - #region Text - - /// Tweens a Text's color to the given value. - /// Also stores the Text as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOColor(this Text target, Color endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); - t.SetTarget(target); - return t; - } - - /// - /// Tweens a Text's text from one integer to another, with options for thousands separators - /// - /// The value to start from - /// The end value to reach - /// The duration of the tween - /// If TRUE (default) also adds thousands separators - /// The to use (InvariantCulture if NULL) - public static TweenerCore DOCounter( - this Text target, int fromValue, int endValue, float duration, bool addThousandsSeparator = true, CultureInfo culture = null - ){ - int v = fromValue; - CultureInfo cInfo = !addThousandsSeparator ? null : culture ?? CultureInfo.InvariantCulture; - TweenerCore t = DOTween.To(() => v, x => { - v = x; - target.text = addThousandsSeparator - ? v.ToString("N0", cInfo) - : v.ToString(); - }, endValue, duration); - t.SetTarget(target); - return t; - } - - /// Tweens a Text's alpha color to the given value. - /// Also stores the Text as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOFade(this Text target, float endValue, float duration) - { - TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); - t.SetTarget(target); - return t; - } - - /// Tweens a Text's text to the given value. - /// Also stores the Text as the tween's target so it can be used for filtered operations - /// The end string to tween toThe duration of the tween - /// If TRUE (default), rich text will be interpreted correctly while animated, - /// otherwise all tags will be considered as normal text - /// The type of scramble mode to use, if any - /// A string containing the characters to use for scrambling. - /// Use as many characters as possible (minimum 10) because DOTween uses a fast scramble mode which gives better results with more characters. - /// Leave it to NULL (default) to use default ones - public static TweenerCore DOText(this Text target, string endValue, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null) - { - if (endValue == null) { - if (Debugger.logPriority > 0) Debugger.LogWarning("You can't pass a NULL string to DOText: an empty string will be used instead to avoid errors"); - endValue = ""; - } - TweenerCore t = DOTween.To(() => target.text, x => target.text = x, endValue, duration); - t.SetOptions(richTextEnabled, scrambleMode, scrambleChars) - .SetTarget(target); - return t; - } - - #endregion - - #region Blendables - - #region Graphic - - /// Tweens a Graphic's color to the given value, - /// in a way that allows other DOBlendableColor tweens to work together on the same target, - /// instead than fight each other as multiple DOColor would do. - /// Also stores the Graphic as the tween's target so it can be used for filtered operations - /// The value to tween toThe duration of the tween - public static Tweener DOBlendableColor(this Graphic target, Color endValue, float duration) - { - endValue = endValue - target.color; - Color to = new Color(0, 0, 0, 0); - return DOTween.To(() => to, x => { - Color diff = x - to; - to = x; - target.color += diff; - }, endValue, duration) - .Blendable().SetTarget(target); - } - - #endregion - - #region Image - - /// Tweens a Image's color to the given value, - /// in a way that allows other DOBlendableColor tweens to work together on the same target, - /// instead than fight each other as multiple DOColor would do. - /// Also stores the Image as the tween's target so it can be used for filtered operations - /// The value to tween toThe duration of the tween - public static Tweener DOBlendableColor(this Image target, Color endValue, float duration) - { - endValue = endValue - target.color; - Color to = new Color(0, 0, 0, 0); - return DOTween.To(() => to, x => { - Color diff = x - to; - to = x; - target.color += diff; - }, endValue, duration) - .Blendable().SetTarget(target); - } - - #endregion - - #region Text - - /// Tweens a Text's color BY the given value, - /// in a way that allows other DOBlendableColor tweens to work together on the same target, - /// instead than fight each other as multiple DOColor would do. - /// Also stores the Text as the tween's target so it can be used for filtered operations - /// The value to tween toThe duration of the tween - public static Tweener DOBlendableColor(this Text target, Color endValue, float duration) - { - endValue = endValue - target.color; - Color to = new Color(0, 0, 0, 0); - return DOTween.To(() => to, x => { - Color diff = x - to; - to = x; - target.color += diff; - }, endValue, duration) - .Blendable().SetTarget(target); - } - - #endregion - - #endregion - - #region Shapes - - /// Tweens a RectTransform's anchoredPosition so that it draws a circle around the given center. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations. - /// IMPORTANT: SetFrom(value) requires a instead of a float, where the X property represents the "from degrees value" - /// Circle-center/pivot around which to rotate (in UI anchoredPosition coordinates) - /// The end value degrees to reach (to rotate counter-clockwise pass a negative value) - /// The duration of the tween - /// If TRUE the coordinates will be considered as relative to the target's current anchoredPosition - /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOShapeCircle( - this RectTransform target, Vector2 center, float endValueDegrees, float duration, bool relativeCenter = false, bool snapping = false - ) - { - TweenerCore t = DOTween.To( - CirclePlugin.Get(), () => target.anchoredPosition, x => target.anchoredPosition = x, center, duration - ); - t.SetOptions(endValueDegrees, relativeCenter, snapping).SetTarget(target); - return t; - } - - #endregion - - #endregion - - // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ - // ███ INTERNAL CLASSES ████████████████████████████████████████████████████████████████████████████████████████████████ - // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ - - public static class Utils - { - /// - /// Converts the anchoredPosition of the first RectTransform to the second RectTransform, - /// taking into consideration offset, anchors and pivot, and returns the new anchoredPosition - /// - public static Vector2 SwitchToRectTransform(RectTransform from, RectTransform to) - { - Vector2 localPoint; - Vector2 fromPivotDerivedOffset = new Vector2(from.rect.width * 0.5f + from.rect.xMin, from.rect.height * 0.5f + from.rect.yMin); - Vector2 screenP = RectTransformUtility.WorldToScreenPoint(null, from.position); - screenP += fromPivotDerivedOffset; - RectTransformUtility.ScreenPointToLocalPointInRectangle(to, screenP, null, out localPoint); - Vector2 pivotDerivedOffset = new Vector2(to.rect.width * 0.5f + to.rect.xMin, to.rect.height * 0.5f + to.rect.yMin); - return to.anchoredPosition + localPoint - pivotDerivedOffset; - } - } - } -} -#endif diff --git a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUI.cs.meta b/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUI.cs.meta deleted file mode 100644 index 28787694..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUI.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 7bfe4a39bc037cf4da98af977763ac4f -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUnityVersion.cs b/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUnityVersion.cs deleted file mode 100644 index fa1ac05b..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUnityVersion.cs +++ /dev/null @@ -1,403 +0,0 @@ -// Author: Daniele Giardini - http://www.demigiant.com -// Created: 2018/07/13 - -using System; -using UnityEngine; -using DG.Tweening.Core; -using DG.Tweening.Plugins.Options; -//#if UNITY_2018_1_OR_NEWER && (NET_4_6 || NET_STANDARD_2_0) -//using Task = System.Threading.Tasks.Task; -//#endif - -#pragma warning disable 1591 -namespace DG.Tweening -{ - /// - /// Shortcuts/functions that are not strictly related to specific Modules - /// but are available only on some Unity versions - /// - public static class DOTweenModuleUnityVersion - { -#if UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1_OR_NEWER - #region Unity 4.3 or Newer - - #region Material - - /// Tweens a Material's color using the given gradient - /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). - /// Also stores the image as the tween's target so it can be used for filtered operations - /// The gradient to useThe duration of the tween - public static Sequence DOGradientColor(this Material target, Gradient gradient, float duration) - { - Sequence s = DOTween.Sequence(); - GradientColorKey[] colors = gradient.colorKeys; - int len = colors.Length; - for (int i = 0; i < len; ++i) { - GradientColorKey c = colors[i]; - if (i == 0 && c.time <= 0) { - target.color = c.color; - continue; - } - float colorDuration = i == len - 1 - ? duration - s.Duration(false) // Verifies that total duration is correct - : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); - s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); - } - s.SetTarget(target); - return s; - } - /// Tweens a Material's named color property using the given gradient - /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). - /// Also stores the image as the tween's target so it can be used for filtered operations - /// The gradient to use - /// The name of the material property to tween (like _Tint or _SpecColor) - /// The duration of the tween - public static Sequence DOGradientColor(this Material target, Gradient gradient, string property, float duration) - { - Sequence s = DOTween.Sequence(); - GradientColorKey[] colors = gradient.colorKeys; - int len = colors.Length; - for (int i = 0; i < len; ++i) { - GradientColorKey c = colors[i]; - if (i == 0 && c.time <= 0) { - target.SetColor(property, c.color); - continue; - } - float colorDuration = i == len - 1 - ? duration - s.Duration(false) // Verifies that total duration is correct - : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); - s.Append(target.DOColor(c.color, property, colorDuration).SetEase(Ease.Linear)); - } - s.SetTarget(target); - return s; - } - - #endregion - - #endregion -#endif - -#if UNITY_5_3_OR_NEWER || UNITY_2017_1_OR_NEWER - #region Unity 5.3 or Newer - - #region CustomYieldInstructions - - /// - /// Returns a that waits until the tween is killed or complete. - /// It can be used inside a coroutine as a yield. - /// Example usage:yield return myTween.WaitForCompletion(true); - /// - public static CustomYieldInstruction WaitForCompletion(this Tween t, bool returnCustomYieldInstruction) - { - if (!t.active) { - if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); - return null; - } - return new DOTweenCYInstruction.WaitForCompletion(t); - } - - /// - /// Returns a that waits until the tween is killed or rewinded. - /// It can be used inside a coroutine as a yield. - /// Example usage:yield return myTween.WaitForRewind(); - /// - public static CustomYieldInstruction WaitForRewind(this Tween t, bool returnCustomYieldInstruction) - { - if (!t.active) { - if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); - return null; - } - return new DOTweenCYInstruction.WaitForRewind(t); - } - - /// - /// Returns a that waits until the tween is killed. - /// It can be used inside a coroutine as a yield. - /// Example usage:yield return myTween.WaitForKill(); - /// - public static CustomYieldInstruction WaitForKill(this Tween t, bool returnCustomYieldInstruction) - { - if (!t.active) { - if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); - return null; - } - return new DOTweenCYInstruction.WaitForKill(t); - } - - /// - /// Returns a that waits until the tween is killed or has gone through the given amount of loops. - /// It can be used inside a coroutine as a yield. - /// Example usage:yield return myTween.WaitForElapsedLoops(2); - /// - /// Elapsed loops to wait for - public static CustomYieldInstruction WaitForElapsedLoops(this Tween t, int elapsedLoops, bool returnCustomYieldInstruction) - { - if (!t.active) { - if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); - return null; - } - return new DOTweenCYInstruction.WaitForElapsedLoops(t, elapsedLoops); - } - - /// - /// Returns a that waits until the tween is killed - /// or has reached the given time position (loops included, delays excluded). - /// It can be used inside a coroutine as a yield. - /// Example usage:yield return myTween.WaitForPosition(2.5f); - /// - /// Position (loops included, delays excluded) to wait for - public static CustomYieldInstruction WaitForPosition(this Tween t, float position, bool returnCustomYieldInstruction) - { - if (!t.active) { - if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); - return null; - } - return new DOTweenCYInstruction.WaitForPosition(t, position); - } - - /// - /// Returns a that waits until the tween is killed or started - /// (meaning when the tween is set in a playing state the first time, after any eventual delay). - /// It can be used inside a coroutine as a yield. - /// Example usage:yield return myTween.WaitForStart(); - /// - public static CustomYieldInstruction WaitForStart(this Tween t, bool returnCustomYieldInstruction) - { - if (!t.active) { - if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); - return null; - } - return new DOTweenCYInstruction.WaitForStart(t); - } - - #endregion - - #endregion -#endif - -#if UNITY_2018_1_OR_NEWER - #region Unity 2018.1 or Newer - - #region Material - - /// Tweens a Material's named texture offset property with the given ID to the given value. - /// Also stores the material as the tween's target so it can be used for filtered operations - /// The end value to reach - /// The ID of the material property to tween (also called nameID in Unity's manual) - /// The duration of the tween - public static TweenerCore DOOffset(this Material target, Vector2 endValue, int propertyID, float duration) - { - if (!target.HasProperty(propertyID)) { - if (Debugger.logPriority > 0) Debugger.LogMissingMaterialProperty(propertyID); - return null; - } - TweenerCore t = DOTween.To(() => target.GetTextureOffset(propertyID), x => target.SetTextureOffset(propertyID, x), endValue, duration); - t.SetTarget(target); - return t; - } - - /// Tweens a Material's named texture scale property with the given ID to the given value. - /// Also stores the material as the tween's target so it can be used for filtered operations - /// The end value to reach - /// The ID of the material property to tween (also called nameID in Unity's manual) - /// The duration of the tween - public static TweenerCore DOTiling(this Material target, Vector2 endValue, int propertyID, float duration) - { - if (!target.HasProperty(propertyID)) { - if (Debugger.logPriority > 0) Debugger.LogMissingMaterialProperty(propertyID); - return null; - } - TweenerCore t = DOTween.To(() => target.GetTextureScale(propertyID), x => target.SetTextureScale(propertyID, x), endValue, duration); - t.SetTarget(target); - return t; - } - - #endregion - - #region .NET 4.6 or Newer - -#if UNITY_2018_1_OR_NEWER && (NET_4_6 || NET_STANDARD_2_0) - - #region Async Instructions - - /// - /// Returns an async that waits until the tween is killed or complete. - /// It can be used inside an async operation. - /// Example usage:await myTween.WaitForCompletion(); - /// - public static async System.Threading.Tasks.Task AsyncWaitForCompletion(this Tween t) - { - if (!t.active) { - if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); - return; - } - while (t.active && !t.IsComplete()) await System.Threading.Tasks.Task.Yield(); - } - - /// - /// Returns an async that waits until the tween is killed or rewinded. - /// It can be used inside an async operation. - /// Example usage:await myTween.AsyncWaitForRewind(); - /// - public static async System.Threading.Tasks.Task AsyncWaitForRewind(this Tween t) - { - if (!t.active) { - if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); - return; - } - while (t.active && (!t.playedOnce || t.position * (t.CompletedLoops() + 1) > 0)) await System.Threading.Tasks.Task.Yield(); - } - - /// - /// Returns an async that waits until the tween is killed. - /// It can be used inside an async operation. - /// Example usage:await myTween.AsyncWaitForKill(); - /// - public static async System.Threading.Tasks.Task AsyncWaitForKill(this Tween t) - { - if (!t.active) { - if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); - return; - } - while (t.active) await System.Threading.Tasks.Task.Yield(); - } - - /// - /// Returns an async that waits until the tween is killed or has gone through the given amount of loops. - /// It can be used inside an async operation. - /// Example usage:await myTween.AsyncWaitForElapsedLoops(); - /// - /// Elapsed loops to wait for - public static async System.Threading.Tasks.Task AsyncWaitForElapsedLoops(this Tween t, int elapsedLoops) - { - if (!t.active) { - if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); - return; - } - while (t.active && t.CompletedLoops() < elapsedLoops) await System.Threading.Tasks.Task.Yield(); - } - - /// - /// Returns an async that waits until the tween is killed or started - /// (meaning when the tween is set in a playing state the first time, after any eventual delay). - /// It can be used inside an async operation. - /// Example usage:await myTween.AsyncWaitForPosition(); - /// - /// Position (loops included, delays excluded) to wait for - public static async System.Threading.Tasks.Task AsyncWaitForPosition(this Tween t, float position) - { - if (!t.active) { - if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); - return; - } - while (t.active && t.position * (t.CompletedLoops() + 1) < position) await System.Threading.Tasks.Task.Yield(); - } - - /// - /// Returns an async that waits until the tween is killed. - /// It can be used inside an async operation. - /// Example usage:await myTween.AsyncWaitForKill(); - /// - public static async System.Threading.Tasks.Task AsyncWaitForStart(this Tween t) - { - if (!t.active) { - if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); - return; - } - while (t.active && !t.playedOnce) await System.Threading.Tasks.Task.Yield(); - } - - #endregion -#endif - - #endregion - - #endregion -#endif - } - - // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ - // ███ CLASSES █████████████████████████████████████████████████████████████████████████████████████████████████████████ - // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ - -#if UNITY_5_3_OR_NEWER || UNITY_2017_1_OR_NEWER - public static class DOTweenCYInstruction - { - public class WaitForCompletion : CustomYieldInstruction - { - public override bool keepWaiting { get { - return t.active && !t.IsComplete(); - }} - readonly Tween t; - public WaitForCompletion(Tween tween) - { - t = tween; - } - } - - public class WaitForRewind : CustomYieldInstruction - { - public override bool keepWaiting { get { - return t.active && (!t.playedOnce || t.position * (t.CompletedLoops() + 1) > 0); - }} - readonly Tween t; - public WaitForRewind(Tween tween) - { - t = tween; - } - } - - public class WaitForKill : CustomYieldInstruction - { - public override bool keepWaiting { get { - return t.active; - }} - readonly Tween t; - public WaitForKill(Tween tween) - { - t = tween; - } - } - - public class WaitForElapsedLoops : CustomYieldInstruction - { - public override bool keepWaiting { get { - return t.active && t.CompletedLoops() < elapsedLoops; - }} - readonly Tween t; - readonly int elapsedLoops; - public WaitForElapsedLoops(Tween tween, int elapsedLoops) - { - t = tween; - this.elapsedLoops = elapsedLoops; - } - } - - public class WaitForPosition : CustomYieldInstruction - { - public override bool keepWaiting { get { - return t.active && t.position * (t.CompletedLoops() + 1) < position; - }} - readonly Tween t; - readonly float position; - public WaitForPosition(Tween tween, float position) - { - t = tween; - this.position = position; - } - } - - public class WaitForStart : CustomYieldInstruction - { - public override bool keepWaiting { get { - return t.active && !t.playedOnce; - }} - readonly Tween t; - public WaitForStart(Tween tween) - { - t = tween; - } - } - } -#endif -} diff --git a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta b/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta deleted file mode 100644 index 75ebbe07..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 2d73cfebef7923e43bd418c342784610 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUtils.cs b/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUtils.cs deleted file mode 100644 index 12a365d4..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUtils.cs +++ /dev/null @@ -1,167 +0,0 @@ -// 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 -{ - /// - /// 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 - /// - public static class DOTweenModuleUtils - { - static bool _initialized; - - #region Reflection - - /// - /// Called via Reflection by DOTweenComponent on Awake - /// -#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() != 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() != null; -#else - return false; -#endif - } - - // Called via Reflection by DOTweenPath -#if UNITY_2018_1_OR_NEWER - [UnityEngine.Scripting.Preserve] -#endif - public static TweenerCore CreateDOTweenPathTween( - MonoBehaviour target, bool tweenRigidbody, bool isLocal, Path path, float duration, PathMode pathMode - ){ - TweenerCore t = null; - bool rBodyFoundAndTweened = false; -#if true // PHYSICS_MARKER - if (tweenRigidbody) { - Rigidbody rBody = target.GetComponent(); - 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(); - 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 - } - } -} diff --git a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUtils.cs.meta b/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUtils.cs.meta deleted file mode 100644 index b4329698..00000000 --- a/Assets/TEngine/Thirdly/DOTween/Modules/DOTweenModuleUtils.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: aebbb583f1fba1d4e8f75df45e758b7c -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/TEngine/Thirdly/DOTween/readme.txt b/Assets/TEngine/Thirdly/DOTween/readme.txt deleted file mode 100644 index 37ff7ef5..00000000 --- a/Assets/TEngine/Thirdly/DOTween/readme.txt +++ /dev/null @@ -1,29 +0,0 @@ -DOTween and DOTween Pro are copyright (c) 2014-2018 Daniele Giardini - Demigiant - -// IMPORTANT!!! ///////////////////////////////////////////// -// Upgrading DOTween from versions older than 1.2.000 /////// -// (or DOTween Pro older than 1.0.000) ////////////////////// -------------------------------------------------------------- -If you're upgrading your project from a version of DOTween older than 1.2.000 (or DOTween Pro older than 1.0.000) please follow these instructions carefully. -1) Import the new version in the same folder as the previous one, overwriting old files. A lot of errors will appear but don't worry -2) Close and reopen Unity (and your project). This is fundamental: skipping this step will cause a bloodbath -3) Open DOTween's Utility Panel (Tools > Demigiant > DOTween Utility Panel) if it doesn't open automatically, then press "Setup DOTween...": this will run the upgrade setup -4) From the Add/Remove Modules panel that opens, activate/deactivate Modules for Unity systems and for external assets (Pro version only) - -// GET STARTED ////////////////////////////////////////////// - -- After importing a new DOTween update, select DOTween's Utility Panel from the "Tools/Demigiant" menu (if it doesn't open automatically) and press the "Setup DOTween..." button to activate/deactivate Modules. You can also access a Preferences Tab from there to choose default settings for DOTween. -- In your code, add "using DG.Tweening" to each class where you want to use DOTween. -- You're ready to tween. Check out the links below for full documentation and license info. - - -// LINKS /////////////////////////////////////////////////////// - -DOTween website (documentation, examples, etc): http://dotween.demigiant.com -DOTween license: http://dotween.demigiant.com/license.php -DOTween repository (Google Code): https://code.google.com/p/dotween/ -Demigiant website (documentation, examples, etc): http://www.demigiant.com - -// NOTES ////////////////////////////////////////////////////// - -- DOTween's Utility Panel can be found under "Tools > Demigiant > DOTween Utility Panel" and also contains other useful options, plus a tab to set DOTween's preferences \ No newline at end of file diff --git a/Assets/TEngine/Thirdly/DOTween/readme.txt.meta b/Assets/TEngine/Thirdly/DOTween/readme.txt.meta deleted file mode 100644 index 91c31460..00000000 --- a/Assets/TEngine/Thirdly/DOTween/readme.txt.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 40ef6fc3a1da4f84893564441482788b -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: