1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- using System;
- using System.Collections.Generic;
-
- namespace UnityEngine.U2D.IK
- {
- /// <summary>
- /// Base class used for defining culling strategies for IKManager2D.
- /// </summary>
- internal abstract class BaseCullingStrategy
- {
- public bool enabled => m_IsCullingEnabled;
- bool m_IsCullingEnabled;
-
- HashSet<object> m_RequestingManagers;
-
- /// <summary>
- /// Used to check if bone transforms should be culled.
- /// </summary>
- /// <param name="transformIds">A collection of bones' transform ids.</param>
- /// <returns>True if any bone is visible.</returns>
- public abstract bool AreBonesVisible(IList<int> transformIds);
-
- public void AddRequestingObject(object requestingObject)
- {
- if (!m_IsCullingEnabled)
- {
- m_IsCullingEnabled = true;
-
- Initialize();
- }
-
- m_RequestingManagers.Add(requestingObject);
- }
-
- public void RemoveRequestingObject(object requestingObject)
- {
- if (m_RequestingManagers.Remove(requestingObject) && m_RequestingManagers.Count == 0)
- {
- m_IsCullingEnabled = false;
-
- Disable();
- }
- }
-
- public void Initialize()
- {
- m_RequestingManagers = new HashSet<object>();
- OnInitialize();
- }
-
- public void Update()
- {
- OnUpdate();
- }
-
- public void Disable()
- {
- OnDisable();
- }
-
- protected virtual void OnInitialize() { }
- protected virtual void OnUpdate() { }
- protected virtual void OnDisable() { }
- }
- }
|