r2mods/ilspy_dump/ror2_csproj/EntityStates.LaserTurbine/ChargeMainBeamState.cs

58 lines
1.5 KiB
C#

using RoR2;
using UnityEngine;
namespace EntityStates.LaserTurbine;
public class ChargeMainBeamState : LaserTurbineBaseState
{
public static float baseDuration;
public static GameObject beamIndicatorPrefab;
private GameObject beamIndicatorInstance;
private ChildLocator beamIndicatorChildLocator;
private Transform beamIndicatorEndTransform;
protected override bool shouldFollow => false;
public override void OnEnter()
{
base.OnEnter();
beamIndicatorInstance = Object.Instantiate(beamIndicatorPrefab, GetMuzzleTransform(), worldPositionStays: false);
beamIndicatorChildLocator = beamIndicatorInstance.GetComponent<ChildLocator>();
if ((bool)beamIndicatorChildLocator)
{
beamIndicatorEndTransform = beamIndicatorChildLocator.FindChild("End");
}
}
public override void OnExit()
{
EntityState.Destroy(beamIndicatorInstance);
base.OnExit();
}
public override void Update()
{
base.Update();
if (base.isAuthority && base.fixedAge >= baseDuration)
{
outer.SetNextState(new FireMainBeamState());
}
if ((bool)beamIndicatorInstance && (bool)beamIndicatorEndTransform)
{
float num = 1000f;
Ray aimRay = GetAimRay();
_ = beamIndicatorInstance.transform.parent.position;
Vector3 point = aimRay.GetPoint(num);
if (Util.CharacterRaycast(base.ownerBody.gameObject, aimRay, out var hitInfo, num, (int)LayerIndex.entityPrecise.mask | (int)LayerIndex.world.mask, QueryTriggerInteraction.UseGlobal))
{
point = hitInfo.point;
}
beamIndicatorEndTransform.transform.position = point;
}
}
}