// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. using System; using UnityEngine; namespace HoloToolkit.Unity { /// <summary> /// A behaviour designed to help child behaviours take certain actions only after Start has been called. /// </summary> [Obsolete] public abstract class StartAwareBehaviour : MonoBehaviour { #region MonoBehaviour implementation protected virtual void OnEnable() { if (IsStarted) { OnEnableAfterStart(); } } protected virtual void OnDisable() { if (IsStarted) { OnDisableAfterStart(); } } protected virtual void Start() { IsStarted = true; OnEnableAfterStart(); } #endregion protected bool IsStarted { get; private set; } /// <summary> /// This method is similar to Unity's OnEnable method, except that it's called only after Start. This /// means all <see cref="Singleton{T}"/> classes will have had a chance to run their Awake methods and /// <see cref="Singleton{T}.Instance"/> will be safe to use. /// </summary> protected virtual void OnEnableAfterStart() { Debug.Assert(IsStarted, "OnEnableAfterStart should only occur after Start."); } /// <summary> /// This method is similar to Unity's OnDisable method, except that it's called only after Start. This /// means all <see cref="Singleton{T}"/> classes will have had a chance to run their Awake methods and /// <see cref="Singleton{T}.Instance"/> will be safe to use. /// </summary> protected virtual void OnDisableAfterStart() { Debug.Assert(IsStarted, "OnDisableAfterStart should only occur after Start."); } } }