180 lines
5.3 KiB
C#
180 lines
5.3 KiB
C#
using HighlightPlus;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using UnityEngine;
|
||
using UnityEngine.SocialPlatforms;
|
||
|
||
public enum SorghumState
|
||
{
|
||
Diseased,//病株成熟
|
||
Healthy,//健康成熟
|
||
}
|
||
|
||
public enum SorghumPeriod
|
||
{
|
||
Mature,//成熟
|
||
Seedling//幼苗
|
||
}
|
||
|
||
public class SorghumController : PermanentTriggerBase
|
||
{
|
||
public GameObject Diseased_Mature;//病株成熟
|
||
public GameObject Healthy_Mature;//健康成熟
|
||
public GameObject Diseased_Seedling;//病株成熟
|
||
public GameObject Healthy_Seedling;//健康幼苗
|
||
|
||
public SorghumState State = SorghumState.Healthy;
|
||
public SorghumPeriod Period = SorghumPeriod.Mature;
|
||
|
||
public bool RandomRotate = true;
|
||
|
||
|
||
//LODGroup lodGroup = null;
|
||
public void Init(SorghumState _state = SorghumState.Healthy, SorghumPeriod _period = SorghumPeriod.Mature, bool _rand = false)
|
||
{
|
||
State = _state;
|
||
Period = _period;
|
||
//DiseasedStrain.SetActive(State == SorghumState.Diseased);
|
||
//HealthyStrain.SetActive(State == SorghumState.Healthy);
|
||
|
||
Diseased_Mature.SetActive(State == SorghumState.Diseased && Period == SorghumPeriod.Mature);//病株成熟
|
||
Healthy_Mature.SetActive(State == SorghumState.Healthy && Period == SorghumPeriod.Mature); //健康成熟
|
||
Diseased_Seedling.SetActive(State == SorghumState.Diseased && Period == SorghumPeriod.Seedling);//病株成熟
|
||
Healthy_Seedling.SetActive(State == SorghumState.Healthy && Period == SorghumPeriod.Seedling); //健康幼苗
|
||
|
||
RandomRotate = _rand;
|
||
if (RandomRotate)
|
||
{
|
||
// 获取当前旋转角度
|
||
Vector3 currentRotation = transform.eulerAngles;
|
||
|
||
// 设置Y轴为随机角度(0到360度)
|
||
currentRotation.y = Random.Range(0f, 360f);
|
||
|
||
// 应用新的旋转角度
|
||
transform.eulerAngles = currentRotation;
|
||
}
|
||
|
||
|
||
switch (State)
|
||
{
|
||
case SorghumState.Diseased:
|
||
triggerName = "高粱_病株";
|
||
this.gameObject.name = "高粱_病株";
|
||
//lodGroup = DiseasedStrain.GetComponent<LODGroup>();
|
||
break;
|
||
case SorghumState.Healthy:
|
||
triggerName = "高粱_正常";
|
||
this.gameObject.name = "高粱_正常";
|
||
break;
|
||
|
||
}
|
||
|
||
switch (Period)
|
||
{
|
||
//lodGroup = HealthyStrain.GetComponent<LODGroup>();
|
||
case SorghumPeriod.Seedling:
|
||
triggerName += "幼苗";
|
||
this.gameObject.name += "幼苗";
|
||
break;
|
||
case SorghumPeriod.Mature:
|
||
triggerName += "成熟";
|
||
this.gameObject.name += "成熟";
|
||
break;
|
||
}
|
||
}
|
||
|
||
public GameObject GetCurrentSorghum()
|
||
{
|
||
if (Period == SorghumPeriod.Mature)
|
||
{
|
||
if (State == SorghumState.Diseased)
|
||
return Diseased_Mature;
|
||
else
|
||
return Healthy_Mature;
|
||
|
||
}
|
||
else
|
||
{
|
||
if (State == SorghumState.Diseased)
|
||
return Diseased_Seedling;
|
||
else
|
||
return Healthy_Seedling;
|
||
}
|
||
}
|
||
|
||
protected override void OnMDown()
|
||
{
|
||
RangeFinding rf = OfficeManager.Instance.gameObject.GetComponent<RangeFinding>();
|
||
if (rf != null && rf.enabled)
|
||
{
|
||
return;
|
||
}
|
||
|
||
|
||
GameObject targetObj = GameObject.Find("Split_Obj");
|
||
|
||
GameObject targetHD_M = targetObj.transform.GetChild(0).gameObject;
|
||
GameObject targetSC_M = targetObj.transform.GetChild(1).gameObject;
|
||
GameObject targetHD_S = targetObj.transform.GetChild(2).gameObject;
|
||
GameObject targetSC_S = targetObj.transform.GetChild(3).gameObject;
|
||
|
||
GameObject SplitCamera = GameObject.Find("SplitCamera");
|
||
foreach (Transform item in SplitCamera.transform)
|
||
{
|
||
item.gameObject.SetActive(true);
|
||
}
|
||
|
||
targetHD_M.SetActive(false);
|
||
targetHD_S.SetActive(false);
|
||
targetSC_M.SetActive(false);
|
||
targetSC_S.SetActive(false);
|
||
|
||
if (State == SorghumState.Diseased)
|
||
{
|
||
if (Period == SorghumPeriod.Seedling)
|
||
targetHD_S.SetActive(true);
|
||
else
|
||
targetHD_M.SetActive(true);
|
||
GameManager.UIMgr.ShowPanel<UI_BGPanel>(E_UI_Layer.Top);
|
||
GameManager.UIMgr.ShowPanel<UI_GraphicRextualPanel>(E_UI_Layer.Top, (p) => { p.Init(); });
|
||
}
|
||
else
|
||
{
|
||
if (Period == SorghumPeriod.Seedling)
|
||
targetSC_S.SetActive(true);
|
||
else
|
||
targetSC_M.SetActive(true);
|
||
GameManager.UIMgr.ShowPanel<UI_BGPanel>(E_UI_Layer.Top);
|
||
GameManager.UIMgr.ShowPanel<UI_PlantComparisonPanel>(E_UI_Layer.Top, (p) => { p.Init(); });
|
||
}
|
||
}
|
||
|
||
protected override void OnMEnter()
|
||
{
|
||
base.OnMEnter();
|
||
//if (GameManager.RunModelMgr?.ModeType != E_ModeType.Study)
|
||
//{
|
||
|
||
//_highlight = GetComponentInChildren<HighlightEffect>();
|
||
if (_highlight != null)
|
||
_highlight.SetHighlighted(true);
|
||
|
||
//Debug.Log("当前渲染:" + GetLODCurShowLevel(Camera.main, lodGroup));
|
||
//}
|
||
}
|
||
|
||
protected override void OnMExit()
|
||
{
|
||
if (_highlight != null)
|
||
_highlight.SetHighlighted(false);
|
||
base.OnMExit();
|
||
}
|
||
|
||
protected override void OnAwake()
|
||
{
|
||
base.OnAwake();
|
||
}
|
||
}
|