diff --git a/.gitignore b/.gitignore index b6e96188d..421b8f675 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ crest/[Oo]bj/ crest/[Bb]uild/ crest/[Bb]uilds/ crest/[Ll]ogs/ +crest/[Pp]ackages/*/ crest/Assets/AssetStoreTools* # Visual Studio 2015 cache directory diff --git a/crest/packages.config b/crest/packages.config new file mode 100644 index 000000000..ae8b31cd0 --- /dev/null +++ b/crest/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/docs/.gitignore b/docs/.gitignore index d5e31999b..f945fd570 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -132,6 +132,9 @@ pythonenv* # Rope project settings .ropeproject +# Visual Studio Code project settings +.vscode + # mkdocs documentation /site diff --git a/docs/api/Crest.md b/docs/api/Crest.md new file mode 100644 index 000000000..b7fc47fe8 --- /dev/null +++ b/docs/api/Crest.md @@ -0,0 +1,1824 @@ + +# Crest + +## Contents + +- [BoatProbes](#T-Crest-BoatProbes 'Crest.BoatProbes') +- [BuildCommandBuffer](#T-Crest-BuildCommandBuffer 'Crest.BuildCommandBuffer') + - [BuildAndExecute()](#M-Crest-BuildCommandBuffer-BuildAndExecute 'Crest.BuildCommandBuffer.BuildAndExecute') +- [BuildCommandBufferBase](#T-Crest-BuildCommandBufferBase 'Crest.BuildCommandBufferBase') + - [_lastUpdateFrame](#F-Crest-BuildCommandBufferBase-_lastUpdateFrame 'Crest.BuildCommandBufferBase._lastUpdateFrame') +- [CollProviderNull](#T-Crest-CollProviderNull 'Crest.CollProviderNull') +- [CrestSortedList\`2](#T-Crest-CrestSortedList`2 'Crest.CrestSortedList`2') +- [DuplicateKeyComparer\`1](#T-Crest-DuplicateKeyComparer`1 'Crest.DuplicateKeyComparer`1') +- [EditorHelpers](#T-Crest-EditorHelpers-EditorHelpers 'Crest.EditorHelpers.EditorHelpers') + - [GetActiveSceneViewCamera()](#M-Crest-EditorHelpers-EditorHelpers-GetActiveSceneViewCamera 'Crest.EditorHelpers.EditorHelpers.GetActiveSceneViewCamera') +- [EmbeddedAssetEditor](#T-Crest-EditorHelpers-EmbeddedAssetEditor 'Crest.EditorHelpers.EmbeddedAssetEditor') + - [#ctor()](#M-Crest-EditorHelpers-EmbeddedAssetEditor-#ctor 'Crest.EditorHelpers.EmbeddedAssetEditor.#ctor') + - [OnChanged](#F-Crest-EditorHelpers-EmbeddedAssetEditor-OnChanged 'Crest.EditorHelpers.EmbeddedAssetEditor.OnChanged') + - [OnCreateEditor](#F-Crest-EditorHelpers-EmbeddedAssetEditor-OnCreateEditor 'Crest.EditorHelpers.EmbeddedAssetEditor.OnCreateEditor') + - [m_CreateButtonGUIContent](#F-Crest-EditorHelpers-EmbeddedAssetEditor-m_CreateButtonGUIContent 'Crest.EditorHelpers.EmbeddedAssetEditor.m_CreateButtonGUIContent') + - [DrawEditorCombo()](#M-Crest-EditorHelpers-EmbeddedAssetEditor-DrawEditorCombo-System-String,System-String,System-String,System-String,System-Boolean,UnityEditor-SerializedProperty- 'Crest.EditorHelpers.EmbeddedAssetEditor.DrawEditorCombo(System.String,System.String,System.String,System.String,System.Boolean,UnityEditor.SerializedProperty)') + - [OnDisable()](#M-Crest-EditorHelpers-EmbeddedAssetEditor-OnDisable 'Crest.EditorHelpers.EmbeddedAssetEditor.OnDisable') +- [FloatingObjectBase](#T-Crest-FloatingObjectBase 'Crest.FloatingObjectBase') +- [FloatingOrigin](#T-Crest-FloatingOrigin 'Crest.FloatingOrigin') + - [MoveOriginDisablePhysics()](#M-Crest-FloatingOrigin-MoveOriginDisablePhysics 'Crest.FloatingOrigin.MoveOriginDisablePhysics') + - [MoveOriginOcean()](#M-Crest-FloatingOrigin-MoveOriginOcean-UnityEngine-Vector3- 'Crest.FloatingOrigin.MoveOriginOcean(UnityEngine.Vector3)') + - [MoveOriginParticles()](#M-Crest-FloatingOrigin-MoveOriginParticles-UnityEngine-Vector3- 'Crest.FloatingOrigin.MoveOriginParticles(UnityEngine.Vector3)') + - [MoveOriginTransforms()](#M-Crest-FloatingOrigin-MoveOriginTransforms-UnityEngine-Vector3- 'Crest.FloatingOrigin.MoveOriginTransforms(UnityEngine.Vector3)') +- [FlowProviderNull](#T-Crest-FlowProviderNull 'Crest.FlowProviderNull') +- [ICollProvider](#T-Crest-ICollProvider 'Crest.ICollProvider') + - [CleanUp()](#M-Crest-ICollProvider-CleanUp 'Crest.ICollProvider.CleanUp') + - [Query(i_ownerHash,i_minSpatialLength,i_queryPoints,o_resultHeights,o_resultNorms,o_resultVels)](#M-Crest-ICollProvider-Query-System-Int32,System-Single,UnityEngine-Vector3[],System-Single[],UnityEngine-Vector3[],UnityEngine-Vector3[]- 'Crest.ICollProvider.Query(System.Int32,System.Single,UnityEngine.Vector3[],System.Single[],UnityEngine.Vector3[],UnityEngine.Vector3[])') + - [Query(i_ownerHash,i_minSpatialLength,i_queryPoints,o_resultDisps,o_resultNorms,o_resultVels)](#M-Crest-ICollProvider-Query-System-Int32,System-Single,UnityEngine-Vector3[],UnityEngine-Vector3[],UnityEngine-Vector3[],UnityEngine-Vector3[]- 'Crest.ICollProvider.Query(System.Int32,System.Single,UnityEngine.Vector3[],UnityEngine.Vector3[],UnityEngine.Vector3[],UnityEngine.Vector3[])') + - [RetrieveSucceeded()](#M-Crest-ICollProvider-RetrieveSucceeded-System-Int32- 'Crest.ICollProvider.RetrieveSucceeded(System.Int32)') + - [UpdateQueries()](#M-Crest-ICollProvider-UpdateQueries 'Crest.ICollProvider.UpdateQueries') +- [IFloatingOrigin](#T-Crest-IFloatingOrigin 'Crest.IFloatingOrigin') + - [SetOrigin()](#M-Crest-IFloatingOrigin-SetOrigin-UnityEngine-Vector3- 'Crest.IFloatingOrigin.SetOrigin(UnityEngine.Vector3)') +- [IFlowProvider](#T-Crest-IFlowProvider 'Crest.IFlowProvider') + - [CleanUp()](#M-Crest-IFlowProvider-CleanUp 'Crest.IFlowProvider.CleanUp') + - [Query(i_ownerHash,i_minSpatialLength,i_queryPoints,o_resultVels)](#M-Crest-IFlowProvider-Query-System-Int32,System-Single,UnityEngine-Vector3[],UnityEngine-Vector3[]- 'Crest.IFlowProvider.Query(System.Int32,System.Single,UnityEngine.Vector3[],UnityEngine.Vector3[])') + - [RetrieveSucceeded()](#M-Crest-IFlowProvider-RetrieveSucceeded-System-Int32- 'Crest.IFlowProvider.RetrieveSucceeded(System.Int32)') + - [UpdateQueries()](#M-Crest-IFlowProvider-UpdateQueries 'Crest.IFlowProvider.UpdateQueries') +- [IPropertyWrapper](#T-Crest-IPropertyWrapper 'Crest.IPropertyWrapper') +- [ITimeProvider](#T-Crest-ITimeProvider 'Crest.ITimeProvider') +- [LodDataMgr](#T-Crest-LodDataMgr 'Crest.LodDataMgr') +- [LodDataMgrAnimWaves](#T-Crest-LodDataMgrAnimWaves 'Crest.LodDataMgrAnimWaves') + - [_shapeCombinePass](#F-Crest-LodDataMgrAnimWaves-_shapeCombinePass 'Crest.LodDataMgrAnimWaves._shapeCombinePass') + - [SuggestDataLOD()](#M-Crest-LodDataMgrAnimWaves-SuggestDataLOD-UnityEngine-Rect- 'Crest.LodDataMgrAnimWaves.SuggestDataLOD(UnityEngine.Rect)') +- [LodDataMgrClipSurface](#T-Crest-LodDataMgrClipSurface 'Crest.LodDataMgrClipSurface') +- [LodDataMgrDynWaves](#T-Crest-LodDataMgrDynWaves 'Crest.LodDataMgrDynWaves') +- [LodDataMgrFlow](#T-Crest-LodDataMgrFlow 'Crest.LodDataMgrFlow') +- [LodDataMgrFoam](#T-Crest-LodDataMgrFoam 'Crest.LodDataMgrFoam') +- [LodDataMgrPersistent](#T-Crest-LodDataMgrPersistent 'Crest.LodDataMgrPersistent') + - [SetAdditionalSimParams()](#M-Crest-LodDataMgrPersistent-SetAdditionalSimParams-Crest-IPropertyWrapper- 'Crest.LodDataMgrPersistent.SetAdditionalSimParams(Crest.IPropertyWrapper)') +- [LodDataMgrSeaFloorDepth](#T-Crest-LodDataMgrSeaFloorDepth 'Crest.LodDataMgrSeaFloorDepth') +- [LodDataMgrShadow](#T-Crest-LodDataMgrShadow 'Crest.LodDataMgrShadow') +- [LodTransform](#T-Crest-LodTransform 'Crest.LodTransform') +- [MultiPropertyAttribute](#T-Crest-MultiPropertyAttribute 'Crest.MultiPropertyAttribute') + - [BuildLabel()](#M-Crest-MultiPropertyAttribute-BuildLabel-UnityEngine-GUIContent- 'Crest.MultiPropertyAttribute.BuildLabel(UnityEngine.GUIContent)') + - [GetPropertyHeight()](#M-Crest-MultiPropertyAttribute-GetPropertyHeight-UnityEditor-SerializedProperty,UnityEngine-GUIContent- 'Crest.MultiPropertyAttribute.GetPropertyHeight(UnityEditor.SerializedProperty,UnityEngine.GUIContent)') + - [OnGUI()](#M-Crest-MultiPropertyAttribute-OnGUI-UnityEngine-Rect,UnityEditor-SerializedProperty,UnityEngine-GUIContent,Crest-EditorHelpers-MultiPropertyDrawer- 'Crest.MultiPropertyAttribute.OnGUI(UnityEngine.Rect,UnityEditor.SerializedProperty,UnityEngine.GUIContent,Crest.EditorHelpers.MultiPropertyDrawer)') +- [ObjectWaterInteraction](#T-Crest-ObjectWaterInteraction 'Crest.ObjectWaterInteraction') +- [OceanBuilder](#T-Crest-OceanBuilder 'Crest.OceanBuilder') +- [OceanChunkRenderer](#T-Crest-OceanChunkRenderer 'Crest.OceanChunkRenderer') +- [OceanDepthCache](#T-Crest-OceanDepthCache 'Crest.OceanDepthCache') +- [OceanPlanarReflection](#T-Crest-OceanPlanarReflection 'Crest.OceanPlanarReflection') + - [RefreshPerFrames](#F-Crest-OceanPlanarReflection-RefreshPerFrames 'Crest.OceanPlanarReflection.RefreshPerFrames') + - [_frameRefreshOffset](#F-Crest-OceanPlanarReflection-_frameRefreshOffset 'Crest.OceanPlanarReflection._frameRefreshOffset') + - [ForceDistanceCulling(farClipPlane)](#M-Crest-OceanPlanarReflection-ForceDistanceCulling-System-Single- 'Crest.OceanPlanarReflection.ForceDistanceCulling(System.Single)') +- [OceanRenderer](#T-Crest-OceanRenderer 'Crest.OceanRenderer') + - [CollisionProvider](#P-Crest-OceanRenderer-CollisionProvider 'Crest.OceanRenderer.CollisionProvider') + - [CurrentLodCount](#P-Crest-OceanRenderer-CurrentLodCount 'Crest.OceanRenderer.CurrentLodCount') + - [MaxHorizDisplacement](#P-Crest-OceanRenderer-MaxHorizDisplacement 'Crest.OceanRenderer.MaxHorizDisplacement') + - [MaxVertDisplacement](#P-Crest-OceanRenderer-MaxVertDisplacement 'Crest.OceanRenderer.MaxVertDisplacement') + - [Scale](#P-Crest-OceanRenderer-Scale 'Crest.OceanRenderer.Scale') + - [ScaleCouldDecrease](#P-Crest-OceanRenderer-ScaleCouldDecrease 'Crest.OceanRenderer.ScaleCouldDecrease') + - [ScaleCouldIncrease](#P-Crest-OceanRenderer-ScaleCouldIncrease 'Crest.OceanRenderer.ScaleCouldIncrease') + - [SeaLevel](#P-Crest-OceanRenderer-SeaLevel 'Crest.OceanRenderer.SeaLevel') + - [ViewerAltitudeLevelAlpha](#P-Crest-OceanRenderer-ViewerAltitudeLevelAlpha 'Crest.OceanRenderer.ViewerAltitudeLevelAlpha') + - [ViewerHeightAboveWater](#P-Crest-OceanRenderer-ViewerHeightAboveWater 'Crest.OceanRenderer.ViewerHeightAboveWater') + - [ReportMaxDisplacementFromShape()](#M-Crest-OceanRenderer-ReportMaxDisplacementFromShape-System-Single,System-Single,System-Single- 'Crest.OceanRenderer.ReportMaxDisplacementFromShape(System.Single,System.Single,System.Single)') +- [OceanWaveSpectrum](#T-Crest-OceanWaveSpectrum 'Crest.OceanWaveSpectrum') + - [GenerateWaveData()](#M-Crest-OceanWaveSpectrum-GenerateWaveData-System-Int32,System-Single[]@,System-Single[]@- 'Crest.OceanWaveSpectrum.GenerateWaveData(System.Int32,System.Single[]@,System.Single[]@)') +- [PatchType](#T-Crest-OceanBuilder-PatchType 'Crest.OceanBuilder.PatchType') + - [Count](#F-Crest-OceanBuilder-PatchType-Count 'Crest.OceanBuilder.PatchType.Count') + - [Fat](#F-Crest-OceanBuilder-PatchType-Fat 'Crest.OceanBuilder.PatchType.Fat') + - [FatX](#F-Crest-OceanBuilder-PatchType-FatX 'Crest.OceanBuilder.PatchType.FatX') + - [FatXOuter](#F-Crest-OceanBuilder-PatchType-FatXOuter 'Crest.OceanBuilder.PatchType.FatXOuter') + - [FatXSlimZ](#F-Crest-OceanBuilder-PatchType-FatXSlimZ 'Crest.OceanBuilder.PatchType.FatXSlimZ') + - [FatXZ](#F-Crest-OceanBuilder-PatchType-FatXZ 'Crest.OceanBuilder.PatchType.FatXZ') + - [FatXZOuter](#F-Crest-OceanBuilder-PatchType-FatXZOuter 'Crest.OceanBuilder.PatchType.FatXZOuter') + - [Interior](#F-Crest-OceanBuilder-PatchType-Interior 'Crest.OceanBuilder.PatchType.Interior') + - [SlimX](#F-Crest-OceanBuilder-PatchType-SlimX 'Crest.OceanBuilder.PatchType.SlimX') + - [SlimXFatZ](#F-Crest-OceanBuilder-PatchType-SlimXFatZ 'Crest.OceanBuilder.PatchType.SlimXFatZ') + - [SlimXZ](#F-Crest-OceanBuilder-PatchType-SlimXZ 'Crest.OceanBuilder.PatchType.SlimXZ') +- [PredicatedFieldAttribute](#T-Crest-PredicatedFieldAttribute 'Crest.PredicatedFieldAttribute') + - [#ctor(propertyName,inverted,disableIfValueIs)](#M-Crest-PredicatedFieldAttribute-#ctor-System-String,System-Boolean,System-Int32- 'Crest.PredicatedFieldAttribute.#ctor(System.String,System.Boolean,System.Int32)') +- [QueryBase](#T-Crest-QueryBase 'Crest.QueryBase') + - [CalculateVelocities()](#M-Crest-QueryBase-CalculateVelocities-System-Int32,UnityEngine-Vector3[]- 'Crest.QueryBase.CalculateVelocities(System.Int32,UnityEngine.Vector3[])') + - [CompactQueryStorage()](#M-Crest-QueryBase-CompactQueryStorage 'Crest.QueryBase.CompactQueryStorage') + - [DataArrived()](#M-Crest-QueryBase-DataArrived-UnityEngine-Rendering-AsyncGPUReadbackRequest- 'Crest.QueryBase.DataArrived(UnityEngine.Rendering.AsyncGPUReadbackRequest)') + - [RemoveQueryPoints()](#M-Crest-QueryBase-RemoveQueryPoints-System-Int32- 'Crest.QueryBase.RemoveQueryPoints(System.Int32)') + - [RetrieveResults()](#M-Crest-QueryBase-RetrieveResults-System-Int32,UnityEngine-Vector3[],System-Single[],UnityEngine-Vector3[]- 'Crest.QueryBase.RetrieveResults(System.Int32,UnityEngine.Vector3[],System.Single[],UnityEngine.Vector3[])') + - [UpdateQueryPoints()](#M-Crest-QueryBase-UpdateQueryPoints-System-Int32,System-Single,UnityEngine-Vector3[],UnityEngine-Vector3[]- 'Crest.QueryBase.UpdateQueryPoints(System.Int32,System.Single,UnityEngine.Vector3[],UnityEngine.Vector3[])') +- [QueryDisplacements](#T-Crest-QueryDisplacements 'Crest.QueryDisplacements') +- [QueryFlow](#T-Crest-QueryFlow 'Crest.QueryFlow') +- [RayTraceHelper](#T-Crest-RayTraceHelper 'Crest.RayTraceHelper') + - [#ctor()](#M-Crest-RayTraceHelper-#ctor-System-Single,System-Single- 'Crest.RayTraceHelper.#ctor(System.Single,System.Single)') + - [Init(i_rayOrigin,i_rayDirection)](#M-Crest-RayTraceHelper-Init-UnityEngine-Vector3,UnityEngine-Vector3- 'Crest.RayTraceHelper.Init(UnityEngine.Vector3,UnityEngine.Vector3)') + - [Trace(o_distance)](#M-Crest-RayTraceHelper-Trace-System-Single@- 'Crest.RayTraceHelper.Trace(System.Single@)') +- [RegisterAnimWavesInput](#T-Crest-RegisterAnimWavesInput 'Crest.RegisterAnimWavesInput') +- [RegisterClipSurfaceInput](#T-Crest-RegisterClipSurfaceInput 'Crest.RegisterClipSurfaceInput') +- [RegisterDynWavesInput](#T-Crest-RegisterDynWavesInput 'Crest.RegisterDynWavesInput') +- [RegisterFlowInput](#T-Crest-RegisterFlowInput 'Crest.RegisterFlowInput') +- [RegisterFoamInput](#T-Crest-RegisterFoamInput 'Crest.RegisterFoamInput') +- [RegisterLodDataInputBase](#T-Crest-RegisterLodDataInputBase 'Crest.RegisterLodDataInputBase') +- [RegisterLodDataInput\`1](#T-Crest-RegisterLodDataInput`1 'Crest.RegisterLodDataInput`1') +- [RegisterSeaFloorDepthInput](#T-Crest-RegisterSeaFloorDepthInput 'Crest.RegisterSeaFloorDepthInput') +- [RegisterShadowInput](#T-Crest-RegisterShadowInput 'Crest.RegisterShadowInput') +- [RenderAlphaOnSurface](#T-Crest-RenderAlphaOnSurface 'Crest.RenderAlphaOnSurface') +- [RenderWireFrame](#T-RenderWireFrame 'RenderWireFrame') +- [SampleFlowHelper](#T-Crest-SampleFlowHelper 'Crest.SampleFlowHelper') + - [Init(i_queryPos,i_minLength)](#M-Crest-SampleFlowHelper-Init-UnityEngine-Vector3,System-Single- 'Crest.SampleFlowHelper.Init(UnityEngine.Vector3,System.Single)') + - [Sample()](#M-Crest-SampleFlowHelper-Sample-UnityEngine-Vector2@- 'Crest.SampleFlowHelper.Sample(UnityEngine.Vector2@)') +- [SampleHeightHelper](#T-Crest-SampleHeightHelper 'Crest.SampleHeightHelper') + - [Init(i_queryPos,i_minLength,allowMultipleCallsPerFrame)](#M-Crest-SampleHeightHelper-Init-UnityEngine-Vector3,System-Single,System-Boolean,UnityEngine-Object- 'Crest.SampleHeightHelper.Init(UnityEngine.Vector3,System.Single,System.Boolean,UnityEngine.Object)') + - [Sample()](#M-Crest-SampleHeightHelper-Sample-System-Single@- 'Crest.SampleHeightHelper.Sample(System.Single@)') +- [ScriptableObjectUtility](#T-Crest-EditorHelpers-ScriptableObjectUtility 'Crest.EditorHelpers.ScriptableObjectUtility') + - [CreateAt()](#M-Crest-EditorHelpers-ScriptableObjectUtility-CreateAt-System-Type,System-String- 'Crest.EditorHelpers.ScriptableObjectUtility.CreateAt(System.Type,System.String)') + - [CreateAt\`\`1()](#M-Crest-EditorHelpers-ScriptableObjectUtility-CreateAt``1-System-String- 'Crest.EditorHelpers.ScriptableObjectUtility.CreateAt``1(System.String)') +- [SegmentRegistrar](#T-Crest-QueryBase-SegmentRegistrar 'Crest.QueryBase.SegmentRegistrar') +- [SegmentRegistrarRingBuffer](#T-Crest-QueryBase-SegmentRegistrarRingBuffer 'Crest.QueryBase.SegmentRegistrarRingBuffer') +- [ShapeGerstner](#T-Crest-ShapeGerstner 'Crest.ShapeGerstner') + - [MinWavelength()](#M-Crest-ShapeGerstner-MinWavelength-System-Int32- 'Crest.ShapeGerstner.MinWavelength(System.Int32)') +- [ShapeGerstnerBatched](#T-Crest-ShapeGerstnerBatched 'Crest.ShapeGerstnerBatched') + - [UpdateBatch()](#M-Crest-ShapeGerstnerBatched-UpdateBatch-System-Int32,System-Int32,System-Int32,Crest-ShapeGerstnerBatched-GerstnerBatch- 'Crest.ShapeGerstnerBatched.UpdateBatch(System.Int32,System.Int32,System.Int32,Crest.ShapeGerstnerBatched.GerstnerBatch)') +- [ShapeGerstnerSplineHandling](#T-Crest-ShapeGerstnerSplineHandling 'Crest.ShapeGerstnerSplineHandling') +- [SimSettingsAnimatedWaves](#T-Crest-SimSettingsAnimatedWaves 'Crest.SimSettingsAnimatedWaves') + - [CreateCollisionProvider()](#M-Crest-SimSettingsAnimatedWaves-CreateCollisionProvider 'Crest.SimSettingsAnimatedWaves.CreateCollisionProvider') +- [SimSettingsBase](#T-Crest-SimSettingsBase 'Crest.SimSettingsBase') +- [SimpleFloatingObject](#T-Crest-SimpleFloatingObject 'Crest.SimpleFloatingObject') + - [FixedUpdateOrientation()](#M-Crest-SimpleFloatingObject-FixedUpdateOrientation-UnityEngine-Vector3- 'Crest.SimpleFloatingObject.FixedUpdateOrientation(UnityEngine.Vector3)') +- [SphereWaterInteraction](#T-Crest-SphereWaterInteraction 'Crest.SphereWaterInteraction') +- [Spline](#T-Crest-Spline-Spline 'Crest.Spline.Spline') +- [SplineInterpolation](#T-Crest-Spline-SplineInterpolation 'Crest.Spline.SplineInterpolation') + - [GenerateCubicSplineHull(splinePoints,splinePointsAndTangents)](#M-Crest-Spline-SplineInterpolation-GenerateCubicSplineHull-Crest-Spline-SplinePoint[],UnityEngine-Vector3[],System-Boolean- 'Crest.Spline.SplineInterpolation.GenerateCubicSplineHull(Crest.Spline.SplinePoint[],UnityEngine.Vector3[],System.Boolean)') + - [InterpolateCubicPosition(splinePointCount,splinePointsAndTangents,t,position)](#M-Crest-Spline-SplineInterpolation-InterpolateCubicPosition-System-Single,UnityEngine-Vector3[],System-Single,UnityEngine-Vector3@- 'Crest.Spline.SplineInterpolation.InterpolateCubicPosition(System.Single,UnityEngine.Vector3[],System.Single,UnityEngine.Vector3@)') + - [InterpolateLinearPosition(points,t,position)](#M-Crest-Spline-SplineInterpolation-InterpolateLinearPosition-UnityEngine-Vector3[],System-Single,UnityEngine-Vector3@- 'Crest.Spline.SplineInterpolation.InterpolateLinearPosition(UnityEngine.Vector3[],System.Single,UnityEngine.Vector3@)') +- [SplinePoint](#T-Crest-Spline-SplinePoint 'Crest.Spline.SplinePoint') +- [TimeProviderCustom](#T-Crest-TimeProviderCustom 'Crest.TimeProviderCustom') +- [TimeProviderDefault](#T-Crest-TimeProviderDefault 'Crest.TimeProviderDefault') +- [UnderwaterEffect](#T-Crest-UnderwaterEffect 'Crest.UnderwaterEffect') +- [VisualiseCollisionArea](#T-Crest-VisualiseCollisionArea 'Crest.VisualiseCollisionArea') +- [VisualiseRayTrace](#T-Crest-VisualiseRayTrace 'Crest.VisualiseRayTrace') +- [WaterBody](#T-Crest-WaterBody 'Crest.WaterBody') + + +## BoatProbes `type` + +##### Namespace + +Crest + +##### Summary + +Boat physics by sampling at multiple probe points. + + +## BuildCommandBuffer `type` + +##### Namespace + +Crest + +##### Summary + +The default builder for the ocean update command buffer which takes care of updating all ocean-related data, for +example rendering animated waves and advancing sims. This runs in LateUpdate after the Default bucket, after the ocean +system been moved to an up to date position and frame processing is done. + + +### BuildAndExecute() `method` + +##### Summary + +Construct the command buffer and attach it to the camera so that it will be executed in the render. + +##### Parameters + +This method has no parameters. + + +## BuildCommandBufferBase `type` + +##### Namespace + +Crest + +##### Summary + +Base class for the command buffer builder, which takes care of updating all ocean-related data. If you wish to provide your +own update logic, you can create a new component that inherits from this class and attach it to the same GameObject as the +OceanRenderer script. The new component should be set to update after the Default bucket, similar to BuildCommandBuffer. + + +### _lastUpdateFrame `constants` + +##### Summary + +Used to validate update order + + +## CollProviderNull `type` + +##### Namespace + +Crest + +##### Summary + +Gives a flat, still ocean. + + +## CrestSortedList\`2 `type` + +##### Namespace + +Crest + +##### Summary + +This is a list this is meant to be similar in behaviour to the C# + SortedList, but without allocations when used directly in a foreach loop. + + It works by using a regular list as as backing and ensuring that it is + sorted when the enumerator is accessed and used. This is a simple approach + that means we avoid sorting each time an element is added, and helps us + avoid having to develop our own more complex data structure. + + +## DuplicateKeyComparer\`1 `type` + +##### Namespace + +Crest + +##### Summary + +Comparer that always returns less or greater, never equal, to get work around unique key constraint + + +## EditorHelpers `type` + +##### Namespace + +Crest.EditorHelpers + +##### Summary + +Provides general helper functions for the editor. + + +### GetActiveSceneViewCamera() `method` + +##### Summary + +Returns the scene view camera if the scene view is focused. + +##### Parameters + +This method has no parameters. + + +## EmbeddedAssetEditor `type` + +##### Namespace + +Crest.EditorHelpers + +##### Summary + +Helper for drawing embedded asset editors + + +### #ctor() `constructor` + +##### Summary + +Create in OnEnable() + +##### Parameters + +This constructor has no parameters. + + +### OnChanged `constants` + +##### Summary + +Called when the asset being edited was changed by the user. + + +### OnCreateEditor `constants` + +##### Summary + +Called after the asset editor is created, in case it needs +to be customized + + +### m_CreateButtonGUIContent `constants` + +##### Summary + +Customize this after creation if you want + + +### DrawEditorCombo() `method` + +##### Summary + +Call this from OnInspectorGUI. Will draw the asset reference field, and +the embedded editor, or a Create Asset button, if no asset is set. + +##### Parameters + +This method has no parameters. + + +### OnDisable() `method` + +##### Summary + +Free the resources in OnDisable() + +##### Parameters + +This method has no parameters. + + +## FloatingObjectBase `type` + +##### Namespace + +Crest + +##### Summary + +Base class for objects that float on water. + + +## FloatingOrigin `type` + +##### Namespace + +Crest + +##### Summary + +This script translates all objects in the world to keep the camera near the origin in order to prevent spatial jittering due to limited +floating-point precision. The script detects when the camera is further than 'threshold' units from the origin in one or more axes, at which +point it moves everything so that the camera is back at the origin. There is also an option to disable physics beyond a certain point. This +script should normally be attached to the viewpoint, typically the main camera. + + +### MoveOriginDisablePhysics() `method` + +##### Summary + +Disable physics outside radius + +##### Parameters + +This method has no parameters. + + +### MoveOriginOcean() `method` + +##### Summary + +Notify ocean of origin shift + +##### Parameters + +This method has no parameters. + + +### MoveOriginParticles() `method` + +##### Summary + +Move all particles that are simulated in world space + +##### Parameters + +This method has no parameters. + + +### MoveOriginTransforms() `method` + +##### Summary + +Move transforms to recenter around new origin + +##### Parameters + +This method has no parameters. + + +## FlowProviderNull `type` + +##### Namespace + +Crest + +##### Summary + +Gives a stationary ocean (no horizontal flow). + + +## ICollProvider `type` + +##### Namespace + +Crest + +##### Summary + +Interface for an object that returns ocean surface displacement and height. + + +### CleanUp() `method` + +##### Summary + +On destroy, to cleanup resources + +##### Parameters + +This method has no parameters. + + +### Query(i_ownerHash,i_minSpatialLength,i_queryPoints,o_resultHeights,o_resultNorms,o_resultVels) `method` + +##### Summary + +Query water physical data at a set of points. Pass in null to any out parameters that are not required. + +##### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| i_ownerHash | [System.Int32](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Int32 'System.Int32') | Unique ID for calling code. Typically acquired by calling GetHashCode(). | +| i_minSpatialLength | [System.Single](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Single 'System.Single') | The min spatial length of the object, such as the width of a boat. Useful for filtering out detail when not needed. Set to 0 to get full available detail. | +| i_queryPoints | [UnityEngine.Vector3[]](#T-UnityEngine-Vector3[] 'UnityEngine.Vector3[]') | The world space points that will be queried. | +| o_resultHeights | [System.Single[]](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Single[] 'System.Single[]') | Float array of water heights at the query positions. Pass null if this information is not required. | +| o_resultNorms | [UnityEngine.Vector3[]](#T-UnityEngine-Vector3[] 'UnityEngine.Vector3[]') | Water normals at the query positions. Pass null if this information is not required. | +| o_resultVels | [UnityEngine.Vector3[]](#T-UnityEngine-Vector3[] 'UnityEngine.Vector3[]') | Water surface velocities at the query positions. Pass null if this information is not required. | + + +### Query(i_ownerHash,i_minSpatialLength,i_queryPoints,o_resultDisps,o_resultNorms,o_resultVels) `method` + +##### Summary + +Query water physical data at a set of points. Pass in null to any out parameters that are not required. + +##### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| i_ownerHash | [System.Int32](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Int32 'System.Int32') | Unique ID for calling code. Typically acquired by calling GetHashCode(). | +| i_minSpatialLength | [System.Single](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Single 'System.Single') | The min spatial length of the object, such as the width of a boat. Useful for filtering out detail when not needed. Set to 0 to get full available detail. | +| i_queryPoints | [UnityEngine.Vector3[]](#T-UnityEngine-Vector3[] 'UnityEngine.Vector3[]') | The world space points that will be queried. | +| o_resultDisps | [UnityEngine.Vector3[]](#T-UnityEngine-Vector3[] 'UnityEngine.Vector3[]') | Displacement vectors for water surface points that will displace to the XZ coordinates of the query points. Water heights are given by sea level plus the y component of the displacement. | +| o_resultNorms | [UnityEngine.Vector3[]](#T-UnityEngine-Vector3[] 'UnityEngine.Vector3[]') | Water normals at the query positions. Pass null if this information is not required. | +| o_resultVels | [UnityEngine.Vector3[]](#T-UnityEngine-Vector3[] 'UnityEngine.Vector3[]') | Water surface velocities at the query positions. Pass null if this information is not required. | + + +### RetrieveSucceeded() `method` + +##### Summary + +Check if query results could be retrieved successfully using return code from Query() function + +##### Parameters + +This method has no parameters. + + +### UpdateQueries() `method` + +##### Summary + +Per frame update callback + +##### Parameters + +This method has no parameters. + + +## IFloatingOrigin `type` + +##### Namespace + +Crest + + +### SetOrigin() `method` + +##### Summary + +Set a new origin. This is equivalent to subtracting the new origin position from any world position state. + +##### Parameters + +This method has no parameters. + + +## IFlowProvider `type` + +##### Namespace + +Crest + +##### Summary + +Interface for an object that returns ocean surface displacement and height. + + +### CleanUp() `method` + +##### Summary + +On destroy, to cleanup resources + +##### Parameters + +This method has no parameters. + + +### Query(i_ownerHash,i_minSpatialLength,i_queryPoints,o_resultVels) `method` + +##### Summary + +Query water flow data (horizontal motion) at a set of points. + +##### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| i_ownerHash | [System.Int32](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Int32 'System.Int32') | Unique ID for calling code. Typically acquired by calling GetHashCode(). | +| i_minSpatialLength | [System.Single](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Single 'System.Single') | The min spatial length of the object, such as the width of a boat. Useful for filtering out detail when not needed. Set to 0 to get full available detail. | +| i_queryPoints | [UnityEngine.Vector3[]](#T-UnityEngine-Vector3[] 'UnityEngine.Vector3[]') | The world space points that will be queried. | +| o_resultVels | [UnityEngine.Vector3[]](#T-UnityEngine-Vector3[] 'UnityEngine.Vector3[]') | Water surface flow velocities at the query positions. | + + +### RetrieveSucceeded() `method` + +##### Summary + +Check if query results could be retrieved successfully using return code from Query() function + +##### Parameters + +This method has no parameters. + + +### UpdateQueries() `method` + +##### Summary + +Per frame update callback + +##### Parameters + +This method has no parameters. + + +## IPropertyWrapper `type` + +##### Namespace + +Crest + +##### Summary + +Unified interface for setting properties on both materials and material property blocks + + +## ITimeProvider `type` + +##### Namespace + +Crest + +##### Summary + +Base class for scripts that provide the time to the ocean system. See derived classes for examples. + + +## LodDataMgr `type` + +##### Namespace + +Crest + +##### Summary + +Base class for data/behaviours created on each LOD. + + +## LodDataMgrAnimWaves `type` + +##### Namespace + +Crest + +##### Summary + +Captures waves/shape that is drawn kinematically - there is no frame-to-frame state. The Gerstner + waves are drawn in this way. There are two special features of this particular LodData. + + * A combine pass is done which combines downwards from low detail LODs down into the high detail LODs (see OceanScheduler). + * The textures from this LodData are passed to the ocean material when the surface is drawn (by OceanChunkRenderer). + * LodDataDynamicWaves adds its results into this LodData. The dynamic waves piggy back off the combine + pass and subsequent assignment to the ocean material (see OceanScheduler). + + The RGB channels are the XYZ displacement from a rest plane at sea level to the corresponding displaced position on the + surface. The A channel holds the variance/energy in all the smaller wavelengths that are too small to go into the cascade + slice. This is used as a statistical measure for the missing waves and is used to ensure foam is generated everywhere. + + +### _shapeCombinePass `constants` + +##### Summary + +Turn shape combine pass on/off. Debug only - ifdef'd out in standalone + + +### SuggestDataLOD() `method` + +##### Summary + +Returns index of lod that completely covers the sample area, and contains wavelengths that repeat no more than twice across the smaller +spatial length. If no such lod available, returns -1. This means high frequency wavelengths are filtered out, and the lod index can +be used for each sample in the sample area. + +##### Parameters + +This method has no parameters. + + +## LodDataMgrClipSurface `type` + +##### Namespace + +Crest + +##### Summary + +Drives ocean surface clipping (carving holes). 0-1 values, surface clipped when > 0.5. + + +## LodDataMgrDynWaves `type` + +##### Namespace + +Crest + +##### Summary + +A dynamic shape simulation that moves around with a displacement LOD. + + +## LodDataMgrFlow `type` + +##### Namespace + +Crest + +##### Summary + +A persistent flow simulation that moves around with a displacement LOD. The input is fully combined water surface shape. + + +## LodDataMgrFoam `type` + +##### Namespace + +Crest + +##### Summary + +A persistent foam simulation that moves around with a displacement LOD. The input is fully combined water surface shape. + + +## LodDataMgrPersistent `type` + +##### Namespace + +Crest + +##### Summary + +A persistent simulation that moves around with a displacement LOD. + + +### SetAdditionalSimParams() `method` + +##### Summary + +Set any sim-specific shader params. + +##### Parameters + +This method has no parameters. + + +## LodDataMgrSeaFloorDepth `type` + +##### Namespace + +Crest + +##### Summary + +Renders depth of the ocean (height of sea level above ocean floor), by rendering the relative height of tagged objects from top down. + + +## LodDataMgrShadow `type` + +##### Namespace + +Crest + +##### Summary + +Stores shadowing data to use during ocean shading. Shadowing is persistent and supports sampling across +many frames and jittered sampling for (very) soft shadows. + + +## LodTransform `type` + +##### Namespace + +Crest + +##### Summary + +This script is attached to the parent GameObject of each LOD. It provides helper functionality related to each LOD. + + +## MultiPropertyAttribute `type` + +##### Namespace + +Crest + + +### BuildLabel() `method` + +##### Summary + +Override this method to customise the label. + +##### Parameters + +This method has no parameters. + + +### GetPropertyHeight() `method` + +##### Summary + +Override this method to specify how tall the GUI for this field is in pixels. + +##### Parameters + +This method has no parameters. + + +### OnGUI() `method` + +##### Summary + +Override this method to make your own IMGUI based GUI for the property. + +##### Parameters + +This method has no parameters. + + +## ObjectWaterInteraction `type` + +##### Namespace + +Crest + +##### Summary + +Drives object/water interaction - sets parameters each frame on material that renders into the dynamic wave sim. + + +## OceanBuilder `type` + +##### Namespace + +Crest + +##### Summary + +Instantiates all the ocean geometry, as a set of tiles. + + +## OceanChunkRenderer `type` + +##### Namespace + +Crest + +##### Summary + +Sets shader parameters for each geometry tile/chunk. + + +## OceanDepthCache `type` + +##### Namespace + +Crest + +##### Summary + +Renders terrain height / ocean depth once into a render target to cache this off and avoid rendering it every frame. +This should be used for static geometry, dynamic objects should be tagged with the Render Ocean Depth component. + + +## OceanPlanarReflection `type` + +##### Namespace + +Crest + +##### Summary + +Attach to a camera to generate a reflection texture which can be sampled in the ocean shader. + + +### RefreshPerFrames `constants` + +##### Summary + +Refresh reflection every x frames(1-every frame) + + +### _frameRefreshOffset `constants` + +##### Summary + +To relax OceanPlanarReflection refresh to different frames need to set different values for each script + + +### ForceDistanceCulling(farClipPlane) `method` + +##### Summary + +Limit render distance for reflection camera for first 32 layers + +##### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| farClipPlane | [System.Single](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Single 'System.Single') | reflection far clip distance | + + +## OceanRenderer `type` + +##### Namespace + +Crest + +##### Summary + +The main script for the ocean system. Attach this to a GameObject to create an ocean. This script initializes the various data types and systems +and moves/scales the ocean based on the viewpoint. It also hosts a number of global settings that can be tweaked here. + + +### CollisionProvider `property` + +##### Summary + +Provides ocean shape to CPU. + + +### CurrentLodCount `property` + +##### Summary + +The number of LODs/scales that the ocean is currently using. + + +### MaxHorizDisplacement `property` + +##### Summary + +The maximum horizontal distance that the shape scripts are displacing the shape. + + +### MaxVertDisplacement `property` + +##### Summary + +The maximum height that the shape scripts are displacing the shape. + + +### Scale `property` + +##### Summary + +Current ocean scale (changes with viewer altitude). + + +### ScaleCouldDecrease `property` + +##### Summary + +Could the ocean horizontal scale decrease (for e.g. if the viewpoint drops in altitude). Will be false if ocean already at minimum scale. + + +### ScaleCouldIncrease `property` + +##### Summary + +Could the ocean horizontal scale increase (for e.g. if the viewpoint gains altitude). Will be false if ocean already at maximum scale. + + +### SeaLevel `property` + +##### Summary + +Sea level is given by y coordinate of GameObject with OceanRenderer script. + + +### ViewerAltitudeLevelAlpha `property` + +##### Summary + +The ocean changes scale when viewer changes altitude, this gives the interpolation param between scales. + + +### ViewerHeightAboveWater `property` + +##### Summary + +Vertical offset of camera vs water surface. + + +### ReportMaxDisplacementFromShape() `method` + +##### Summary + +User shape inputs can report in how far they might displace the shape horizontally and vertically. The max value is +saved here. Later the bounding boxes for the ocean tiles will be expanded to account for this potential displacement. + +##### Parameters + +This method has no parameters. + + +## OceanWaveSpectrum `type` + +##### Namespace + +Crest + +##### Summary + +Ocean shape representation - power values for each octave of wave components. + + +### GenerateWaveData() `method` + +##### Summary + +Samples spectrum to generate wave data. Wavelengths will be in ascending order. + +##### Parameters + +This method has no parameters. + + +## PatchType `type` + +##### Namespace + +Crest.OceanBuilder + + +### Count `constants` + +##### Summary + +Number of patch types + + +### Fat `constants` + +##### Summary + +Adds a full skirt all of the way around a patch + + ------------- + | | | | | + 1 ------------- + | | | | | + z ------------- + | | | | | + 0 ------------- + | | | | | + ------------- + 0 1 +x + + +### FatX `constants` + +##### Summary + +Adds a skirt on the right hand side of the patch + + 1 ---------- + | | | | + z ---------- + | | | | + 0 ---------- + 0 1 + x + + +### FatXOuter `constants` + +##### Summary + +Outer most side - this adds an extra skirt on the left hand side of the patch, + which will point outwards and be extended to Zfar + + 1 -------------------------------------------------------------------------------------- + | | | | + z -------------------------------------------------------------------------------------- + | | | | + 0 -------------------------------------------------------------------------------------- + 0 1 + x + + +### FatXSlimZ `constants` + +##### Summary + +Adds a skirt on the right hand side of the patch, removes skirt from top + + +### FatXZ `constants` + +##### Summary + +Adds skirts at the top and right sides of the patch + + +### FatXZOuter `constants` + +##### Summary + +Adds skirts at the top and right sides of the patch and pushes them to horizon + + +### Interior `constants` + +##### Summary + +Adds no skirt. Used in interior of highest detail LOD (0) + + 1 ------- + | | | + z ------- + | | | + 0 ------- + 0 1 + x + + +### SlimX `constants` + +##### Summary + +One less set of verts in x direction + + +### SlimXFatZ `constants` + +##### Summary + +One less set of verts in x direction, extra verts at start of z direction + + ---- + | | + 1 ---- + | | + z ---- + | | + 0 ---- + 0 1 + x + + +### SlimXZ `constants` + +##### Summary + +One less set of verts in both x and z directions + + +## PredicatedFieldAttribute `type` + +##### Namespace + +Crest + + +### #ctor(propertyName,inverted,disableIfValueIs) `constructor` + +##### Summary + +The field with this attribute will be drawn enabled/disabled based on another field. For example can be used +to disable a field if a toggle is false. Limitation - conflicts with other property drawers such as Range(). + +##### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| propertyName | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The name of the other property whose value dictates whether this field is enabled or not. | +| inverted | [System.Boolean](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Boolean 'System.Boolean') | Flip behaviour - for example disable if a bool field is set to true (instead of false). | +| disableIfValueIs | [System.Int32](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Int32 'System.Int32') | If the field has this value, disable the GUI (or enable if inverted is true). | + + +## QueryBase `type` + +##### Namespace + +Crest + +##### Summary + +Provides heights and other physical data about the water surface. Works by uploading query positions to GPU and computing +the data and then transferring back the results asynchronously. An exception to this is water surface velocities - these can +not be computed on the GPU and are instead computed on the CPU by retaining last frames' query results and computing finite diffs. + + +### CalculateVelocities() `method` + +##### Summary + +Compute time derivative of the displacements by calculating difference from last query. More complicated than it would seem - results +may not be available in one or both of the results, or the query locations in the array may change. + +##### Parameters + +This method has no parameters. + + +### CompactQueryStorage() `method` + +##### Summary + +Remove air bubbles from the query array. Currently this lazily just nukes all the registered +query IDs so they'll be recreated next time (generating garbage). + +##### Parameters + +This method has no parameters. + + +### DataArrived() `method` + +##### Summary + +Called when a compute buffer has been read back from the GPU to the CPU. + +##### Parameters + +This method has no parameters. + + +### RemoveQueryPoints() `method` + +##### Summary + +Signal that we're no longer servicing queries. Note this leaves an air bubble in the query buffer. + +##### Parameters + +This method has no parameters. + + +### RetrieveResults() `method` + +##### Summary + +Copy out displacements, heights, normals. Pass null if info is not required. + +##### Parameters + +This method has no parameters. + + +### UpdateQueryPoints() `method` + +##### Summary + +Takes a unique request ID and some world space XZ positions, and computes the displacement vector that lands at this position, +to a good approximation. The world space height of the water at that position is then SeaLevel + displacement.y. + +##### Parameters + +This method has no parameters. + + +## QueryDisplacements `type` + +##### Namespace + +Crest + +##### Summary + +Samples water surface shape - displacement, height, normal, velocity. + + +## QueryFlow `type` + +##### Namespace + +Crest + +##### Summary + +Samples horizontal motion of water volume + + +## RayTraceHelper `type` + +##### Namespace + +Crest + +##### Summary + +Helper to trace a ray against the ocean surface, by sampling at a set of points along the ray and interpolating the +intersection location. + + +### #ctor() `constructor` + +##### Summary + +Constructor. The length of the ray and the step size must be given here. The smaller the step size, the greater the accuracy. + +##### Parameters + +This constructor has no parameters. + + +### Init(i_rayOrigin,i_rayDirection) `method` + +##### Summary + +Call this each frame to initialize the trace. + +##### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| i_rayOrigin | [UnityEngine.Vector3](#T-UnityEngine-Vector3 'UnityEngine.Vector3') | World space position of ray origin | +| i_rayDirection | [UnityEngine.Vector3](#T-UnityEngine-Vector3 'UnityEngine.Vector3') | World space ray direction | + + +### Trace(o_distance) `method` + +##### Summary + +Call this once each frame to do the query, after calling Init(). + +##### Returns + +True if the results have come back from the GPU, and if the ray intersects the water surface. + +##### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| o_distance | [System.Single@](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Single@ 'System.Single@') | The distance along the ray to the first intersection with the water surface. | + + +## RegisterAnimWavesInput `type` + +##### Namespace + +Crest + +##### Summary + +Registers a custom input to the wave shape. Attach this GameObjects that you want to render into the displacmeent textures to affect ocean shape. + + +## RegisterClipSurfaceInput `type` + +##### Namespace + +Crest + +##### Summary + +Registers a custom input to the clip surface simulation. Attach this to GameObjects that you want to use to +clip the surface of the ocean. + + +## RegisterDynWavesInput `type` + +##### Namespace + +Crest + +##### Summary + +Registers a custom input to the dynamic wave simulation. Attach this GameObjects that you want to influence the sim to add ripples etc. + + +## RegisterFlowInput `type` + +##### Namespace + +Crest + +##### Summary + +Registers a custom input to the flow data. Attach this GameObjects that you want to influence the horizontal flow of the water volume. + + +## RegisterFoamInput `type` + +##### Namespace + +Crest + +##### Summary + +Registers a custom input to the foam simulation. Attach this GameObjects that you want to influence the foam simulation, such as depositing foam on the surface. + + +## RegisterLodDataInputBase `type` + +##### Namespace + +Crest + +##### Summary + +Base class for scripts that register input to the various LOD data types. + + +## RegisterLodDataInput\`1 `type` + +##### Namespace + +Crest + +##### Summary + +Registers input to a particular LOD data. + + +## RegisterSeaFloorDepthInput `type` + +##### Namespace + +Crest + +##### Summary + +Tags this object as an ocean depth provider. Renders depth every frame and should only be used for dynamic objects. +For static objects, use an Ocean Depth Cache. + + +## RegisterShadowInput `type` + +##### Namespace + +Crest + +##### Summary + +Registers a custom input for shadow data. Attach this to GameObjects that you want use to override shadows. + + +## RenderAlphaOnSurface `type` + +##### Namespace + +Crest + +##### Summary + +Helper script for alpha geometry rendering on top of ocean surface. This is required to select the best +LOD and assign the shape texture to the material. + + +## RenderWireFrame `type` + +##### Namespace + + + +##### Summary + +Triggers the scene render to happen in wireframe. Unfortunately this currently affects the GUI elements as well. + + +## SampleFlowHelper `type` + +##### Namespace + +Crest + +##### Summary + +Helper to obtain the flow data (horizontal water motion) at a single location. This is not particularly efficient to sample a single height, +but is a fairly common case. + + +### Init(i_queryPos,i_minLength) `method` + +##### Summary + +Call this to prime the sampling + +##### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| i_queryPos | [UnityEngine.Vector3](#T-UnityEngine-Vector3 'UnityEngine.Vector3') | World space position to sample | +| i_minLength | [System.Single](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Single 'System.Single') | The smallest length scale you are interested in. If you are sampling data for boat physics, +pass in the boats width. Larger objects will filter out detailed flow information. | + + +### Sample() `method` + +##### Summary + +Call this to do the query. Can be called only once after Init(). + +##### Parameters + +This method has no parameters. + + +## SampleHeightHelper `type` + +##### Namespace + +Crest + +##### Summary + +Helper to obtain the ocean surface height at a single location per frame. This is not particularly efficient to sample a single height, +but is a fairly common case. + + +### Init(i_queryPos,i_minLength,allowMultipleCallsPerFrame) `method` + +##### Summary + +Call this to prime the sampling. The SampleHeightHelper is good for one query per frame - if it is called multiple times in one frame +it will throw a warning. Calls from FixedUpdate are an exception to this - pass true as the last argument to disable the warning. + +##### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| i_queryPos | [UnityEngine.Vector3](#T-UnityEngine-Vector3 'UnityEngine.Vector3') | World space position to sample | +| i_minLength | [System.Single](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Single 'System.Single') | The smallest length scale you are interested in. If you are sampling data for boat physics, +pass in the boats width. Larger objects will ignore small wavelengths. | +| allowMultipleCallsPerFrame | [System.Boolean](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Boolean 'System.Boolean') | Pass true if calling from FixedUpdate(). This will omit a warning when there on multipled-FixedUpdate frames. | + + +### Sample() `method` + +##### Summary + +Call this to do the query. Can be called only once after Init(). + +##### Parameters + +This method has no parameters. + + +## ScriptableObjectUtility `type` + +##### Namespace + +Crest.EditorHelpers + + +### CreateAt() `method` + +##### Summary + +Create a scriptable object asset + +##### Parameters + +This method has no parameters. + + +### CreateAt\`\`1() `method` + +##### Summary + +Create a scriptable object asset + +##### Parameters + +This method has no parameters. + + +## SegmentRegistrar `type` + +##### Namespace + +Crest.QueryBase + +##### Summary + +Holds information about all query points. Maps from unique hash code to position in point array. + + +## SegmentRegistrarRingBuffer `type` + +##### Namespace + +Crest.QueryBase + +##### Summary + +Since query results return asynchronously and may not return at all (in theory), we keep a ringbuffer +of the registrars of the last frames so that when data does come back it can be interpreted correctly. + + +## ShapeGerstner `type` + +##### Namespace + +Crest + +##### Summary + +Gerstner ocean waves. + + +### MinWavelength() `method` + +##### Summary + +Min wavelength for a cascade in the wave buffer. Does not depend on viewpoint. + +##### Parameters + +This method has no parameters. + + +## ShapeGerstnerBatched `type` + +##### Namespace + +Crest + +##### Summary + +Support script for Gerstner wave ocean shapes. +Generates a number of batches of Gerstner waves. + + +### UpdateBatch() `method` + +##### Summary + +Computes Gerstner params for a set of waves, for the given lod idx. Writes shader data to the given property. +Returns number of wave components rendered in this batch. + +##### Parameters + +This method has no parameters. + + +## ShapeGerstnerSplineHandling `type` + +##### Namespace + +Crest + +##### Summary + +Generates mesh suitable for rendering gerstner waves from a spline + + +## SimSettingsAnimatedWaves `type` + +##### Namespace + +Crest + + +### CreateCollisionProvider() `method` + +##### Summary + +Provides ocean shape to CPU. + +##### Parameters + +This method has no parameters. + + +## SimSettingsBase `type` + +##### Namespace + +Crest + +##### Summary + +Base class for simulation settings. + + +## SimpleFloatingObject `type` + +##### Namespace + +Crest + +##### Summary + +Applies simple approximation of buoyancy force - force based on submerged depth and torque based on alignment +to water normal. + + +### FixedUpdateOrientation() `method` + +##### Summary + +Align to water normal. One normal by default, but can use a separate normal based on boat length vs width. This gives +varying rotations based on boat dimensions. + +##### Parameters + +This method has no parameters. + + +## SphereWaterInteraction `type` + +##### Namespace + +Crest + +##### Summary + +This script and associated shader approximate the interaction between a sphere and the water. Multiple +spheres can be used to model the interaction of a non-spherical shape. + + +## Spline `type` + +##### Namespace + +Crest.Spline + +##### Summary + +Simple spline object. Spline points are child gameobjects. + + +## SplineInterpolation `type` + +##### Namespace + +Crest.Spline + +##### Summary + +Support functions for interpolating a spline + + +### GenerateCubicSplineHull(splinePoints,splinePointsAndTangents) `method` + +##### Summary + +Takes user-placed spline points and generates an array of points and generates an array of positions and tangents +suitable for plugging into cubic interpolation + +##### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| splinePoints | [Crest.Spline.SplinePoint[]](#T-Crest-Spline-SplinePoint[] 'Crest.Spline.SplinePoint[]') | Input user-placed spline positions | +| splinePointsAndTangents | [UnityEngine.Vector3[]](#T-UnityEngine-Vector3[] 'UnityEngine.Vector3[]') | Generated spline points and tangents | + + +### InterpolateCubicPosition(splinePointCount,splinePointsAndTangents,t,position) `method` + +##### Summary + +Cubic interpolation of spline points + +##### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| splinePointCount | [System.Single](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Single 'System.Single') | Number of user placed spline points (not including tangent points) | +| splinePointsAndTangents | [UnityEngine.Vector3[]](#T-UnityEngine-Vector3[] 'UnityEngine.Vector3[]') | The spline handle points and tangent points | +| t | [System.Single](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Single 'System.Single') | 0-1 parameter along entire spline | +| position | [UnityEngine.Vector3@](#T-UnityEngine-Vector3@ 'UnityEngine.Vector3@') | Result position | + + +### InterpolateLinearPosition(points,t,position) `method` + +##### Summary + +Linearly interpolate between spline points + +##### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| points | [UnityEngine.Vector3[]](#T-UnityEngine-Vector3[] 'UnityEngine.Vector3[]') | The spline points | +| t | [System.Single](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Single 'System.Single') | 0-1 parameter along entire spline | +| position | [UnityEngine.Vector3@](#T-UnityEngine-Vector3@ 'UnityEngine.Vector3@') | Result position | + + +## SplinePoint `type` + +##### Namespace + +Crest.Spline + +##### Summary + +Spline point, intended to be child of Spline object + + +## TimeProviderCustom `type` + +##### Namespace + +Crest + +##### Summary + +This time provider fixes the ocean time at a custom value which is usable for testing/debugging. + + +## TimeProviderDefault `type` + +##### Namespace + +Crest + +##### Summary + +Default time provider - sets the ocean time to Unity's game time. + + +## UnderwaterEffect `type` + +##### Namespace + +Crest + +##### Summary + +Handles effects that need to track the water surface. Feeds in wave data and disables rendering when +not close to water. + + +## VisualiseCollisionArea `type` + +##### Namespace + +Crest + +##### Summary + +Debug draw crosses in an area around the GameObject on the water surface. + + +## VisualiseRayTrace `type` + +##### Namespace + +Crest + +##### Summary + +Debug draw a line trace from this gameobjects position, in this gameobjects forward direction. + + +## WaterBody `type` + +##### Namespace + +Crest + +##### Summary + +Demarcates an AABB area where water is present in the world. If present, ocean tiles will be +culled if they don't overlap any WaterBody. diff --git a/docs/conf.py b/docs/conf.py index 3a1953f1e..577c93f72 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -12,6 +12,7 @@ import os import sys + sys.path.insert(0, os.path.abspath('./extensions')) # -- Project information ----------------------------------------------------- @@ -20,6 +21,37 @@ copyright = '2021, Wave Harmonic & Contributors' author = 'Wave Harmonic & Contributors' +# -- Create API copy DefaultDocumentation ----------------------------------- + +import subprocess + +if not (os.path.exists('api/') and os.path.isdir('api/')): + os.mkdir('api/') + +try: + vswhere_cmd = subprocess.run(['vswhere', '-latest', '-requires', 'Microsoft.Component.MSBuild', '-find', 'MSBuild\\**\\Bin\\MsBuild.exe'], check=True, stdout=subprocess.PIPE) + msbuild_path = vswhere_cmd.stdout.strip() + csproj_path = os.path.abspath('../crest/Crest.csproj') + xml_path = os.path.abspath('./api/api.xml') + print(xml_path) + + msbuild_cmd = subprocess.run([msbuild_path, '-p:DocumentationFile=' + xml_path, csproj_path], stdout=subprocess.DEVNULL) +except: + print("Unable to build API from source. Continuing...") +# try: +# files = [file for file in os.listdir("../crest/Temp/bin/Debug") if file.endswith('.md')] +# if not (os.path.exists('api/') and os.path.isdir('api/')): +# os.mkdir('api/') +# if len(files) == 0: +# raise FileNotFoundError("No .md files were found in ../crest/Temp/bin/Debug/") + +# import shutil +# for file_name in files: +# shutil.copyfile(os.path.abspath('../crest/Temp/bin/Debug/' + file_name), os.path.abspath('api/' + file_name)) +# except FileNotFoundError as e: +# print(e) +# print('Assuming .md files are already present in docs/api/') + # -- General configuration --------------------------------------------------- @@ -34,6 +66,9 @@ "furo", + "recommonmark", + "sphinx_markdown_tables", + # Local packages "youtube", "variables", @@ -45,6 +80,11 @@ "sphinx_search.extension", ] +source_suffix = { + '.rst': 'restructuredtext', + '.md': 'markdown', +} + # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] diff --git a/docs/index.rst b/docs/index.rst index a79cc09e1..bc654897d 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -112,6 +112,7 @@ User Guide user/performance user/technical-information user/faq + api/Crest .. user/quickstart .. user/support diff --git a/docs/requirements.txt b/docs/requirements.txt index d15f54ec2..6d373a5a9 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -15,6 +15,7 @@ Pygments==2.8.0 pyparsing==2.4.7 pytz==2021.1 readthedocs-sphinx-search==0.1.0 +recommonmark==0.7.1 requests==2.25.1 six==1.15.0 snowballstemmer==2.1.0 @@ -24,6 +25,7 @@ sphinx-autobuild==2020.9.1 sphinx-hoverxref==0.5b1 sphinx-inline-tabs @ git+https://github.com/daleeidd/sphinx-inline-tabs@e70a7d08f11df10df1011c575d73d6f296b62cfc sphinx-issues==1.2.0 +sphinx-markdown-tables==0.0.15 sphinx-panels==0.5.2 sphinxcontrib-applehelp==1.0.2 sphinxcontrib-devhelp==1.0.2 diff --git a/docs/vswhere.exe b/docs/vswhere.exe new file mode 100644 index 000000000..582e82868 Binary files /dev/null and b/docs/vswhere.exe differ