68 lines
1.9 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|