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(); ObjectColorToggle colorToggle = null; if (body.toggle.color != null) { colorToggle = gameObject.GetOrAddComponent(); colorToggle.Init(Utility.ToColor(body.toggle.color.isOn), Utility.ToColor(body.toggle.color.isOff)); } objToggle.OnValueChanged.AddListener(isOn => { if (Body3DController.Instance.CheckStatus(Body3DController.Status.Active)) { if (isOn == true) { gameObject.SetActive(false); } } else { colorToggle?.SetColor(isOn); objDrag = gameObject.GetOrAddComponent(); RefreshDrag(); TypeEventSystem.Global.Send(new OnBody3DSelected() { isOn = isOn, obj = gameObject }); if (isOn) { TypeEventSystem.Global.Register(OnBody3DDragHandler); } else { TypeEventSystem.Global.UnRegister(OnBody3DDragHandler); } } }); } } } private void OnBody3DDragHandler(OnBody3DDragChanged drag) { RefreshDrag(); } public void RefreshDrag() { if (objToggle != null && objDrag != null) { objDrag.isOn = objToggle.isOn && Body3DController.Instance.CheckStatus(Body3DController.Status.Drag); } } }