using DG.Tweening; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 专变电源电台插头 /// public class Device_SpecializedVariableAcquisitionTerminal_PowerPlug : Device_Base { public bool isInstalled; public BoxCollider collider_install; public BoxCollider collider_uninstall; /// /// 插头红端 /// public Tool_Screw redOne; /// /// 插头黑端 /// public Tool_Screw blackOne; public Action installActon; protected override void OnAwake() { base.OnAwake(); //不能拧 redOne.AddCheckAction(() => { return false; }); blackOne.AddCheckAction(() => { return false; }); } protected override void OnMDown() { base.OnMDown(); if (isInstalled) UnInstall(); else Install(); } /// /// 插上 /// public void Install() { if (!isMoving && !isInstalled) { if (triggerAction?.Invoke(triggerName, false) == 0) { //插上 isMoving = true; redOne.gameObject.SetActive(false); blackOne.gameObject.SetActive(false); float currentValue = transform.GetComponent().GetBlendShapeWeight(0); DOTween.To(() => { return currentValue; }, (vlue) => { transform.GetComponent().SetBlendShapeWeight(0, vlue); }, 0f, 1f).OnComplete(() => { isMoving = false; collider_install.enabled = true; collider_uninstall.enabled = false; isInstalled = true; installActon?.Invoke(true); triggerAction?.Invoke(triggerName, true); }); } } } /// /// 拔下 /// public void UnInstall() { if (!isMoving && isInstalled) { if (triggerAction?.Invoke(triggerName, false) == 0) { //拔下 isMoving = true; float currentValue = transform.GetComponent().GetBlendShapeWeight(0); DOTween.To(() => { return currentValue; }, (vlue) => { transform.GetComponent().SetBlendShapeWeight(0, vlue); }, 100f, 1f).OnComplete(() => { isMoving = false; collider_install.enabled = false; collider_uninstall.enabled = true; redOne.gameObject.SetActive(true); blackOne.gameObject.SetActive(true); isInstalled = false; installActon?.Invoke(false); triggerAction?.Invoke(triggerName,true); }); } } } /// /// 直接设置状态(无动画) /// /// public void SetState(bool isinstalled) { this.isInstalled=isinstalled; if (isinstalled) { //插上 transform.GetComponent().SetBlendShapeWeight(0, 0); collider_install.enabled = true; collider_uninstall.enabled = false; redOne.gameObject.SetActive(false); blackOne.gameObject.SetActive(false); } else { //拔出 transform.GetComponent().SetBlendShapeWeight(0, 100f); collider_install.enabled = false; collider_uninstall.enabled = true; redOne.gameObject.SetActive(true); blackOne.gameObject.SetActive(true); } } }