VirtualFramework/Assets/Scripts/Item/Body3DOjbItem.cs
2025-02-13 11:02:16 +08:00

68 lines
1.9 KiB
C#

using QFramework;
using QFramework.Example;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XMLTool;
public class Body3DOjbItem : MonoBehaviour
{
public Body3D.Body body;
ObjectToggle objToggle;
ObjDrag objDrag;
private void Awake()
{
}
public void Init(Body3D.Body body)
{
this.body = body;
if (body.subBody == null || body.subBody.Count == 0)
{
if (body.toggle != null)
{
objToggle = gameObject.GetOrAddComponent<ObjectToggle>();
ObjectColorToggle colorToggle = null;
if (body.toggle.color != null)
{
colorToggle = gameObject.GetOrAddComponent<ObjectColorToggle>();
colorToggle.Init(Utility.ToColor(body.toggle.color.isOn), Utility.ToColor(body.toggle.color.isOff));
}
objToggle.OnValueChanged.AddListener(isOn =>
{
colorToggle?.SetColor(isOn);
objDrag = gameObject.GetOrAddComponent<ObjDrag>();
RefreshDrag();
TypeEventSystem.Global.Send<OnBody3DSelected>(new OnBody3DSelected() { isOn = isOn, obj = gameObject });
if (isOn)
{
TypeEventSystem.Global.Register<OnBody3DDragChanged>(OnBody3DDragHandler);
}
else
{
TypeEventSystem.Global.UnRegister<OnBody3DDragChanged>(OnBody3DDragHandler);
}
});
}
}
}
private void OnBody3DDragHandler(OnBody3DDragChanged drag)
{
RefreshDrag();
}
public void RefreshDrag()
{
if (objToggle != null && objDrag != null)
{
objDrag.isOn = objToggle.isOn && Body3DController.Instance.allowDrag;
}
}
}