unityzgy/Assets/ThirdPackages/VRPackage/VRTK/Scripts/Internal/VRTK_CollisionTracker.cs
ayuan9957 bf12e02276 feat: 多语言本地化系统 - 支持中/英/法/俄实时切换
- LocalizationManager: 新增翻译表(SetFormatted/SetDuration/LocalizeOperateMsg)
- LoginPanel: InputField placeholder本地化、字体颜色保持
- HistoryPanel: 用时数据本地化、placeholder本地化
- RecordDetailPanel: 操作详情消息本地化(LanguageChanged重建)
- AppraiseWindowBase: 评价等级本地化、操作消息重建
- EditorAppraiser: 所有评估消息改用InjectOperateMsgLocalized
- StudentOperateRecorder: 新增InjectOperateMsgLocalized方法
- LocalizationLanguageTestBar: 单例模式、ScreenSpaceOverlay筛选
- 字体切换时保留颜色和verticalOverflow
2026-07-16 10:05:59 +08:00

110 lines
3.3 KiB
C#

namespace VRTK
{
using UnityEngine;
public struct CollisionTrackerEventArgs
{
public bool isTrigger;
public Collision collision;
public Collider collider;
}
public delegate void CollisionTrackerEventHandler(object sender, CollisionTrackerEventArgs e);
public class VRTK_CollisionTracker : MonoBehaviour
{
public event CollisionTrackerEventHandler CollisionEnter;
public event CollisionTrackerEventHandler CollisionStay;
public event CollisionTrackerEventHandler CollisionExit;
public event CollisionTrackerEventHandler TriggerEnter;
public event CollisionTrackerEventHandler TriggerStay;
public event CollisionTrackerEventHandler TriggerExit;
protected void OnCollisionEnterEvent(CollisionTrackerEventArgs e)
{
if (CollisionEnter != null)
{
CollisionEnter(this, e);
}
}
protected void OnCollisionStayEvent(CollisionTrackerEventArgs e)
{
if (CollisionStay != null)
{
CollisionStay(this, e);
}
}
protected void OnCollisionExitEvent(CollisionTrackerEventArgs e)
{
if (CollisionExit != null)
{
CollisionExit(this, e);
}
}
protected void OnTriggerEnterEvent(CollisionTrackerEventArgs e)
{
if (TriggerEnter != null)
{
TriggerEnter(this, e);
}
}
protected void OnTriggerStayEvent(CollisionTrackerEventArgs e)
{
if (TriggerStay != null)
{
TriggerStay(this, e);
}
}
protected void OnTriggerExitEvent(CollisionTrackerEventArgs e)
{
if (TriggerExit != null)
{
TriggerExit(this, e);
}
}
protected virtual void OnCollisionEnter(Collision collision)
{
OnCollisionEnterEvent(SetCollisionTrackerEvent(false, collision, collision.collider));
}
protected virtual void OnCollisionStay(Collision collision)
{
OnCollisionStayEvent(SetCollisionTrackerEvent(false, collision, collision.collider));
}
protected virtual void OnCollisionExit(Collision collision)
{
OnCollisionExitEvent(SetCollisionTrackerEvent(false, collision, collision.collider));
}
protected virtual void OnTriggerEnter(Collider collider)
{
OnTriggerEnterEvent(SetCollisionTrackerEvent(true, null, collider));
}
protected virtual void OnTriggerStay(Collider collider)
{
OnTriggerStayEvent(SetCollisionTrackerEvent(true, null, collider));
}
protected virtual void OnTriggerExit(Collider collider)
{
OnTriggerExitEvent(SetCollisionTrackerEvent(true, null, collider));
}
protected virtual CollisionTrackerEventArgs SetCollisionTrackerEvent(bool isTrigger, Collision givenCollision, Collider givenCollider)
{
CollisionTrackerEventArgs e;
e.isTrigger = isTrigger;
e.collision = givenCollision;
e.collider = givenCollider;
return e;
}
}
}