// This code is part of the Fungus library (https://github.com/snozbot/fungus) // It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE) using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Fungus { /// /// The block will execute when the desired Rendering related message for the monobehaviour is received. /// [EventHandlerInfo("MonoBehaviour", "Render", "The block will execute when the desired Rendering related message for the monobehaviour is received.")] [AddComponentMenu("")] public class Render : EventHandler { [System.Flags] public enum RenderMessageFlags { OnPostRender = 1 << 0, OnPreCull = 1 << 1, OnPreRender = 1 << 2, //OnRenderImage = 1 << 3, OnRenderObject = 1 << 4, OnWillRenderObject = 1 << 5, OnBecameInvisible = 1 << 6, OnBecameVisible = 1 << 7, } [Tooltip("Which of the Rendering messages to trigger on.")] [SerializeField] [EnumFlag] protected RenderMessageFlags FireOn = RenderMessageFlags.OnWillRenderObject; private void OnPostRender() { if((FireOn & RenderMessageFlags.OnPostRender) != 0) { ExecuteBlock(); } } private void OnPreCull() { if ((FireOn & RenderMessageFlags.OnPreCull) != 0) { ExecuteBlock(); } } private void OnPreRender() { if ((FireOn & RenderMessageFlags.OnPreRender) != 0) { ExecuteBlock(); } } private void OnRenderImage(RenderTexture source, RenderTexture destination) { //TODO } private void OnRenderObject() { if ((FireOn & RenderMessageFlags.OnRenderObject) != 0) { ExecuteBlock(); } } private void OnWillRenderObject() { if ((FireOn & RenderMessageFlags.OnWillRenderObject) != 0) { ExecuteBlock(); } } private void OnBecameInvisible() { if ((FireOn & RenderMessageFlags.OnBecameInvisible) != 0) { ExecuteBlock(); } } private void OnBecameVisible() { if ((FireOn & RenderMessageFlags.OnBecameVisible) != 0) { ExecuteBlock(); } } } }