mirror of
https://github.com/DeMuenu/MoonlightVRC.git
synced 2025-12-12 19:13:56 +00:00
49 lines
1.2 KiB
C#
49 lines
1.2 KiB
C#
using UdonSharp;
|
|
using UnityEngine;
|
|
using VRC.SDKBase;
|
|
using VRC.Udon;
|
|
|
|
|
|
|
|
public enum LightType { Sphere, Spot }
|
|
|
|
[UdonBehaviourSyncMode(BehaviourSyncMode.None)]
|
|
public class LightdataStorage : UdonSharpBehaviour
|
|
{
|
|
|
|
[Header("Type")]
|
|
[Tooltip("Select the logical light type for this source.")]
|
|
public LightType lightType = LightType.Sphere;
|
|
|
|
|
|
[Header("Light Settings")]
|
|
|
|
public float range = 5f;
|
|
|
|
|
|
|
|
[ColorUsage(true, true)] // (showAlpha: true, HDR: true)
|
|
public Color color = Color.white;
|
|
|
|
[Tooltip("Intensity multiplier applied to the color (kept separate so you can tweak brightness without changing hue).")]
|
|
public float intensity = 1f;
|
|
|
|
[Header("Spotlight Shape")]
|
|
[Tooltip("0 = omni (no cone)")]
|
|
public float spotAngleDeg = 0f;
|
|
|
|
// Convert to a Vector4 for your shader upload
|
|
public Vector4 GetFinalColor()
|
|
{
|
|
return new Vector4(color.r * intensity, color.g * intensity, color.b * intensity, color.a);
|
|
}
|
|
|
|
public float GetCosHalfAngle()
|
|
{
|
|
if (spotAngleDeg <= 0f) return 0f;
|
|
return Mathf.Cos(Mathf.Deg2Rad * (spotAngleDeg * 0.5f));
|
|
}
|
|
|
|
public int GetTypeId() => (int)lightType; // Omni=0, Spot=1, Directional=2
|
|
}
|