├── .gitignore └── timelineExample ├── Assets ├── Scenes.meta ├── Scenes │ ├── exampleTimeline.unity │ └── exampleTimeline.unity.meta ├── Scripts.meta └── Scripts │ ├── ITimeChanging.cs │ ├── ITimeChanging.cs.meta │ ├── LineMovement.cs │ ├── LineMovement.cs.meta │ ├── StandardManager.cs │ ├── StandardManager.cs.meta │ ├── TimeLineBehavior.cs │ ├── TimeLineBehavior.cs.meta │ ├── TimeManager.cs │ └── TimeManager.cs.meta └── ProjectSettings ├── AudioManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityAdsSettings.asset └── UnityAnalyticsManager.asset /.gitignore: -------------------------------------------------------------------------------- 1 | timelineExample/Library/ 2 | timelineExample/Temp/ 3 | timelineExample/.vs/timelineExample/v14/.suo 4 | timelineExample/timelineExample.CSharp.csproj 5 | timelineExample/timelineExample.sln 6 | -------------------------------------------------------------------------------- /timelineExample/Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bccdb98f28163584bbf65a14ac99638b 3 | folderAsset: yes 4 | timeCreated: 1467566175 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /timelineExample/Assets/Scenes/exampleTimeline.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexander91/timelineExample/e725fae9b3e54e0b1e842d14f703a4a2dfaabe26/timelineExample/Assets/Scenes/exampleTimeline.unity -------------------------------------------------------------------------------- /timelineExample/Assets/Scenes/exampleTimeline.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2e0eaebd82e31d64a8213be3369e9ca1 3 | timeCreated: 1467566175 4 | licenseType: Free 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /timelineExample/Assets/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c072532c356557e44ab97e216934383a 3 | folderAsset: yes 4 | timeCreated: 1467566238 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /timelineExample/Assets/Scripts/ITimeChanging.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | 4 | public interface ITimeChanging 5 | { 6 | void AddTime(float dt); 7 | } 8 | -------------------------------------------------------------------------------- /timelineExample/Assets/Scripts/ITimeChanging.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 87f818e987e3f9d4f8edb9bd5b4ca9ab 3 | timeCreated: 1467566294 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /timelineExample/Assets/Scripts/LineMovement.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using System; 4 | 5 | public class LineMovement : MonoBehaviour, ITimeChanging { 6 | 7 | [SerializeField] 8 | Vector3 direction = Vector3.up; 9 | [SerializeField] 10 | float speed = 0.2f; 11 | 12 | public void AddTime(float dt) 13 | { 14 | transform.position += dt * speed * direction.normalized; 15 | } 16 | 17 | // Use this for initialization 18 | void Start () { 19 | 20 | } 21 | 22 | // Update is called once per frame 23 | void Update () { 24 | 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /timelineExample/Assets/Scripts/LineMovement.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2fa698b98a164774c8592e9504deed12 3 | timeCreated: 1467566791 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /timelineExample/Assets/Scripts/StandardManager.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | 6 | public class StandardManager : MonoBehaviour { 7 | private TimeManager timeManager = new TimeManager(); 8 | 9 | // Use this for initialization 10 | void Start () { 11 | 12 | 13 | var allBehs = GetComponentsInChildren(); 14 | var allBehsList = new List(allBehs); 15 | var timeDependant = allBehsList.OfType(); 16 | 17 | timeManager.TimeDependants = timeDependant; 18 | 19 | } 20 | 21 | // Update is called once per frame 22 | void Update () { 23 | timeManager.Time += Time.deltaTime; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /timelineExample/Assets/Scripts/StandardManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fd02388eee1628740a0b2fd1705539ec 3 | timeCreated: 1467566666 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /timelineExample/Assets/Scripts/TimeLineBehavior.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | using System.Collections; 4 | using System.Collections.Generic; 5 | 6 | #if UNITY_EDITOR 7 | using UnityEditor; 8 | using System.Linq; 9 | #endif 10 | 11 | 12 | [ExecuteInEditMode] 13 | public class TimeLineBehavior : MonoBehaviour { 14 | 15 | public float nowTime; 16 | 17 | [SerializeField] 18 | bool setZero = false; 19 | 20 | [SerializeField] 21 | bool setNowAsZero = false; 22 | 23 | TimeManager timeManager = new TimeManager(); 24 | 25 | #if UNITY_EDITOR 26 | // Use this for initialization 27 | void Start () { 28 | EditorApplication.playmodeStateChanged += HandleOnPlayModeChanged; 29 | } 30 | 31 | void OnDestroy(){ 32 | EditorApplication.playmodeStateChanged -= HandleOnPlayModeChanged; 33 | } 34 | 35 | void UpdateTime() 36 | { 37 | var allBehs = GetComponentsInChildren(); 38 | var allBehsList = new List(allBehs); 39 | var timeDependant = allBehsList.OfType(); 40 | 41 | timeManager.TimeDependants = timeDependant; 42 | 43 | timeManager.Time = nowTime; 44 | nowTime = timeManager.Time; 45 | } 46 | 47 | void CheckSetNowAsZero() 48 | { 49 | if (setNowAsZero) 50 | { 51 | timeManager.SetTimeBruteForce(0f); 52 | nowTime = 0f; 53 | setNowAsZero = false; 54 | } 55 | } 56 | 57 | void HandleOnPlayModeChanged() 58 | { 59 | // This method is run whenever the playmode state is changed. 60 | 61 | if (EditorApplication.isPlaying) { return; } 62 | 63 | if (EditorApplication.isPlayingOrWillChangePlaymode) 64 | { 65 | nowTime = 0; 66 | UpdateTime(); 67 | } 68 | } 69 | 70 | void CheckSetZero() 71 | { 72 | if (setZero) 73 | { 74 | setZero = false; 75 | nowTime = 0; 76 | } 77 | } 78 | 79 | // Update is called once per frame 80 | public void Update () { 81 | if (EditorApplication.isPlaying) return; 82 | 83 | CheckSetZero(); 84 | UpdateTime(); 85 | CheckSetNowAsZero(); 86 | } 87 | #endif 88 | } 89 | 90 | 91 | -------------------------------------------------------------------------------- /timelineExample/Assets/Scripts/TimeLineBehavior.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6a008c334f10a3143abf5a4edfb5bb81 3 | timeCreated: 1467566476 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /timelineExample/Assets/Scripts/TimeManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using UnityEngine; 5 | 6 | public class TimeManager 7 | { 8 | private float time; 9 | 10 | public TimeManager() 11 | { 12 | TimeDependants = new List(); 13 | } 14 | 15 | public float Time 16 | { 17 | get 18 | { 19 | return time; 20 | } 21 | set 22 | { 23 | if (value != time) 24 | { 25 | var delta = value - time; 26 | foreach (var timeDep in TimeDependants) 27 | { 28 | timeDep.AddTime(delta); 29 | } 30 | } 31 | time = value; 32 | } 33 | } 34 | 35 | public void SetTimeBruteForce(float time) 36 | { 37 | this.time = time; 38 | } 39 | 40 | public IEnumerable TimeDependants { get; set; } 41 | } 42 | 43 | -------------------------------------------------------------------------------- /timelineExample/Assets/Scripts/TimeManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1f0b8a2f85e53ce4d83ce51c493fae00 3 | timeCreated: 1467566270 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /timelineExample/ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexander91/timelineExample/e725fae9b3e54e0b1e842d14f703a4a2dfaabe26/timelineExample/ProjectSettings/AudioManager.asset -------------------------------------------------------------------------------- /timelineExample/ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexander91/timelineExample/e725fae9b3e54e0b1e842d14f703a4a2dfaabe26/timelineExample/ProjectSettings/DynamicsManager.asset -------------------------------------------------------------------------------- /timelineExample/ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexander91/timelineExample/e725fae9b3e54e0b1e842d14f703a4a2dfaabe26/timelineExample/ProjectSettings/EditorBuildSettings.asset -------------------------------------------------------------------------------- /timelineExample/ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexander91/timelineExample/e725fae9b3e54e0b1e842d14f703a4a2dfaabe26/timelineExample/ProjectSettings/EditorSettings.asset -------------------------------------------------------------------------------- /timelineExample/ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexander91/timelineExample/e725fae9b3e54e0b1e842d14f703a4a2dfaabe26/timelineExample/ProjectSettings/GraphicsSettings.asset -------------------------------------------------------------------------------- /timelineExample/ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexander91/timelineExample/e725fae9b3e54e0b1e842d14f703a4a2dfaabe26/timelineExample/ProjectSettings/InputManager.asset -------------------------------------------------------------------------------- /timelineExample/ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexander91/timelineExample/e725fae9b3e54e0b1e842d14f703a4a2dfaabe26/timelineExample/ProjectSettings/NavMeshAreas.asset -------------------------------------------------------------------------------- /timelineExample/ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexander91/timelineExample/e725fae9b3e54e0b1e842d14f703a4a2dfaabe26/timelineExample/ProjectSettings/NetworkManager.asset -------------------------------------------------------------------------------- /timelineExample/ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexander91/timelineExample/e725fae9b3e54e0b1e842d14f703a4a2dfaabe26/timelineExample/ProjectSettings/Physics2DSettings.asset -------------------------------------------------------------------------------- /timelineExample/ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexander91/timelineExample/e725fae9b3e54e0b1e842d14f703a4a2dfaabe26/timelineExample/ProjectSettings/ProjectSettings.asset -------------------------------------------------------------------------------- /timelineExample/ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 5.2.2f1 2 | m_StandardAssetsVersion: 0 3 | -------------------------------------------------------------------------------- /timelineExample/ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexander91/timelineExample/e725fae9b3e54e0b1e842d14f703a4a2dfaabe26/timelineExample/ProjectSettings/QualitySettings.asset -------------------------------------------------------------------------------- /timelineExample/ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexander91/timelineExample/e725fae9b3e54e0b1e842d14f703a4a2dfaabe26/timelineExample/ProjectSettings/TagManager.asset -------------------------------------------------------------------------------- /timelineExample/ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexander91/timelineExample/e725fae9b3e54e0b1e842d14f703a4a2dfaabe26/timelineExample/ProjectSettings/TimeManager.asset -------------------------------------------------------------------------------- /timelineExample/ProjectSettings/UnityAdsSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexander91/timelineExample/e725fae9b3e54e0b1e842d14f703a4a2dfaabe26/timelineExample/ProjectSettings/UnityAdsSettings.asset -------------------------------------------------------------------------------- /timelineExample/ProjectSettings/UnityAnalyticsManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexander91/timelineExample/e725fae9b3e54e0b1e842d14f703a4a2dfaabe26/timelineExample/ProjectSettings/UnityAnalyticsManager.asset --------------------------------------------------------------------------------