/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
* that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
using UnityEngine;
namespace Live2D.Cubism.Core
{
///
/// Extensions for s.
///
public static class ComponentExtensionMethods
{
///
/// Finds a relative to a .
///
/// Component to base search on.
/// Condition for including parents in search.
/// The relative if found; otherwise.
public static CubismModel FindCubismModel(this Component self, bool includeParents = false)
{
// Validate arguments.
if (self == null)
{
return null;
}
var model = self.GetComponent();
// Return model if found.
if (model != null)
{
return model;
}
// Recursively search in parents if requested.
if (includeParents)
{
for (var parent = self.transform.parent; parent != null; parent = parent.parent)
{
model = parent.GetComponent();
if (model)
{
return model;
}
}
}
// Signal not found.
return null;
}
}
}