Files
2024-11-20 15:21:28 +01:00

174 lines
6.6 KiB
C#

using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using ProcedualWorlds.WaterSystem;
namespace Gaia
{
public class GaiaWaterProfile : ScriptableObject
{
[HideInInspector]
public bool m_reimportHDRPShader = false;
[HideInInspector]
public bool m_multiSceneLightingSupport = true;
[HideInInspector]
public bool m_renamingProfile = false;
[HideInInspector]
public bool m_updateInRealtime = false;
[HideInInspector]
public bool m_allowMSAA = false;
[HideInInspector]
public bool m_useHDR = false;
[HideInInspector]
public bool m_enableDisabeHeightFeature = true;
[HideInInspector]
public float m_disableHeight = 100f;
[HideInInspector]
public string m_selectedProfile = "Deep Blue Ocean";
// [HideInInspector]
// public GaiaConstants.RenderUpdateMode m_waterRenderUpdateMode = GaiaConstants.RenderUpdateMode.Update;
[HideInInspector]
public float m_interval = 0.25f;
[HideInInspector]
public bool m_useCustomRenderDistance = false;
[HideInInspector]
public bool m_enableLayerDistances = false;
[HideInInspector]
public float m_customRenderDistance = 500f;
[HideInInspector]
public float[] m_customRenderDistances = new float[32];
[HideInInspector]
public GaiaPlanarReflections.PlanarReflectionSettings m_reflectionSettingsData;
[HideInInspector]
public bool m_editSettings = false;
[HideInInspector]
public int m_selectedWaterProfileValuesIndex;
[HideInInspector]
public bool m_useCastics = true;
[HideInInspector]
public Light m_mainCausticLight;
[HideInInspector]
public int m_causticFramePerSecond = 24;
[HideInInspector]
public float m_causticSize = 15f;
//[HideInInspector]
//public Material m_masterWaterMaterial;
[HideInInspector]
public GameObject m_waterPrefab;
[HideInInspector]
public GameObject m_underwaterParticles;
[HideInInspector]
public GameObject m_underwaterHorizonPrefab;
[HideInInspector]
public GameObject m_hdPlanarReflections;
[HideInInspector]
public GameObject m_transitionFXPrefab;
public List<GaiaWaterProfileValues> m_waterProfiles = new List<GaiaWaterProfileValues>();
[HideInInspector]
public Material m_activeWaterMaterial;
[HideInInspector]
public bool m_enableWaterMeshQuality = false;
[HideInInspector]
public GaiaConstants.WaterMeshQuality m_waterMeshQuality = GaiaConstants.WaterMeshQuality.Medium;
[HideInInspector]
public GaiaConstants.MeshType m_meshType = GaiaConstants.MeshType.Plane;
[HideInInspector]
public int m_zSize = 1000;
[HideInInspector]
public int m_xSize = 1000;
[HideInInspector]
public int m_customMeshQuality = 100;
[HideInInspector]
public bool m_enableReflections = true;
[HideInInspector]
public bool m_disablePixelLights = true;
[HideInInspector]
public GaiaConstants.GaiaProWaterReflectionsQuality m_reflectionResolution = GaiaConstants.GaiaProWaterReflectionsQuality.Resolution512;
[HideInInspector]
public int m_textureResolution = 512;
[HideInInspector]
public float m_clipPlaneOffset = 40f;
[HideInInspector]
public LayerMask m_reflectedLayers = 1;
[HideInInspector]
public float m_hdrpReflectionIntensity = 1f;
[HideInInspector]
public bool m_enableOceanFoam = true;
[HideInInspector]
public bool m_enableBeachFoam = true;
[HideInInspector]
public bool m_enableGPUInstancing = true;
[HideInInspector]
public bool m_autoWindControlOnWater = true;
[HideInInspector]
public bool m_supportUnderwaterEffects = true;
[HideInInspector]
public bool m_supportUnderwaterPostProcessing = true;
[HideInInspector]
public bool m_supportUnderwaterFog = true;
[HideInInspector]
public bool m_supportUnderwaterParticles = true;
public void UpdateTextureResolution()
{
switch (m_reflectionResolution)
{
case GaiaConstants.GaiaProWaterReflectionsQuality.Resolution8:
m_textureResolution = 8;
break;
case GaiaConstants.GaiaProWaterReflectionsQuality.Resolution16:
m_textureResolution = 16;
break;
case GaiaConstants.GaiaProWaterReflectionsQuality.Resolution32:
m_textureResolution = 32;
break;
case GaiaConstants.GaiaProWaterReflectionsQuality.Resolution64:
m_textureResolution = 64;
break;
case GaiaConstants.GaiaProWaterReflectionsQuality.Resolution128:
m_textureResolution = 128;
break;
case GaiaConstants.GaiaProWaterReflectionsQuality.Resolution256:
m_textureResolution = 256;
break;
case GaiaConstants.GaiaProWaterReflectionsQuality.Resolution512:
m_textureResolution = 512;
break;
case GaiaConstants.GaiaProWaterReflectionsQuality.Resolution1024:
m_textureResolution = 1024;
break;
case GaiaConstants.GaiaProWaterReflectionsQuality.Resolution2048:
m_textureResolution = 2048;
break;
case GaiaConstants.GaiaProWaterReflectionsQuality.Resolution4096:
m_textureResolution = 4096;
break;
case GaiaConstants.GaiaProWaterReflectionsQuality.Resolution8192:
m_textureResolution = 8192;
break;
}
}
/// <summary>
/// Create Gaia Lighting System Profile asset
/// </summary>
#if UNITY_EDITOR
[MenuItem("Assets/Create/Procedural Worlds/Gaia/Water Profile")]
public static void CreateSkyProfiles()
{
GaiaWaterProfile asset = ScriptableObject.CreateInstance<GaiaWaterProfile>();
AssetDatabase.CreateAsset(asset, "Assets/Gaia Water System Profile.asset");
AssetDatabase.SaveAssets();
EditorUtility.FocusProjectWindow();
Selection.activeObject = asset;
}
#endif
}
}