r2mods/ilspy_dump/ror2_csproj/RoR2/TreebotSunBuffGranter.cs

74 lines
1.2 KiB
C#

using UnityEngine;
using UnityEngine.Networking;
namespace RoR2;
public class TreebotSunBuffGranter : MonoBehaviour
{
public Transform referenceTransform;
public float raycastFrequency;
public BuffDef buffDef;
private const float raycastLength = 1000f;
private float timer;
private bool hadSunlight;
private Light sun;
private CharacterBody characterBody;
private void Start()
{
FindSun();
characterBody = GetComponent<CharacterBody>();
}
private void FixedUpdate()
{
timer -= Time.fixedDeltaTime;
if (timer <= 0f)
{
timer = 1f / raycastFrequency;
CheckSunlight();
}
}
private void FindSun()
{
sun = RenderSettings.sun;
}
private void CheckSunlight()
{
if (!NetworkServer.active)
{
return;
}
if (!sun)
{
FindSun();
if (!sun)
{
return;
}
}
bool flag = !Physics.Raycast(base.transform.position, -sun.transform.forward, 1000f, LayerIndex.world.mask, QueryTriggerInteraction.Ignore);
if ((bool)buffDef)
{
if (hadSunlight && !flag)
{
characterBody.RemoveBuff(buffDef.buffIndex);
}
else if (flag && !hadSunlight)
{
characterBody.AddBuff(buffDef.buffIndex);
}
}
hadSunlight = flag;
}
}