130 lines
3.9 KiB
C#
130 lines
3.9 KiB
C#
using DG.Tweening;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
/// <summary>
|
|
/// 专变电源电台插头
|
|
/// </summary>
|
|
public class Device_SpecializedVariableAcquisitionTerminal_PowerPlug : Device_Base
|
|
{
|
|
public bool isInstalled;
|
|
public BoxCollider collider_install;
|
|
public BoxCollider collider_uninstall;
|
|
/// <summary>
|
|
/// 插头红端
|
|
/// </summary>
|
|
public Tool_Screw redOne;
|
|
/// <summary>
|
|
/// 插头黑端
|
|
/// </summary>
|
|
public Tool_Screw blackOne;
|
|
|
|
public Action<bool> 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();
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 插上
|
|
/// </summary>
|
|
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<SkinnedMeshRenderer>().GetBlendShapeWeight(0);
|
|
DOTween.To(() => { return currentValue; }, (vlue) =>
|
|
{
|
|
transform.GetComponent<SkinnedMeshRenderer>().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);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 拔下
|
|
/// </summary>
|
|
public void UnInstall()
|
|
{
|
|
if (!isMoving && isInstalled)
|
|
{
|
|
if (triggerAction?.Invoke(triggerName, false) == 0)
|
|
{
|
|
//拔下
|
|
isMoving = true;
|
|
float currentValue = transform.GetComponent<SkinnedMeshRenderer>().GetBlendShapeWeight(0);
|
|
DOTween.To(() => { return currentValue; }, (vlue) =>
|
|
{
|
|
transform.GetComponent<SkinnedMeshRenderer>().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);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 直接设置状态(无动画)
|
|
/// </summary>
|
|
/// <param name="isinstalled"></param>
|
|
public void SetState(bool isinstalled)
|
|
{
|
|
this.isInstalled=isinstalled;
|
|
if (isinstalled)
|
|
{
|
|
//插上
|
|
transform.GetComponent<SkinnedMeshRenderer>().SetBlendShapeWeight(0, 0);
|
|
collider_install.enabled = true;
|
|
collider_uninstall.enabled = false;
|
|
redOne.gameObject.SetActive(false);
|
|
blackOne.gameObject.SetActive(false);
|
|
}
|
|
else
|
|
{
|
|
//拔出
|
|
transform.GetComponent<SkinnedMeshRenderer>().SetBlendShapeWeight(0, 100f);
|
|
collider_install.enabled = false;
|
|
collider_uninstall.enabled = true;
|
|
redOne.gameObject.SetActive(true);
|
|
blackOne.gameObject.SetActive(true);
|
|
}
|
|
}
|
|
}
|