/// <summary> /// Called by Unity. Blockingly updates <see langword="this"/> on first frame enabled; otherwise tries async update. /// </summary> private void OnRenderObject() { // Return unless revived. if (!IsRevived) { return; } // Return if already ticked this frame. if (LastTick == Time.frameCount && Application.isPlaying) { return; } LastTick = Time.frameCount; // Try to sync parameters and parts (without caring whether task is executing or not). TaskableModel.TryWriteParametersAndParts(Parameters, Parts); // Return if task is executing. if (TaskableModel.IsExecuting) { return; } // Force blocking update on first frame enabled. if (WasJustEnabled) { // Force sync update. TaskableModel.UpdateNow(); // Unset condition. WasJustEnabled = false; // Fetch results by calling own 'Update()'. Update(); return; } // Enqueue update task. TaskableModel.Update(); }
/// <summary> /// Called by Unity. Triggers <see langword="this"/> to update. /// </summary> private void Update() { #if UNITY_2018_1_OR_NEWER if (!WasAttachedModelUpdateFunction) { _modelUpdateFunctions += OnModelUpdate; WasAttachedModelUpdateFunction = true; } #endif // Return on first frame enabled. if (WasJustEnabled) { return; } // Return unless revived. if (!IsRevived) { return; } // Return if backend is ticking. if (!TaskableModel.DidExecute) { return; } // Sync parameters back. TaskableModel.TryReadParameters(Parameters); // restore last frame parameters value and parts opacity. if (_parameterStore != null) { _parameterStore.RestoreParameters(); } // Trigger event. if (OnDynamicDrawableData == null) { return; } OnDynamicDrawableData(this, TaskableModel.DynamicDrawableData); }
/// <summary> /// Called by Unity. Releases unmanaged memory. /// </summary> private void OnDestroy() { if (!IsRevived) { return; } TaskableModel.ReleaseUnmanaged(); TaskableModel = null; }
/// <summary> /// Called by Unity. Triggers <see langword="this"/> to update. /// </summary> private void Update() { // Return on first frame enabled. if (WasJustEnabled) { return; } // Return unless revived. if (!IsRevived) { return; } // Return if backend is ticking. if (!TaskableModel.DidExecute) { return; } // Sync parameters back. TaskableModel.TryReadParameters(Parameters); // restore last frame parameters value and parts opacity. if (_parameterStore != null) { _parameterStore.RestoreParameters(); } // Trigger event. if (OnDynamicDrawableData == null) { return; } Profiler.BeginSample("OnDynamicDrawableData"); OnDynamicDrawableData(this, TaskableModel.DynamicDrawableData); Profiler.EndSample(); }
/// <summary> /// Called by Unity. Triggers <see langword="this"/> to update. /// </summary> private void Update() { // Return on first frame enabled. if (WasJustEnabled) { return; } // Return unless revived. if (!IsRevived) { return; } // Return if backend is ticking. if (!TaskableModel.DidExecute) { return; } // Sync parameters back. TaskableModel.TryReadParameters(Parameters); // Trigger event. if (OnDynamicDrawableData == null) { return; } OnDynamicDrawableData(this, TaskableModel.DynamicDrawableData); }