Files
2026-03-04 10:03:45 +08:00

89 lines
2.9 KiB
C#

using UnityEngine;
namespace Artngame.SKYMASTER
{
public class volumeCloudsTornadoControl : MonoBehaviour
{
public bool copyCloudParamsToRefl;
public CloudScript volumeclouds;
public CloudScriptTRANSP volumecloudsTRANSP;
public CloudScript CloudReflection;
public Material grassMat;
public bool applyGrassVortex;
public Material waterMat;
public bool applyWaterVortex;
public float vortexRadius = 115f;
public Vector4 vortexInteractAmpFreqRadial = new Vector4(-107f, 11f, 39f, 318f);
public Transform tornadoTop;
public Transform tornadoBottom;
public float posMultiplierX = 1f;
public float posMultiplierZ = 1f;
public float posMultiplierXW = 1f;
public float posMultiplierZW = 1f;
public float posOffsetX;
public float posOffsetZ;
private void Start()
{
}
private void Update()
{
if (copyCloudParamsToRefl && CloudReflection != null)
{
CloudReflection.density = volumeclouds.density;
CloudReflection.coverage = volumeclouds.coverage;
CloudReflection.scale = volumeclouds.scale;
CloudReflection.detailScale = volumeclouds.detailScale;
CloudReflection.lowFreqMin = volumeclouds.lowFreqMin;
CloudReflection.lowFreqMax = volumeclouds.lowFreqMax;
CloudReflection.highFreqModifier = volumeclouds.highFreqModifier;
CloudReflection.weatherScale = volumeclouds.weatherScale;
CloudReflection.startHeight = volumeclouds.startHeight;
CloudReflection.thickness = volumeclouds.thickness;
CloudReflection.planetSize = volumeclouds.planetSize;
CloudReflection.cloudSampleMultiplier = volumeclouds.cloudSampleMultiplier;
CloudReflection.globalMultiplier = volumeclouds.globalMultiplier;
CloudReflection.windSpeed = volumeclouds.windSpeed;
CloudReflection.windDirection = volumeclouds.windDirection;
CloudReflection.coverageWindSpeed = volumeclouds.coverageWindSpeed;
CloudReflection.coverageWindDirection = volumeclouds.coverageWindDirection;
}
if (volumeclouds != null && tornadoTop != null)
{
volumeclouds.vortexPosition = new Vector3(tornadoTop.position.x * posMultiplierX + posOffsetX, 0f, tornadoTop.position.z * posMultiplierZ + posOffsetZ);
}
if (volumecloudsTRANSP != null && tornadoTop != null)
{
volumecloudsTRANSP.vortexPosition = new Vector3(tornadoTop.position.x * posMultiplierX + posOffsetX, 0f, tornadoTop.position.z * posMultiplierZ + posOffsetZ);
}
if (CloudReflection != null && tornadoTop != null)
{
CloudReflection.vortexPosition = new Vector3(tornadoTop.position.x * posMultiplierX + posOffsetX, 0f, tornadoTop.position.z * posMultiplierZ + posOffsetZ);
}
if (applyWaterVortex && waterMat != null)
{
waterMat.SetVector("vortexPosScale", new Vector4(tornadoBottom.position.x * posMultiplierXW + posOffsetX, 0f, tornadoBottom.position.z * posMultiplierZW + posOffsetZ, vortexRadius));
waterMat.SetVector("_InteractAmpFreqRad", vortexInteractAmpFreqRadial);
}
}
}
}