Files
Studio/Assets/Scripts/XRLib/Behaviour/MonoBehaviour.cs
2025-05-25 14:19:35 +09:00

116 lines
3.4 KiB
C#

using System;
using UnityEngine;
using UnityEngineInternal;
using XRLib;
using Object = UnityEngine.Object;
[Serializable]
public partial class MonoBehaviour : UnityEngine.MonoBehaviour
{
public virtual void AfterAwake()
{
}
public virtual void AfterStart()
{
}
public MonoBehaviour()
{
if (this.GetType() != typeof(TrashBehaviour))
Hooker.RegistReady(this);
}
public T FindSingle<T>() where T : MonoBehaviour, ISingle
{
var hashCode = typeof(T).GetHashCode();
T result = default;
if (Core.singleTable.TryGetValue(hashCode, out var mb))
{
result = (T)mb;
return result;
}
return result;
}
public T Find<T>(string name) where T : Component
{
return transform.DeepFind<T>(name);
}
public new static Object Instantiate(Object original, Vector3 position, Quaternion rotation)
{
var no = Object.Instantiate(original, position, rotation);
Core.Regist(no);
return no;
}
[TypeInferenceRule(TypeInferenceRules.TypeOfFirstArgument)]
public new static Object Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent)
{
var no = Object.Instantiate(original, position, rotation, parent);
Core.Regist(no);
return no;
}
[TypeInferenceRule(TypeInferenceRules.TypeOfFirstArgument)]
public new static Object Instantiate(Object original)
{
var no = Object.Instantiate(original);
Core.Regist(no);
return no;
}
[TypeInferenceRule(TypeInferenceRules.TypeOfFirstArgument)]
public new static Object Instantiate(Object original, Transform parent)
{
var no = Object.Instantiate(original, parent, instantiateInWorldSpace: false);
Core.Regist(no);
return no;
}
[TypeInferenceRule(TypeInferenceRules.TypeOfFirstArgument)]
public new static Object Instantiate(Object original, Transform parent, bool instantiateInWorldSpace)
{
var no = Object.Instantiate(original, parent, instantiateInWorldSpace);
Core.Regist(no);
return no;
}
public new static T Instantiate<T>(T original) where T : Object
{
var no = Object.Instantiate(original);
Core.Regist(no);
return no;
}
public new static T Instantiate<T>(T original, Vector3 position, Quaternion rotation) where T : Object
{
var no = (T)Object.Instantiate((Object)original, position, rotation);
Core.Regist(no);
return no;
}
public new static T Instantiate<T>(T original, Vector3 position, Quaternion rotation, Transform parent) where T : Object
{
var no = (T)Object.Instantiate((Object)original, position, rotation, parent);
Core.Regist(no);
return no;
}
public new static T Instantiate<T>(T original, Transform parent) where T : Object
{
var no = Object.Instantiate(original, parent, worldPositionStays: false);
Core.Regist(no);
return no;
}
public new static T Instantiate<T>(T original, Transform parent, bool worldPositionStays) where T : Object
{
var no = (T)Object.Instantiate((Object)original, parent, worldPositionStays);
Core.Regist(no);
return no;
}
protected virtual void OnDestroy()
{
if (this.GetType() != typeof(TrashBehaviour))
XRLib.Core.Unregist(this);
}
}