using DG.Tweening; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; /// /// 围栏 /// public class Tool_Fence : Tool_Base { /// /// 是否展开 /// public bool isOpen; /// /// 安装拆除事件 /// private Action installAction; protected override void OnMDown() { base.OnMDown(); //收回 UnInstall(); } /// /// 安装围栏 /// /// public void Install(DeviceTrigger deviceTrigger,Action installAction) { if (triggerAction == null || triggerAction.Invoke(deviceTrigger.triggerName, false) == 0) { isMoving = true; transform.parent = null; triggerName = deviceTrigger.triggerName + "围栏"; deviceTrigger.gameObject.SetActive(false); transform.transform.position = deviceTrigger.transform.position; transform.transform.eulerAngles = deviceTrigger.transform.eulerAngles; transform.transform.localScale = new Vector3(deviceTrigger.transform.localScale.x, deviceTrigger.transform.localScale.y, transform.transform.localScale.z); hand_out_action?.Invoke(); this.installAction = installAction; transform.DOScale(deviceTrigger.transform.localScale, 1).OnComplete(() => { isMoving = false; LiveSceneManager.Instance.OnCheckSubProcess(false); isOpen = true; installAction?.Invoke(true); triggerAction.Invoke(deviceTrigger.triggerName, true); transform.GetComponent().enabled = true; }); } } /// /// 拆除围栏 /// public void UnInstall() { if (!isMoving) { if (triggerAction == null || triggerAction.Invoke(triggerName, false) == 0) { isMoving = true; transform.DOScale(new Vector3(transform.localScale.x, transform.localScale.y, 0.1f), 1).OnComplete(() => { isMoving = false; isOpen = false; installAction?.Invoke(false); triggerAction.Invoke(triggerName, true); base.CallScoreAction(false); Destroy(gameObject); }); } } } /// /// 直接设置围栏 /// /// /// public void SetInstallState(DeviceTrigger deviceTrigger, Action installAction) { transform.parent = null; this.installAction = installAction; triggerName = deviceTrigger.triggerName + "围栏"; deviceTrigger.gameObject.SetActive(false); transform.transform.position = deviceTrigger.transform.position; transform.transform.eulerAngles = deviceTrigger.transform.eulerAngles; transform.localScale = deviceTrigger.transform.localScale; isOpen = true; transform.GetComponent().enabled = true; transform.GetComponentsInChildren(true).ToList().ForEach(a=>a.Awake()); transform.GetComponentsInChildren(true).ToList().ForEach(a => a.Awake()); installAction?.Invoke(true); } }