Advertisement
Demigiant

Editor Tween Sample - OnSceneGUI

Aug 11th, 2020 (edited)
1,285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.18 KB | None | 0 0
  1. using System;
  2. using DG.DOTweenEditor;
  3. using DG.Tweening;
  4. using UnityEditor;
  5. using UnityEngine;
  6.  
  7. [CustomEditor(typeof(SceneGUIComponent))]
  8. public class SceneGUIComponentInspector : UnityEditor.Editor
  9. {
  10.     SceneGUIComponent _src;
  11.  
  12.     void OnEnable()
  13.     {
  14.         _src = target as SceneGUIComponent;
  15.     }
  16.  
  17.     public override void OnInspectorGUI()
  18.     {
  19.         GUILayout.Label("Custom Inspector with OnSceneGUI implemented");
  20.         DrawDefaultInspector();
  21.     }
  22.  
  23.     void OnSceneGUI()
  24.     {
  25.         Handles.BeginGUI();
  26.         using (new GUILayout.HorizontalScope()) {
  27.             GUILayout.Space(6);
  28.             using (new EditorGUI.DisabledScope(DOTweenEditorPreview.isPreviewing)) {
  29.                 if (GUILayout.Button("Begin tweens update loop")) BeginTweensUpdateLoop();
  30.             }
  31.             using (new EditorGUI.DisabledScope(!DOTweenEditorPreview.isPreviewing)) {
  32.                 if (GUILayout.Button("Stop tweens update loop")) StopTweensUpdateLoop(false);
  33.                 if (GUILayout.Button("Stop tweens update loop and reset targets")) StopTweensUpdateLoop(true);
  34.             }
  35.             GUILayout.Space(60);
  36.         }
  37.         using (new GUILayout.HorizontalScope()) {
  38.             GUILayout.Space(6);
  39.             if (GUILayout.Button("Create tweens")) CreateTweens();
  40.             GUILayout.Space(60);
  41.         }
  42.         if (DOTweenEditorPreview.isPreviewing) GUILayout.Label("Tweens are being updated");
  43.         Handles.EndGUI();
  44.     }
  45.  
  46.     void BeginTweensUpdateLoop()
  47.     {
  48.         // Start the editor tweens update loop
  49.         // (will update any tween you passed to PrepareTweenForPreview)
  50.         DOTweenEditorPreview.Start();
  51.     }
  52.  
  53.     void StopTweensUpdateLoop(bool andResetTargets)
  54.     {
  55.         // Stop all editor tweens
  56.         // (you can pass a TRUE parameter to also reset the tween targets to their original state)
  57.         DOTweenEditorPreview.Stop(andResetTargets);
  58.     }
  59.  
  60.     void CreateTweens()
  61.     {
  62.         // Create tweens as usual
  63.         foreach (Transform t in _src.tweenTargets) {
  64.             Tween tween = t.DOMoveX(2, 1);
  65.             DOTweenEditorPreview.PrepareTweenForPreview(tween);
  66.         }
  67.     }
  68.  
  69.    
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement