95 lines
3.0 KiB
C#
Raw Normal View History

2025-02-10 17:23:54 +08:00
using UnityEngine;
using UnityEngine.UI;
using XMLTool;
using TMPro;
namespace QFramework.Example
{
public class UIBody3DData : UIPanelData
{
2025-02-11 16:42:39 +08:00
public Body3D.Body body = new Body3D.Body();
2025-02-10 17:23:54 +08:00
}
public partial class UIBody3D : UIPanel
{
2025-02-14 13:20:54 +08:00
GameObject root;
2025-02-10 17:23:54 +08:00
protected override void OnInit(IUIData uiData = null)
{
2025-02-13 11:02:16 +08:00
DragBtn.onValueChanged.AddListener(isOn =>
{
DragBtn.transform.Find("SubBtns").gameObject.SetActive(isOn);
2025-02-13 11:02:16 +08:00
Body3DController.Instance.allowDrag = isOn;
2025-02-13 17:39:33 +08:00
Body3DController.Instance.SetStatus(Body3DController.Status.Drag, isOn);
2025-02-13 11:02:16 +08:00
TypeEventSystem.Global.Send<OnBody3DDragChanged>();
});
DragBack.onClick.AddListener(() =>
{
2025-02-14 13:20:54 +08:00
GameObject obj = Body3DController.Instance.PopMoveObj();
if (obj != null)
{
obj.GetComponent<ObjDrag>().OnDoubleClick();
}
});
ActiveBtn.onValueChanged.AddListener(isOn =>
{
ActiveBtn.transform.Find("SubBtns").gameObject.SetActive(isOn);
2025-02-13 17:39:33 +08:00
Body3DController.Instance.SetStatus(Body3DController.Status.Active, isOn);
});
ActiveBack.onClick.AddListener(() =>
{
2025-02-14 08:58:46 +08:00
Body3DController.Instance.PopActiveObj()?.gameObject.SetActive(true);
2025-02-13 11:02:16 +08:00
});
2025-02-14 13:20:54 +08:00
ResetBtn.onClick.AddListener(() =>
{
ResetCamera(0.5f);
});
2025-02-10 17:23:54 +08:00
}
protected override void OnOpen(IUIData uiData = null)
{
2025-02-11 16:42:39 +08:00
mData = uiData as UIBody3DData ?? new UIBody3DData();
2025-02-10 17:23:54 +08:00
BodyContent.RemoveAllChildren();
2025-02-14 13:20:54 +08:00
root = Utility.FindObj(mData.body.Path);
root.SetActive(true);
2025-02-12 17:36:00 +08:00
foreach (var bodyData in mData.body.subBody)
2025-02-10 17:23:54 +08:00
{
2025-02-12 17:36:00 +08:00
var body = bodyData.Value;
2025-02-10 17:23:54 +08:00
var bodyItem = GameObject.Instantiate(BodyItem.gameObject, BodyContent);
2025-02-11 16:42:39 +08:00
bodyItem.transform.Find("Label").GetComponent<TextMeshProUGUI>().text = body.Name;
2025-02-10 17:23:54 +08:00
var bodyToggle = bodyItem.GetComponent<Toggle>();
2025-02-11 16:42:39 +08:00
bodyToggle.isOn = body.isShow;
2025-02-12 17:36:00 +08:00
GameObject obj = Utility.FindObj(body.Path);
obj.SetActive(body.isShow);
2025-02-10 17:23:54 +08:00
bodyToggle.onValueChanged.AddListener(isOn =>
{
2025-02-12 17:36:00 +08:00
obj.SetActive(isOn);
2025-02-10 17:23:54 +08:00
});
}
FreeCameraController.instance.gameObject.SetActive(false);
Show3DCamera.instance.gameObject.SetActive(true);
2025-02-14 13:20:54 +08:00
ResetCamera(-1);
2025-02-13 11:02:16 +08:00
2025-02-10 17:23:54 +08:00
}
2025-02-14 13:20:54 +08:00
public void ResetCamera(float moveTime)
{
Show3DCamera.instance.Set(root.transform, distance: 5, isRenderTexture: false, moveTime: moveTime);
}
2025-02-10 17:23:54 +08:00
protected override void OnShow()
{
}
protected override void OnHide()
{
}
protected override void OnClose()
{
}
}
}