238 lines
7.3 KiB
C#
238 lines
7.3 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace VLB
|
|
{
|
|
public static class UtilsBeamProps
|
|
{
|
|
public static bool CanChangeDuringPlaytime(VolumetricLightBeamAbstractBase self)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd) return sd.trackChangesDuringPlaytime;
|
|
return true;
|
|
}
|
|
|
|
public static Quaternion GetInternalLocalRotation(VolumetricLightBeamAbstractBase self)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd) return sd.beamInternalLocalRotation;
|
|
|
|
var hd = self as VolumetricLightBeamHD;
|
|
if (hd) return hd.beamInternalLocalRotation;
|
|
|
|
return Quaternion.identity;
|
|
}
|
|
|
|
public static void SetIntensityFromLight(VolumetricLightBeamAbstractBase self, bool fromLight)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd) sd.intensityFromLight = fromLight;
|
|
|
|
var hd = self as VolumetricLightBeamHD;
|
|
if (hd) hd.useIntensityFromAttachedLightSpot = fromLight;
|
|
}
|
|
|
|
public static float GetThickness(VolumetricLightBeamAbstractBase self)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd) return Mathf.Clamp01(1 - (sd.fresnelPow / Consts.Beam.SD.FresnelPowMaxValue));
|
|
|
|
var hd = self as VolumetricLightBeamHD;
|
|
if (hd) return Mathf.Clamp01(1 - (hd.sideSoftness / Consts.Beam.HD.SideSoftnessMax));
|
|
|
|
return 0f;
|
|
}
|
|
|
|
public static void SetThickness(VolumetricLightBeamAbstractBase self, float value)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd)
|
|
{
|
|
sd.fresnelPow = (1 - value) * Consts.Beam.SD.FresnelPowMaxValue;
|
|
return;
|
|
}
|
|
|
|
var hd = self as VolumetricLightBeamHD;
|
|
if (hd)
|
|
{
|
|
hd.sideSoftness =(1 - value) * Consts.Beam.HD.SideSoftnessMax;
|
|
}
|
|
}
|
|
|
|
public static float GetFallOffEnd(VolumetricLightBeamAbstractBase self)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd) return sd.fallOffEnd;
|
|
|
|
var hd = self as VolumetricLightBeamHD;
|
|
if (hd) return hd.fallOffEnd;
|
|
|
|
return 0f;
|
|
}
|
|
|
|
|
|
public static ColorMode GetColorMode(VolumetricLightBeamAbstractBase self)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd) return sd.usedColorMode;
|
|
|
|
var hd = self as VolumetricLightBeamHD;
|
|
if (hd) return hd.colorMode;
|
|
|
|
return ColorMode.Flat;
|
|
}
|
|
|
|
public static Color GetColorFlat(VolumetricLightBeamAbstractBase self)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd) return sd.color;
|
|
|
|
var hd = self as VolumetricLightBeamHD;
|
|
if (hd) return hd.colorFlat;
|
|
|
|
return Color.white;
|
|
}
|
|
|
|
public static Gradient GetColorGradient(VolumetricLightBeamAbstractBase self)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd) return sd.colorGradient;
|
|
|
|
var hd = self as VolumetricLightBeamHD;
|
|
if (hd) return hd.colorGradient;
|
|
|
|
return null;
|
|
}
|
|
|
|
public static void SetColorFromLight(VolumetricLightBeamAbstractBase self, bool fromLight)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd) sd.colorFromLight = fromLight;
|
|
|
|
var hd = self as VolumetricLightBeamHD;
|
|
if (hd) hd.colorFromLight = fromLight;
|
|
}
|
|
|
|
public static float GetConeAngle(VolumetricLightBeamAbstractBase self)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd) return sd.coneAngle;
|
|
|
|
var hd = self as VolumetricLightBeamHD;
|
|
if (hd) return hd.coneAngle;
|
|
|
|
return 0f;
|
|
}
|
|
|
|
public static void SetSpotAngleFromLight(VolumetricLightBeamAbstractBase self, bool fromLight)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd) sd.spotAngleFromLight = fromLight;
|
|
|
|
var hd = self as VolumetricLightBeamHD;
|
|
if (hd) hd.useSpotAngleFromAttachedLightSpot = fromLight;
|
|
}
|
|
|
|
public static float GetConeRadiusStart(VolumetricLightBeamAbstractBase self)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd) return sd.coneRadiusStart;
|
|
|
|
var hd = self as VolumetricLightBeamHD;
|
|
if (hd) return hd.coneRadiusStart;
|
|
|
|
return 0f;
|
|
}
|
|
|
|
public static float GetConeRadiusEnd(VolumetricLightBeamAbstractBase self)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd) return sd.coneRadiusEnd;
|
|
|
|
var hd = self as VolumetricLightBeamHD;
|
|
if (hd) return hd.coneRadiusEnd;
|
|
|
|
return 0f;
|
|
}
|
|
|
|
public static int GetSortingLayerID(VolumetricLightBeamAbstractBase self)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd) return sd.sortingLayerID;
|
|
|
|
var hd = self as VolumetricLightBeamHD;
|
|
if (hd) return hd.GetSortingLayerID();
|
|
|
|
return 0;
|
|
}
|
|
|
|
public static int GetSortingOrder(VolumetricLightBeamAbstractBase self)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd) return sd.sortingOrder;
|
|
|
|
var hd = self as VolumetricLightBeamHD;
|
|
if (hd) return hd.GetSortingOrder();
|
|
|
|
return 0;
|
|
}
|
|
|
|
public static bool GetFadeOutEnabled(VolumetricLightBeamAbstractBase self)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd) return sd.isFadeOutEnabled;
|
|
|
|
return false;
|
|
}
|
|
|
|
public static float GetFadeOutEnd(VolumetricLightBeamAbstractBase self)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd) return sd.fadeOutEnd;
|
|
|
|
return 0f;
|
|
}
|
|
|
|
public static void SetFallOffEndFromLight(VolumetricLightBeamAbstractBase self, bool fromLight)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd) sd.fallOffEndFromLight = fromLight;
|
|
|
|
var hd = self as VolumetricLightBeamHD;
|
|
if (hd) hd.useFallOffEndFromAttachedLightSpot = fromLight;
|
|
}
|
|
|
|
public static Dimensions GetDimensions(VolumetricLightBeamAbstractBase self)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd) return sd.dimensions;
|
|
|
|
var hd = self as VolumetricLightBeamHD;
|
|
if (hd) return hd.GetDimensions();
|
|
|
|
return Dimensions.Dim3D;
|
|
}
|
|
|
|
public static int GetGeomSides(VolumetricLightBeamAbstractBase self)
|
|
{
|
|
var sd = self as VolumetricLightBeamSD;
|
|
if (sd) return sd.geomSides;
|
|
|
|
return Config.Instance.sharedMeshSides;
|
|
}
|
|
|
|
public static AttenuationEquation ConvertAttenuation(AttenuationEquationHD value)
|
|
{
|
|
return (AttenuationEquation)value;
|
|
}
|
|
|
|
public static AttenuationEquationHD ConvertAttenuation(AttenuationEquation value)
|
|
{
|
|
if (value == AttenuationEquation.Blend)
|
|
return AttenuationEquationHD.Linear;
|
|
return (AttenuationEquationHD)value;
|
|
}
|
|
}
|
|
}
|