#define GAIA_PRESENT using UnityEngine; using System.Collections; using System.Collections.Generic; namespace Gaia { public static class GaiaConstants { /// /// Where scanned assets will be loaded from and saved to /// //public static readonly string AssetDir = "Gaia/Stamps"; //public static readonly string AssetDirFromAssetDB = "Assets/Gaia/Stamps"; public const string builtInKeyWord = "SP"; public const string lightweightKeyWord = "LW"; public const string universalKeyWord = "UP"; public const string highDefinitionKeyWord = "HD"; /// /// Screenshot resolutions /// public enum ScreenshotResolution { Resolution640X480, Resolution800X600, Resolution1280X720, Resolution1366X768, Resolution1600X900, Resolution1920X1080, Resolution2560X1440, Resolution3840X2160, Resolution7680X4320, Custom } /// /// Defines the type of lighting is suppose to be /// public enum GaiaLightingProfileType { Procedural, HDRI, ProceduralWorldsSky } /// /// The supported Anti aliasing modes /// public enum GaiaProAntiAliasingMode { None, FXAA, MSAA, SMAA, TAA } /// /// The two different workflow types when initially creating a new scene /// public enum TerrainCreationWorkflow { ManualWithStamper, WorldDesigner } /// /// The water mesh quality /// public enum WaterMeshQuality { VeryLow, Low, Medium, High, VeryHigh, Ultra, Cinematic, Custom } /// /// Used for detail patch resolution in the terrain detail overwrite system /// public enum TerrainDetailQuality { VeryLow64, Low32, Medium16, High8, VeryHigh4, Ultra2 } public enum ContactShadowsQuality { Low, Medium, High, Ultra, Custom } public enum HDSkyType { Gradient, HDRI, Procedural } public enum HDAmbientMode { Static, Dynamic } public enum HDFogType { None, Exponential, Linear, Volumetric } public enum HDFogType2019_3 { None, Volumetric } public enum HDSkyUpdateMode { OnChanged, OnDemand, Realtime } public enum HDIntensityMode { Exposure, Multiplier } public enum HDShadowResolution { Resolution256, Resolution512, Resolution1024, Resolution2048, Resolution4096, Resolution8192 } /// /// Sets the supported water resolution /// public enum GaiaProWaterReflectionsQuality { Resolution8, Resolution16, Resolution32, Resolution64, Resolution128, Resolution256, Resolution512, Resolution1024, Resolution2048, Resolution4096, Resolution8192 } /// /// Defines what type of water is suppose to be /// public enum GaiaWaterProfileType { DeepBlueOcean, ClearBlueOcean, StandardLake, StandardClearLake, None } /// /// Sets the wind type on how strong it is rendered in the scene /// public enum GaiaWindType { Calm, Moderate, Strong, None } /// /// Sets the thunder storm type and how it behaves /// public enum ThunderStormType { Light, Moderate, Continuous } public enum GaiaGlobalWindType { Calm, Moderate, Strong, None, Custom } public enum WindSetupType { VertexAnimated, VertexPainted } public enum MeshType { Plane, Circle, Custom }; public enum PositionType { Absolute, Relative } /// /// Byte orders the scanner uses to load raw files. /// public enum RawByteOrder { IBM, Macintosh } /// /// Bit depths the scanner uses to load raw files. /// public enum RawBitDepth { Sixteen, Eight } /// /// The type of thing we are targeting /// public enum EnvironmentTarget { UltraLight, MobileAndVR, Desktop, PowerfulDesktop, Custom } /// /// The type of thing we are targeting /// public enum EnvironmentRenderer { BuiltIn = 0, Lightweight = 1, Universal = 2, HighDefinition = 3 } /// /// Preset Environment Sizes /// public enum EnvironmentSizePreset {Micro, Tiny, Small, Medium, Large, Custom } /// /// The size of the environment we are targeting /// public enum EnvironmentSize {Is128MetersSq, Is256MetersSq, Is512MetersSq, Is1024MetersSq, Is2048MetersSq, Is4096MetersSq, Is8192MetersSq, Is16384MetersSq } /// /// The heightmap resolution per terrain chunk /// public enum HeightmapResolution { _33 = 33, _65 = 65, _129 = 129, _257 = 257, _513 = 513, _1025 = 1025, _2049 = 2049, _4097 = 4097 } /// /// The texture resolution per terrain chunk (This enum is used both for control and base texture since they allow the same values) /// public enum TerrainTextureResolution { _16 = 16, _32 = 32, _64 = 64, _128 = 128, _256 = 256, _512 = 512, _1024 = 1024, _2048 = 2048, _4096 = 4096 } /// /// The different Ambient Skies samples /// public enum Skies { Day, Morning, Evening, Night, None } /// /// Sets the baked lighting mode to be realtime or baked /// public enum BakeMode { Baked, Realtime, Both } /// /// The different Ambient Water samples /// public enum Water { DeepBlue, ClearBlue, ToxicGreen, Cyan, None } public enum PW_RENDER_SIZE { FULL = -1, HALF = -2, QUARTER = -3 }; /// /// The different modes for Creating Post Processing Volumes when spawning - does the user want to create a new one for each spawn // or do they want the existing one replaced /// public enum BiomePostProcessingVolumeSpawnMode { Add, Replace } /// /// The different Post FX settings /// public enum PostFX { Day, Morning, Evening, Night, None } /// /// Used to set the starting time of day mode /// public enum TimeOfDayStartingMode { Morning, Day, Evening, Night } ///// ///// The Material pass selected for the stamping operation ///// //public enum MaterialPass //{ // RaiseHeight = 0, // LowerHeight = 1, // BlendHeight = 2, // StencilHeight = 3, // DifferenceHeight = 4 //} /// /// Control type - from std assets /// public enum EnvironmentControllerType { FirstPerson, FlyingCamera, ThirdPerson, Car, XRController, Custom, None } /// /// Operational mode of the manager /// public enum ManagerEditorMode { Standard, Advanced, Extensions, ShowMore } /// /// Operational mode of the manager /// public enum ManagerEditorNewsMode { MoreOnGaia, MoreOnProceduralWorlds } /// /// Operational mode of the spawner component /// public enum OperationMode { DesignTime, RuntimeInterval, RuntimeTriggeredInterval } public enum DOFTrackingType { FixedOffset, LeftMouseClick, RightMouseClick, FollowScreen, FollowTarget } /// /// Type of terrain operation /// public enum TerrainOperationType { AddToTerrain, ApplyMaskToSplatmap, ContrastFilter, GrowFeaturesFilter, DeNoiseFilter, HydraulicFilter, MultiplyTerrain, PowerOfFilter, QuantizeFilter, QuantizeCurvesFilter, SetTerrainToHeight, ShrinkFeaturesFilter, SubtractFromTerrain, ThermalFilter, ExportAspectMap, ExportBaseMap, ExportCurvatureMap, ExportFlowMap, ExportHeightMap, ExportNoiseMap, ExportNormalMap, ExportMasks, ExportSlopeMap } /// /// Type of mask merge operation /// public enum MaskMergeType { AssignMask2IfGreaterThan, AssignMask2IfLessThan, AddMask2, MultiplyByMask2, SubtractMask2 } /// /// Type of rain map /// public enum ErosionRainType { Constant, ErodePeaks, ErodeValleys, ErodeSlopes } /// /// Type of curvature to calculate /// public enum CurvatureType { Average, Horizontal, Vertical } /// /// Type of aspect to calculate /// public enum AspectType { Aspect, Northerness, Easterness } /// /// Type of noise being generated /// public enum NoiseType { None, Perlin, Billow, Ridged } /// /// The fitness filter mode to apply when a texture is used to filter on fitness /// public enum ImageFitnessFilterMode { None, ImageGreyScale, ImageRedChannel, ImageGreenChannel, ImageBlueChannel, ImageAlphaChannel, TerrainTexture0, TerrainTexture1, TerrainTexture2, TerrainTexture3, TerrainTexture4, TerrainTexture5, TerrainTexture6, TerrainTexture7, PerlinNoise, BillowNoise, RidgedNoise } /// /// Classification of feature types - also used to load and save features /// public enum FeatureType { Hills, Islands, Mesas, Mountains, Plains, Rivers, Valleys}; /// /// Types of borders to put on generated terrain /// public enum GeneratorBorderStyle { None, Mountains, Water } /// /// Different operation modes for the spawner - depending on what the spawner is doing, it will create different paint contexts for textures, heightmaps, etc. /// public enum SpawnerApplyBrushMode { Preview, Texture, TerrainDetail, TerrainTree, JustCacheContext } /// /// Obscure preset color, used as a flag to detect that the user has never set a custom color for themselves /// public static readonly Color spawnerInitColor = new Color(1f, 0.9849656f, 0.7688679f, 0f); public static readonly string HDRPPWSkyExperimental = "Procedural Worlds Sky is in preview in HDRP, more features and improvements will be added in future updates."; /// /// /// public static readonly string defaultSceneCullingProfile = "Gaia Default Scene Culling Profile.asset"; public static readonly string HDRPEnvironmentObject = "HD Environment Volume"; /// /// Determines whether the spawns should replace the exisiting instances, added to existing, or remove existing instances. /// public enum SpawnMode { Replace, Add, Remove }; public enum HDRPDepthTest { Disabled, Never, Less, Equal, LessEqual, Greater, NotEqual, GreaterEqual, Always } /// /// The type of feature operation that will be used on the terrain by the stamper /// AddHeight - Will add height is stamped object exceeds height at that location /// RemoveHeight - Will remove height if the terrain is higher than stamp at that location /// Blend Height - Will blend the height difference from the existing terrain towards the stamp /// Set Height - Will set the terrain height at the given position 1:1 as it is in the stamp, no ifs and buts /// Add Height - Will add the stamp height on top of the existing terrain features /// Subtract Height - Will remove the stamp height from the existing terrain features /// Contrast - Will bring scale up height differences in the terrain to bring out details /// Hydraulic Erosion - Will simulate removing sediment from the terrain caused by rainfall over time /// public enum FeatureOperation { RaiseHeight=0, LowerHeight=1, BlendHeight=2, SetHeight=3, AddHeight=4, SubtractHeight=5, HeightTransform = 10, PowerOf = 11, Smooth = 12, Contrast =6, SharpenRidges=7, Terrace=8, HydraulicErosion=9, MixHeight=13 }; /// /// The official UI names for the different Feature Operations, and their enum value in the dropdown menu. This dictionary can be used to display a multilevel popup in the UI and stil get the enum operation value regardless of order in the UI /// public static Dictionary FeatureOperationNames = new Dictionary() { {"Stamping/Raise Height", 0 }, {"Stamping/Lower Height", 1 }, {"Stamping/Blend Height", 2 }, {"Stamping/Mix Height", 13 }, {"Stamping/Set Height", 3 }, {"Stamping/Add Height", 4 }, {"Stamping/Subtract Height", 5 }, {"Effects/HeightTransform", 10}, {"Effects/PowerOf", 11 }, {"Effects/Smooth", 12 }, {"Effects/PRO Contrast", 6 }, {"Effects/PRO Sharpen Ridges", 7 }, {"Effects/PRO Terraces", 8 }, {"Erosion/PRO HydraulicErosion", 9 } }; /// /// A subset of the full Stamper Feature operations. Used in the Terrain Generator to allow the user only to select stamping operations /// public enum TerrainGeneratorFeatureOperation { RaiseHeight = FeatureOperation.RaiseHeight, LowerHeight = FeatureOperation.LowerHeight, BlendHeight = FeatureOperation.BlendHeight, MixHeight = FeatureOperation.MixHeight, SetHeight = FeatureOperation.SetHeight, AddHeight = FeatureOperation.AddHeight, SubtractHeight = FeatureOperation.SubtractHeight } /// /// The official UI names for the different Feature Operations, and their position in the dropdown menu. The order of this List must match with the order /// of the enum "FeatureOperation" /// public static string[] TerrainGeneratorFeatureOperationNames = { "Stamping/Raise Height", "Stamping/Lower Height", "Stamping/Blend Height", "Stamping/Mix Height", "Stamping/Set Height", "Stamping/Add Height", "Stamping/Subtract Height" }; /// /// Defines which water visualisation we want to display - the real, actual water (if available), the simple blue plane or none. /// public enum PreferredWaterVisualisation { ActualWater, Plane, None} /// /// Defines what the distance and area mask in the stamper can influence : Either the mask is applied to the stamp result as a whole, /// or the mask is applied only to the stamp itself. /// public enum MaskInfluence { OnlyStampItself, TotalSpawnResult } public enum ImageMaskFilterMode {Brightness, PROColorSelection, RedColorChannel, GreenColorChannel, BlueColorChannel, AlphaChannel } /// /// The different output types for the erosion image mask /// public enum ErosionMaskOutput { Sediment, WaterVelocity, WaterFlux } /// /// The area of effect for autospawners - local = only in tool range, world = perform worldspawn /// public enum AutoSpawnerArea { Local, World } /// /// The shape of the spawner /// public enum SpawnerShape { Box, Sphere } /// /// Enum for render update on water /// public enum RenderUpdateMode { OnEnable, Update, Interval, OnRender }; public enum GlobalSystemMode { Gaia, ThirdParty, None } public enum ReflectionProbeResolution { Resolution16, Resolution32, Resolution64, Resolution128, Resolution256, Resolution512, Resolution1024, Resolution2048 } public enum ReflectionProbeRefreshModePW { OnAwake, EveryFrame, ViaScripting, ProbeManager } public enum ResolutionMulltiplier { Full, Half, Third, Quarter } /// /// The algorithm used to choose spawn locations /// RandomLocation - A random location will be chosen /// RandomLocationSeeded - A random start location will be chose, the next location will be based in seed throw radius /// EveryLocation - Every location in the spawner area will be checked /// EveryLocationJittered - Every location in the spawner area will be checked, and jitter added to break up the lines /// public enum SpawnerLocation { RandomLocation, RandomLocationClustered, EveryLocation, EveryLocationJittered } /// /// The algorithm used at spawn locations to determine suitability /// PointCheck - Just that location is checked /// BoundedAreaCheck - The entire area is checked - slower but good for large object placement /// public enum SpawnerLocationCheckType { PointCheck, BoundedAreaCheck } /// /// The algorithm which defines which rule will be selected in spawn location. Regardless of whether /// selected or not, the rule will still only run if it exceeds its minimum fitness settings, and /// didnt randomly fail (failure rate). /// All - All rules will be run at this location /// Fittest - Only the fittest rule will be run at this location /// WeightedFittest - The fittest rule will most likely run, then the next fittest, distributed by relative fitness /// Random - A random rule will be chosen and evaluated to run /// public enum SpawnerRuleSelector { All, Fittest, WeightedFittest, Random } /// /// The type of resource that the spawner will use in a spawn rule. Make sure to keep IDs consistent when adding new resource types /// public enum SpawnerResourceType { TerrainTexture=0, TerrainDetail=1, TerrainModifierStamp=8, TerrainTree=2, GameObject=3, SpawnExtension=4, Probe=7, StampDistribution=5, WorldBiomeMask=6 } /// /// The type of resource that is available for the user to select in a regular spawner /// public enum RegularSpawnerResourceType { TerrainTexture=0, TerrainDetail=1, TerrainModifierStamp = 8, TerrainTree =2, GameObject=3, SpawnExtension=4, Probe=7, } /// /// A subset of the spawner resource types that can be imported from the terrain /// public enum ImportableResourceType { TerrainTexture=0,TerrainDetail=1,TerrainTree=2 } /// /// A subset of the spawner resource types that can be dropped on the spawner to create new rules /// public enum DroppableResourceType { TerrainTexture = 0, TerrainDetail = 1, TerrainTree = 2, GameObject = 3 } /// /// Defines whether resources from the terrain should be added as new spawn rules, or should replace the existing rules. /// public enum ImportableResourceMode { AddRules, ReplaceRules} /// /// Used by system determine what constitutes a valid virgin terrain height check threshold /// public static float VirginTerrainCheckThreshold = 0.01f; /// /// Determines how many textures can be previewed at the same time in the spawner /// public static int maxPreviewedTextures = 5; /// /// Controls if the spawner should place spawned game objects parented to each terrain, or to a single transform in the scene only. /// public enum SpawnerTargetMode { Terrain, SingleTransform } /// /// Name of the standard GameObject spawn transform under which new game objects will be created from the spawner /// public static string defaultGOSpawnTarget = "Gaia Game Object Spawns"; /// /// Name of the Game Object that holds all designe time tools /// public static string gaiaToolsObject = "Gaia Tools"; /// /// Name of the Game Object that holds runtime objects such as water and lighting etc. /// public static string gaiaRuntimeObject = "Gaia Runtime"; /// /// Name of the Game Object that holds gaia stopwatch data /// public static string gaiaStopWatchDataObject = "Gaia Stopwatch"; /// /// Name of the Game Object that holds the gaia terrains if created in a single scene. /// public static string gaiaTerrainObjects = "Gaia Terrains"; /// /// Name of the Game Object that holds the gaia terrain exports from the Terrain Exporter /// public static string gaiaTerrainExportObjects = "Gaia Terrain Exports"; /// /// Name of the Game Object that controls the loading of terrains on demand. /// public static string gaiaTerrainLoaderManagerObjects = "Terrain Loader Manager"; /// /// Name of the Game Object that holds all player related stuff. /// public static string gaiaPlayerObject = "Gaia Player"; /// /// Name of the Game Object that holds temporary sessio. /// public static string gaiaTempSessionToolsObject = "Temp Session Tools"; /// /// Name of the Game Object that holds the Gaia Water. /// public static string gaiaWaterObject = "Gaia Water"; /// /// Name of the Game Object that holds the Gaia Water. /// public static string gaiaLightingObject = "Gaia Lighting"; /// /// Name of the Game Object that holds the Gaia Audio. /// public static string gaiaAudioObject = "Gaia Audio"; /// /// Name of the World Map Game Object /// public static string worldDesignerObject = "World Designer"; /// /// Name of the World Map Game Object /// public static string floraGlobalManagerObject = "Flora Global Manager"; /// /// Name of the World Map Random Generator Object /// public static string worldGenerator = "World Generator"; /// /// Name of the World Biome Masks Object /// public static string worldBiomeMasks = "World Biome Masks"; /// /// Name of the World Map Stamper Object /// public static string worldMapStamper = "World Map Stamper"; /// /// Name of the World Map Temporary Tools Object /// public static string worldTempTools = "World Map Temp Tools"; /// /// Name of the Stamper that will display the preview on the local map /// public static string worldMapLocalStamper = "Local Map Stamp Preview"; /// /// Name of the Stamper that will display the preview on the world map /// public static string worldMapWorldStamper = "World Map Stamp Preview"; /// /// Prefix for the World Map Terrain Object /// public static string worldMapTerrainPrefix = "World Map"; /// /// Name of the Container object that contains the stamp tokens on the world map. /// public static string worldMapStampTokenSpawnTarget = "Stamp Token"; /// /// Name of the Water Surface Game Object for the Gaia Water. /// public static string waterSurfaceObject = "Water Surface"; public static string gaiaUnderwaterMaterial = "Gaia Ocean Underwater"; public static string GaiaThunderObjectName = "Gaia Thunder"; public static string GaiaThunderPrefabName = "Gaia Thunder.prefab"; /// /// Name of the Stamper Game Object. /// public static string StamperObject = "Stamper"; /// /// Name of the Gaia Weather Game Object. /// public static string gaiaWeatherObject = "Gaia Weather"; public static string gaiaPlanarReflections = "Gaia Planar Reflections"; public static string gaiaHDRPPlanarReflections = "Gaia HDRP Planar Reflections"; public static string gaiaPlanarReflectionsCamera = "Gaia Planar Reflections Camera"; public static string gaiaFileFormatAsset = ".asset"; /// /// Name of the Maintenance Token object that triggers a maintenance run if present in the Data directory /// public static string maintenanceTokenFilename = "MaintenanceToken.dat"; /// /// Name of the FlyCam Player /// public static string playerFlyCamName = "FlyCam"; /// /// Name of the First Person Player /// public static string playerFirstPersonName = "FPSController"; /// /// Name of the XRPlayer /// public static string playerXRName = "XRController"; /// /// Name of the car controller /// public static string m_carPlayerPrefabName = "Gaia Car"; /// /// Name of the Third Person Player /// public static string playerThirdPersonName = "ThirdPersonController"; public static string underwaterTransitionObjectName = "Underwater Transition Post Processing"; public static string underwaterPostProcessingName = "Underwater Post Processing"; public static string underwaterHorizonName = "Underwater Horizon"; public static string underwaterEffectsName = "Underwater Effects"; public static string lightingSettingsName = "Gaia Lighting Settings.asset"; public static string newSpawnRuleName = "New Spawn Rule"; public static string SourceTerrainBackupObject = "Source Terrain Backup"; /// /// Name of the Label used to identify all the spawners that should appear in the Gaia Manager /// public static string gaiaManagerSpawnerLabel = "GaiaManagerSpawner"; /// /// Name of the loading screen prefab object /// public static string loadingScreenName = "Gaia Loading Screen"; /// /// The minimum possible location increment in Spawn Rules /// public static float minlocationIncrement = 0.01f; /// /// File type to use when saving images /// public enum ImageFileType { Exr, Jpg, Png, Tga } public enum ProceduralSkySunTypes { None, Simple, HighQuality } public enum CloudRenderQueue { Background1000, Geometry2000, AlphaTest2450, Transparent3000 } public enum WaterAutoUpdateMode { Interval, SceneConditions } /// /// Image formatting defaults /// public const TextureFormat defaultTextureFormat = TextureFormat.RGBA32; public const TextureFormat fmtHmTextureFormat = TextureFormat.RGBA32; public const TextureFormat fmtRGBA32 = TextureFormat.RGBA32; /// /// Storage formats /// public enum StorageFormat { PNG, JPG } public const StorageFormat defaultImageStorageFormat = StorageFormat.PNG; /// /// Image channels /// public enum ImageChannel { R, G, B, A } public const ImageChannel defaultImageStorageChannel = ImageChannel.R; public static TextureFormat[] Valid16BitFormats = new TextureFormat[10] {TextureFormat.ARGB4444, TextureFormat.R16, TextureFormat.RFloat, TextureFormat.RGB565, TextureFormat.RGBA4444, TextureFormat.RGBAFloat, TextureFormat.RGBAHalf, TextureFormat.RGFloat, TextureFormat.RGHalf, TextureFormat.RHalf }; /// /// URL for Gaia News messages /// public static string GaiaNewsURL = "https://www.procedural-worlds.com/unity-asset-news/gaia/"; /// /// URL for Gaia Pro News messages /// public static string GaiaProNewsURL = "https://www.procedural-worlds.com/unity-asset-news/gaia-pro/"; /// /// Prefix for LOD'ed Mesh Terrains created by the terrain exporter /// public static string MeshTerrainLODGroupPrefix = "LODMesh"; /// /// Official Name for a Mesh terrain - used on the Game Object, scene paths, etc. /// public static string MeshTerrainName = "Mesh Terrains"; /// /// Official Name for the impostor terrain - used on the Game Object, scene paths, etc. /// public static string ImpostorTerrainName = "Impostor"; /// /// Name for the directional light game object used in orthographic bakes /// public static string BakeDirectionalLight = "OrthoBakeLight"; /// /// Name for the Gaia Screenshotter object /// public static string gaiaScreenshotter = "Screen Shotter"; /// /// Name for the Game Object to collect the trees converted into Game Objects under /// public static string gameObjectTreeContainer = "Converted Trees"; /// /// HTML Color string for the highlighting of loader settings in the Gaia Tools. Used when selecting a loader from the Terrain Loader Manager /// to highlight where the loading specific settings are on the tool in question. /// public static string TerrainLoadingSettingsHighlightColor = "ffa100cc"; } }