evershade/Packages/super-tiled2unity.v2.2.0/Runtime/Extensions/GameObjectExtensions.cs

49 lines
1.3 KiB
C#

using UnityEngine;
namespace SuperTiled2Unity
{
public static class GameObjectExtensions
{
// Like GetComponentInParent but doesn't check current object
public static T GetComponentInAncestor<T>(this MonoBehaviour mono) where T : MonoBehaviour
{
return GetComponentInAncestor<T>(mono.gameObject);
}
// Like GetComponentInParent but doesn't check current object
public static T GetComponentInAncestor<T>(this GameObject go) where T : MonoBehaviour
{
if (go == null)
{
return null;
}
var parent = go.transform.parent;
if (parent == null)
{
return null;
}
return parent.GetComponentInParent<T>();
}
public static bool TryGetCustomPropertySafe(this GameObject go, string name, out CustomProperty property)
{
property = null;
if (go == null)
{
return false;
}
var customProperties = go.GetComponent<SuperCustomProperties>();
if (customProperties == null)
{
return false;
}
return customProperties.TryGetCustomProperty(name, out property);
}
}
}