diff --git a/Assets/Content/Prefabs/Stations/PlanetOutpost.prefab b/Assets/Content/Prefabs/Stations/PlanetOutpost.prefab index 6ce31f34f..e3d20ceb7 100644 --- a/Assets/Content/Prefabs/Stations/PlanetOutpost.prefab +++ b/Assets/Content/Prefabs/Stations/PlanetOutpost.prefab @@ -81,87 +81,6 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &7783244517717541194 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7783244517717541195} - - component: {fileID: 7783244517717541175} - - component: {fileID: 7783244517717541174} - m_Layer: 9 - m_Name: Gravity Well - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7783244517717541195 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7783244517717541194} - m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 7783244518521719148} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!33 &7783244517717541175 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7783244517717541194} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &7783244517717541174 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7783244517717541194} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 44a8bbb89acb4e34c9f41a9da5842bb4, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &7783244518317531027 GameObject: m_ObjectHideFlags: 0 @@ -289,7 +208,6 @@ Transform: m_Children: - {fileID: 589192530128514016} - {fileID: 7783244518317531036} - - {fileID: 7783244517717541195} - {fileID: 7783244516809707565} m_Father: {fileID: 0} m_RootOrder: 0 @@ -307,7 +225,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: Body: {fileID: 7783244518317531038} - GravityWell: {fileID: 7783244517717541174} Icon: {fileID: 7783244516809707566} Generator: {fileID: 741236912059895623} --- !u!114 &741236912059895623 diff --git a/Assets/Materials/Brushes/Gravity Well.mat b/Assets/Materials/Brushes/Gravity Field.mat similarity index 92% rename from Assets/Materials/Brushes/Gravity Well.mat rename to Assets/Materials/Brushes/Gravity Field.mat index e0bd9f79d..d912917c9 100644 --- a/Assets/Materials/Brushes/Gravity Well.mat +++ b/Assets/Materials/Brushes/Gravity Field.mat @@ -7,8 +7,8 @@ Material: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: Gravity Well - m_Shader: {fileID: 4800000, guid: 268da230635cfb34ab4ed6ad39503fa0, type: 3} + m_Name: Gravity Field + m_Shader: {fileID: 4800000, guid: 08d8efa80af84065b54c9bfed784e435, type: 3} m_ShaderKeywords: m_LightmapFlags: 4 m_EnableInstancingVariants: 0 @@ -57,8 +57,6 @@ Material: m_Offset: {x: 0, y: 0} m_Floats: - _BumpScale: 1 - - _Cutoff: 1 - - _Depth: 80 - _DetailNormalMapScale: 1 - _DstBlend: 0 - _GlossMapScale: 1 @@ -68,7 +66,6 @@ Material: - _Mode: 0 - _OcclusionStrength: 1 - _Parallax: 0.02 - - _Power: 16 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 diff --git a/Assets/Materials/Brushes/Gravity Well.mat.meta b/Assets/Materials/Brushes/Gravity Field.mat.meta similarity index 100% rename from Assets/Materials/Brushes/Gravity Well.mat.meta rename to Assets/Materials/Brushes/Gravity Field.mat.meta diff --git a/Assets/Materials/Brushes/Gravity Waves.mat b/Assets/Materials/Brushes/Gravity Waves.mat deleted file mode 100644 index a45dfed21..000000000 --- a/Assets/Materials/Brushes/Gravity Waves.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Gravity Waves - m_Shader: {fileID: 4800000, guid: 8a8e593b17063b54ea02f7ea5363b59d, type: 3} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _Depth: 3.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _Frequency: 27.43 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _Phase: 0 - - _Power: 8 - - _SinePower: 1.25 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - m_BuildTextureStacks: [] diff --git a/Assets/Materials/Brushes/Gravity Waves.mat.meta b/Assets/Materials/Brushes/Gravity Waves.mat.meta deleted file mode 100644 index f4e2f41d4..000000000 --- a/Assets/Materials/Brushes/Gravity Waves.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 11fbaa87dcc7a3743a6bd3aa5c86e5ae -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Materials/Brushes/Wormhole Gravity 1.mat b/Assets/Materials/Brushes/Wormhole Gravity 1.mat deleted file mode 100644 index 3ae24d6ee..000000000 --- a/Assets/Materials/Brushes/Wormhole Gravity 1.mat +++ /dev/null @@ -1,80 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Wormhole Gravity 1 - m_Shader: {fileID: 4800000, guid: 268da230635cfb34ab4ed6ad39503fa0, type: 3} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 1 - - _Depth: 54 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _Power: 4 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - m_BuildTextureStacks: [] diff --git a/Assets/Materials/Brushes/Wormhole Gravity 1.mat.meta b/Assets/Materials/Brushes/Wormhole Gravity 1.mat.meta deleted file mode 100644 index 7d40d0332..000000000 --- a/Assets/Materials/Brushes/Wormhole Gravity 1.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 244f3e4c0c030a24b8d7aa944895bdcf -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Materials/Brushes/Wormhole Gravity 2.mat b/Assets/Materials/Brushes/Wormhole Gravity 2.mat deleted file mode 100644 index 3ae24d6ee..000000000 --- a/Assets/Materials/Brushes/Wormhole Gravity 2.mat +++ /dev/null @@ -1,80 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Wormhole Gravity 1 - m_Shader: {fileID: 4800000, guid: 268da230635cfb34ab4ed6ad39503fa0, type: 3} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 1 - - _Depth: 54 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _Power: 4 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - m_BuildTextureStacks: [] diff --git a/Assets/Materials/Brushes/Wormhole Gravity 2.mat.meta b/Assets/Materials/Brushes/Wormhole Gravity 2.mat.meta deleted file mode 100644 index fb6f1270d..000000000 --- a/Assets/Materials/Brushes/Wormhole Gravity 2.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0ec0689c58b99c64297b3e429e1d9112 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Materials/Brushes/Wormhole Gravity.mat b/Assets/Materials/Brushes/Wormhole Gravity.mat deleted file mode 100644 index fb6f52b20..000000000 --- a/Assets/Materials/Brushes/Wormhole Gravity.mat +++ /dev/null @@ -1,82 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 8 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Wormhole Gravity - m_Shader: {fileID: 4800000, guid: 268da230635cfb34ab4ed6ad39503fa0, type: 3} - m_ValidKeywords: [] - m_InvalidKeywords: [] - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Ints: [] - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.15 - - _Depth: 2000 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _Power: 64 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - m_BuildTextureStacks: [] diff --git a/Assets/Materials/Brushes/Wormhole Gravity.mat.meta b/Assets/Materials/Brushes/Wormhole Gravity.mat.meta deleted file mode 100644 index 30ec9b01d..000000000 --- a/Assets/Materials/Brushes/Wormhole Gravity.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a9ef17c902709ce41a837c54b809184b -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Materials/Brushes/Wormhole Waves.mat b/Assets/Materials/Brushes/Wormhole Waves.mat deleted file mode 100644 index 7902c5c36..000000000 --- a/Assets/Materials/Brushes/Wormhole Waves.mat +++ /dev/null @@ -1,84 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Wormhole Waves - m_Shader: {fileID: 4800000, guid: 8681ac064d59d15458d16cc9b884262c, type: 3} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _Depth: 33.9 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _Frequency: 2 - - _FrequencyDist: 60 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _Power: 2 - - _SinePower: 1.25 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _Speed: 15 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - m_BuildTextureStacks: [] diff --git a/Assets/Materials/Brushes/Wormhole Waves.mat.meta b/Assets/Materials/Brushes/Wormhole Waves.mat.meta deleted file mode 100644 index 1e5f35dd3..000000000 --- a/Assets/Materials/Brushes/Wormhole Waves.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ef2f6090d5cc14a4e9ce38def3bed9ac -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Prefabs/RPG/Planets/Gas Giant.prefab b/Assets/Prefabs/RPG/Planets/Gas Giant.prefab index cb628d804..de87b2a13 100644 --- a/Assets/Prefabs/RPG/Planets/Gas Giant.prefab +++ b/Assets/Prefabs/RPG/Planets/Gas Giant.prefab @@ -30,7 +30,6 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 3973935122748960680} - - {fileID: 3973935121058605868} - {fileID: 3973935121358855036} m_Father: {fileID: 0} m_RootOrder: 0 @@ -48,93 +47,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: Body: {fileID: 3973935122748960683} - GravityWell: {fileID: 3973935121058605871} Icon: {fileID: 3973935121358855037} Generator: {fileID: 0} SunMaterial: {fileID: 3973935122748960685} ---- !u!1 &3973935121058605867 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3973935121058605868} - - component: {fileID: 3973935121058605856} - - component: {fileID: 3973935121058605871} - m_Layer: 9 - m_Name: Gravity Well - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3973935121058605868 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3973935121058605867} - m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3973935120991099173} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!33 &3973935121058605856 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3973935121058605867} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &3973935121058605871 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3973935121058605867} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 44a8bbb89acb4e34c9f41a9da5842bb4, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &3973935121358855035 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/RPG/Planets/Planet.prefab b/Assets/Prefabs/RPG/Planets/Planet.prefab index 336b3430b..afffe73c4 100644 --- a/Assets/Prefabs/RPG/Planets/Planet.prefab +++ b/Assets/Prefabs/RPG/Planets/Planet.prefab @@ -83,89 +83,6 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &8859079004671924238 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8859079004671924239} - - component: {fileID: 8859079004671924339} - - component: {fileID: 8859079004671924338} - m_Layer: 9 - m_Name: Gravity Well - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8859079004671924239 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8859079004671924238} - m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8859079004937162792} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!33 &8859079004671924339 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8859079004671924238} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &8859079004671924338 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8859079004671924238} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 44a8bbb89acb4e34c9f41a9da5842bb4, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &8859079004937162791 GameObject: m_ObjectHideFlags: 0 @@ -197,7 +114,6 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 8859079005270853336} - - {fileID: 8859079004671924239} - {fileID: 8859079003226229097} m_Father: {fileID: 0} m_RootOrder: 0 @@ -215,7 +131,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: Body: {fileID: 8859079005270853338} - GravityWell: {fileID: 8859079004671924338} Icon: {fileID: 8859079003226229098} Generator: {fileID: -7153121627769399805} --- !u!114 &-7153121627769399805 diff --git a/Assets/Prefabs/RPG/Planets/Sun.prefab b/Assets/Prefabs/RPG/Planets/Sun.prefab index cf7fb216f..ebe0fa72f 100644 --- a/Assets/Prefabs/RPG/Planets/Sun.prefab +++ b/Assets/Prefabs/RPG/Planets/Sun.prefab @@ -30,7 +30,6 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7852221720971737233} - - {fileID: 7852221720969441490} - {fileID: 7852221720816817928} - {fileID: 7852221720964551245} m_Father: {fileID: 0} @@ -49,7 +48,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: Body: {fileID: 7852221720971737229} - GravityWell: {fileID: 7852221720969441484} Icon: {fileID: 7852221720964551246} Generator: {fileID: 0} SunMaterial: {fileID: 7852221720971737234} @@ -221,89 +219,6 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &7852221720969441489 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7852221720969441490} - - component: {fileID: 7852221720969441485} - - component: {fileID: 7852221720969441484} - m_Layer: 9 - m_Name: Gravity Well - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7852221720969441490 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7852221720969441489} - m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 7852221720480299767} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!33 &7852221720969441485 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7852221720969441489} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &7852221720969441484 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7852221720969441489} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 44a8bbb89acb4e34c9f41a9da5842bb4, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &7852221720971737232 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/RPG/Wormhole 1.prefab b/Assets/Prefabs/RPG/Wormhole 1.prefab index b03d01009..e1ca93be7 100644 --- a/Assets/Prefabs/RPG/Wormhole 1.prefab +++ b/Assets/Prefabs/RPG/Wormhole 1.prefab @@ -1,167 +1,5 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &1826894967093516808 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1030590306481442051} - - component: {fileID: 3216580199816124320} - - component: {fileID: 3211969211988968959} - m_Layer: 9 - m_Name: Gravity Well - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1030590306481442051 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1826894967093516808} - m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1024, y: 1024, z: 1024} - m_Children: [] - m_Father: {fileID: 463084220523011477} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!33 &3216580199816124320 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1826894967093516808} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &3211969211988968959 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1826894967093516808} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 244f3e4c0c030a24b8d7aa944895bdcf, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &3908760799087214860 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 581261949390603689} - - component: {fileID: 987447324816385543} - - component: {fileID: 3959510878930752720} - m_Layer: 9 - m_Name: Gravity Waves - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &581261949390603689 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3908760799087214860} - m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 512, y: 512, z: 512} - m_Children: [] - m_Father: {fileID: 463084220523011477} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!33 &987447324816385543 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3908760799087214860} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &3959510878930752720 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3908760799087214860} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: ef2f6090d5cc14a4e9ce38def3bed9ac, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &4837153162502999620 GameObject: m_ObjectHideFlags: 0 @@ -189,9 +27,6 @@ Transform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - - {fileID: 8222188360457572195} - - {fileID: 1030590306481442051} - - {fileID: 581261949390603689} - {fileID: 8249320701965103923} m_Father: {fileID: 0} m_RootOrder: 0 @@ -277,84 +112,3 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &7647029665738834910 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8222188360457572195} - - component: {fileID: 2468954688819198096} - - component: {fileID: 8290522694236574882} - m_Layer: 9 - m_Name: Gravity Pit - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8222188360457572195 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7647029665738834910} - m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 512, y: 512, z: 512} - m_Children: [] - m_Father: {fileID: 463084220523011477} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!33 &2468954688819198096 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7647029665738834910} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &8290522694236574882 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7647029665738834910} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a9ef17c902709ce41a837c54b809184b, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} diff --git a/Assets/Resources/Settings.asset b/Assets/Resources/Settings.asset index 7b85163f5..ec980b8e8 100644 --- a/Assets/Resources/Settings.asset +++ b/Assets/Resources/Settings.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8eaa1790664477d84e442fbefc89dbd83f0b6948b4433f721f67a78703c6d7b4 -size 12871 +oid sha256:51f559958bd719e1d158b526bee1876fc3c838462b638d79c4f448c34331c420 +size 12712 diff --git a/Assets/Scenes/ARPG.unity b/Assets/Scenes/ARPG.unity index 57c793e09..370f1914b 100644 --- a/Assets/Scenes/ARPG.unity +++ b/Assets/Scenes/ARPG.unity @@ -16416,6 +16416,7 @@ MonoBehaviour: MapGravityMaterials: - {fileID: 2100000, guid: 841e4091d19548347bd59115047b4e49, type: 2} - {fileID: 2100000, guid: a92fc6d958edb9f46b6e58134f609cc0, type: 2} + GravityField: {fileID: 2100000, guid: 44a8bbb89acb4e34c9f41a9da5842bb4, type: 2} Tour: 0 TourSwitchTime: 10 TourFollowDistance: 100 @@ -23473,7 +23474,7 @@ Camera: m_Depth: 0 m_CullingMask: serializedVersion: 2 - m_Bits: 1536 + m_Bits: 512 m_RenderingPath: 1 m_TargetTexture: {fileID: 8400000, guid: 2fc21a9d3e9647948b56e384cd9378b3, type: 2} m_TargetDisplay: 0 diff --git a/Assets/Scenes/Main Menu.unity b/Assets/Scenes/Main Menu.unity index 2d80e45b7..b770f3db7 100644 --- a/Assets/Scenes/Main Menu.unity +++ b/Assets/Scenes/Main Menu.unity @@ -1076,16 +1076,6 @@ PrefabInstance: propertyPath: m_Materials.Array.data[0] value: objectReference: {fileID: 2100000, guid: b9f52544f98f47146b486fb6e27179bb, type: 2} - - target: {fileID: 7852221720969441490, guid: 046dde0f4600bce41ad33c476f99b309, - type: 3} - propertyPath: m_LocalScale.x - value: 512 - objectReference: {fileID: 0} - - target: {fileID: 7852221720969441490, guid: 046dde0f4600bce41ad33c476f99b309, - type: 3} - propertyPath: m_LocalScale.y - value: 512 - objectReference: {fileID: 0} - target: {fileID: 7852221720971737233, guid: 046dde0f4600bce41ad33c476f99b309, type: 3} propertyPath: m_LocalScale.x diff --git a/Assets/Scenes/TestScene.unity b/Assets/Scenes/TestScene.unity index ffc3f3905..06ee5fa70 100644 --- a/Assets/Scenes/TestScene.unity +++ b/Assets/Scenes/TestScene.unity @@ -911,16 +911,6 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 7852221720969441490, guid: 046dde0f4600bce41ad33c476f99b309, - type: 3} - propertyPath: m_LocalScale.x - value: 20 - objectReference: {fileID: 0} - - target: {fileID: 7852221720969441490, guid: 046dde0f4600bce41ad33c476f99b309, - type: 3} - propertyPath: m_LocalScale.y - value: 20 - objectReference: {fileID: 0} - target: {fileID: 7852221720971737233, guid: 046dde0f4600bce41ad33c476f99b309, type: 3} propertyPath: m_LocalPosition.y @@ -1768,16 +1758,6 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 7852221720969441490, guid: 046dde0f4600bce41ad33c476f99b309, - type: 3} - propertyPath: m_LocalScale.x - value: 20 - objectReference: {fileID: 0} - - target: {fileID: 7852221720969441490, guid: 046dde0f4600bce41ad33c476f99b309, - type: 3} - propertyPath: m_LocalScale.y - value: 20 - objectReference: {fileID: 0} - target: {fileID: 7852221720971737233, guid: 046dde0f4600bce41ad33c476f99b309, type: 3} propertyPath: m_LocalPosition.y @@ -5277,16 +5257,6 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 7852221720969441490, guid: 046dde0f4600bce41ad33c476f99b309, - type: 3} - propertyPath: m_LocalScale.x - value: 20 - objectReference: {fileID: 0} - - target: {fileID: 7852221720969441490, guid: 046dde0f4600bce41ad33c476f99b309, - type: 3} - propertyPath: m_LocalScale.y - value: 20 - objectReference: {fileID: 0} - target: {fileID: 7852221720971737233, guid: 046dde0f4600bce41ad33c476f99b309, type: 3} propertyPath: m_LocalPosition.y diff --git a/Assets/Scripts/Editor/GravityFieldParityVerify.cs b/Assets/Scripts/Editor/GravityFieldParityVerify.cs new file mode 100644 index 000000000..343789089 --- /dev/null +++ b/Assets/Scripts/Editor/GravityFieldParityVerify.cs @@ -0,0 +1,275 @@ +using System; +using System.IO; +using System.Linq; +using GameCult.Caching; +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.Rendering; +using CultMath; + +namespace Aetheria.EditorTools +{ + /// + /// Batchmode check for campaign aetheria-gravity, cut grid-lowering: what the Gravity Field pass draws is the sim's + /// height. It builds a zone from Settings.asset's PlanetSettings with three bodies, runs the real lowering + /// (GravityLowering.Lower and CreateField), renders the field through an orthographic camera that culls layer 9 into + /// a float target, and compares every texel with -Zone.GetHeight at the texel centre's world position. It then checks + /// that the texture's gradient points where Zone.GetForce does, and that ARPG.unity and the body prefabs are wired + /// the way the cut leaves them (the gravity cameras cull layer 9 alone, nothing but the run-time field sits on it). + /// + /// Renders, so it needs a graphics device: run WITHOUT -nographics (as FlowFieldParityVerify). + /// Unity -batchmode -projectPath <repo> -executeMethod Aetheria.EditorTools.GravityFieldParityVerify.Run -logFile <path> + /// Do not pass -quit: Run exits the Editor itself, 0 on success and 1 on any failure. + /// + public static class GravityFieldParityVerify + { + const string Tag = "[GravityFieldParityVerify]"; + const int Size = 256; + // Measured on this tree (the "max error" line this run prints): the largest |texel + GetHeight| over the three + // windows is 0.0059 u, in the planetoid's window (float32 on both sides, the GPU's log against the CPU's, the + // quad's interpolated world position). The tolerance is 5x that. A 0.1% error in the tail constant (.5 -> .501) + // moves the drawn height by 0.053 u where all three tails reach (the planetoid and zone windows), 1.8x the + // tolerance; a reference of zero moves it by about 150 u. + const float Tolerance = 0.03f; + // The worst angle between the texture's central difference and GetForce (B28: 1.0 degrees median zone, 2.9 worst). + const float GradientDegrees = 3f; + static float _maxError, _maxAngle; + static bool _ok = true; + + static void OnLog(string message, string stack, LogType type) + { + if ((type == LogType.Error || type == LogType.Exception || type == LogType.Assert) && !message.StartsWith(Tag)) + Fail("logged-error", message.Split('\n')[0]); + } + + static void Fail(string check, string detail) + { + Debug.LogError($"{Tag} FAIL {check}: {detail}"); + _ok = false; + } + + public static void Run() + { + if (SystemInfo.graphicsDeviceType == GraphicsDeviceType.Null) + { + Debug.LogError($"{Tag} FAIL: no graphics device in this session; rerun batchmode without -nographics."); + EditorApplication.Exit(1); + return; + } + + Application.logMessageReceived += OnLog; + var work = Path.Combine(Path.GetTempPath(), "gravity-parity-" + Guid.NewGuid().ToString("N")); + Directory.CreateDirectory(work); + ComputeBuffer wells = null; + GameObject field = null; + try + { + var settings = AssetDatabase.LoadAssetAtPath("Assets/Resources/Settings.asset") + ?? throw new InvalidOperationException("No Settings.asset."); + var material = AssetDatabase.LoadAssetAtPath("Assets/Materials/Brushes/Gravity Field.mat") + ?? throw new InvalidOperationException("No Gravity Field.mat."); + + var zone = BuildZone(settings, work, out var bodies); + GravityLowering.Lower(zone, ref wells); + field = GravityLowering.CreateField(material); + + var sun = Core(zone, 14152f); + var planetoid = Core(zone, 29.2f); + CheckTexels("planetoid", zone, bodies[2], 4f * planetoid); + CheckTexels("sun", zone, bodies[0], 4f * sun); + CheckTexels("zone", zone, new Vector2(0f, 0f), 1.05f * zone.Pack.Radius); + CheckGradient(zone, bodies); + Debug.Log($"{Tag} max error {_maxError:G4} u (tolerance {Tolerance:G4}); max gradient angle {_maxAngle:F2} degrees (limit {GradientDegrees:F0})"); + + CheckWiring(settings); + Debug.Log(_ok ? $"{Tag} PASS" : $"{Tag} FAIL: see errors above"); + } + catch (Exception e) + { + Debug.LogError($"{Tag} FAIL exception: {e}"); + _ok = false; + } + finally + { + Application.logMessageReceived -= OnLog; + if (field != null) UnityEngine.Object.DestroyImmediate(field); + wells?.Release(); + try { Directory.Delete(work, true); } catch { } + } + EditorApplication.Exit(_ok ? 0 : 1); + } + + static float Core(Zone zone, float mass) => zone.Settings.CoreRadius.Evaluate(mass); + + // A sun (14152 at the origin), a planet (273.9 at 610) and a planetoid (29.2 at 670): parentless, fixed, so the + // zone's wells sit where the verify says before any Update. + static Zone BuildZone(GameSettings settings, string work, out Vector2[] positions) + { + var cache = AetheriaStores.Open(Path.Combine(work, "catalog.cc"), Path.Combine(work, "run.cc"), catalogWritable: true); + cache.Upsert(new VerseGrammar { Revision = 1 }); + cache.FlushAsync().Wait(); + var items = new ItemManager(cache, new ProvenanceLedger(), settings.GameplaySettings, _ => { }); + positions = new[] { new Vector2(0f, 0f), new Vector2(610f, 0f), new Vector2(670f, 0f) }; + var masses = new[] { 14152f, 273.9f, 29.2f }; + var pack = new ZonePack { Radius = 4182f }; + for (var i = 0; i < positions.Length; i++) + { + var orbit = cache.Upsert(new OrbitData { FixedPosition = new float2(positions[i].x, positions[i].y) }).Key; + var body = cache.Upsert(new PlanetData + { Name = "Body " + i, Orbit = new CultRecordRef(orbit), Mass = masses[i] }).Key; + pack.Orbits.Add(new CultRecordRef(orbit)); + pack.Planets.Add(new CultRecordRef(body)); + } + return new Zone(items, settings.PlanetSettings, pack, new GalaxyZone { Name = "Gravity Parity", Owner = null }, null); + } + + // Renders the field through a downward orthographic camera that culls layer 9 only, centred on `centre` with + // half-size `half`, and returns the depth of every texel with the world xz of the texel's centre, which is asked + // of the camera rather than assumed. + static void Render(Vector2 centre, float half, out float[] depth, out Vector2[] world) + { + var rt = new RenderTexture(Size, Size, 0, RenderTextureFormat.RFloat) { filterMode = FilterMode.Point }; + var cameraObject = new GameObject("Gravity Parity Camera"); + var read = new Texture2D(Size, Size, TextureFormat.RFloat, false); + var previous = RenderTexture.active; + try + { + var camera = cameraObject.AddComponent(); + camera.orthographic = true; + camera.orthographicSize = half; + camera.aspect = 1f; + camera.nearClipPlane = .3f; + camera.farClipPlane = 1000f; + camera.cullingMask = 1 << GravityLowering.FieldLayer; + camera.clearFlags = CameraClearFlags.SolidColor; + camera.backgroundColor = Color.black; + camera.allowHDR = false; + camera.allowMSAA = false; + camera.targetTexture = rt; + cameraObject.transform.SetPositionAndRotation(new Vector3(centre.x, 100f, centre.y), Quaternion.Euler(90f, 0f, 0f)); + camera.Render(); + + RenderTexture.active = rt; + read.ReadPixels(new Rect(0, 0, Size, Size), 0, 0); + read.Apply(); + depth = read.GetPixelData(0).ToArray(); + world = new Vector2[Size * Size]; + for (var y = 0; y < Size; y++) + for (var x = 0; x < Size; x++) + { + var p = camera.ViewportToWorldPoint(new Vector3((x + .5f) / Size, (y + .5f) / Size, 100f)); + world[y * Size + x] = new Vector2(p.x, p.z); + } + } + finally + { + RenderTexture.active = previous; + UnityEngine.Object.DestroyImmediate(cameraObject); + UnityEngine.Object.DestroyImmediate(read); + rt.Release(); + UnityEngine.Object.DestroyImmediate(rt); + } + } + + static void CheckTexels(string window, Zone zone, Vector2 centre, float half) + { + Render(centre, half, out var depth, out var world); + var worst = 0f; + var live = 0; + for (var i = 0; i < depth.Length; i++) + { + var expected = -zone.GetHeight(new float2(world[i].x, world[i].y)); + if (float.IsNaN(depth[i])) { Fail($"{window}-texels", $"texel {i}: NaN"); return; } + var error = Math.Abs(depth[i] - expected); + worst = Math.Max(worst, error); + if (Math.Abs(expected) > 1f) live++; + if (error > Tolerance) + { + Fail($"{window}-texels", $"texel {i} at ({world[i].x:F2}, {world[i].y:F2}): expected {expected:G6}, drawn {depth[i]:G6}, error {error:G4} > {Tolerance:G4}"); + return; + } + } + _maxError = Math.Max(_maxError, worst); + // A window that draws nothing agrees with a zone that is flat: the check must be live. + if (live < depth.Length / 2) Fail($"{window}-texels", $"only {live} of {depth.Length} texels are deeper than 1 u; the check is vacuous"); + Debug.Log($"{Tag} {window}: {depth.Length} texels, max error {worst:G4} u"); + } + + // The texture's central difference (over two 4 u texels, mid-zone) points where GetForce does: depth = -h, so its + // gradient is the force over the exaggeration. This is what the slope readers (the shader's slopeFlow, the nebula + // surface normal, the drawn grid) take from the texture. + static void CheckGradient(Zone zone, Vector2[] bodies) + { + Render(new Vector2(1500f, 0f), 512f, out var depth, out var world); + var compared = 0; + for (var y = 1; y < Size - 1; y++) + for (var x = 1; x < Size - 1; x++) + { + var here = world[y * Size + x]; + if (bodies.Any(b => (b - here).magnitude < 16f)) continue; + // The world step of each texel axis is read from the camera, so a flipped or rotated target is still measured. + var au = world[y * Size + x + 1] - world[y * Size + x - 1]; + var av = world[(y + 1) * Size + x] - world[(y - 1) * Size + x]; + var du = depth[y * Size + x + 1] - depth[y * Size + x - 1]; + var dv = depth[(y + 1) * Size + x] - depth[(y - 1) * Size + x]; + var det = au.x * av.y - au.y * av.x; + var g = new Vector2((du * av.y - dv * au.y) / det, (dv * au.x - du * av.x) / det); + var f = zone.GetForce(new float2(here.x, here.y)); + var angle = Vector2.Angle(g, new Vector2(f.x, f.y)); + if (float.IsNaN(angle) || angle > GradientDegrees) + { + Fail("gradient", $"at ({here.x:F1}, {here.y:F1}) the drawn slope points {angle:F2} degrees from the force (limit {GradientDegrees:F0})"); + return; + } + _maxAngle = Math.Max(_maxAngle, angle); + compared++; + } + if (compared < Size * Size / 2) Fail("gradient", $"only {compared} texels were compared"); + } + + static void CheckWiring(GameSettings settings) + { + var scene = EditorSceneManager.OpenScene("Assets/Scenes/ARPG.unity", OpenSceneMode.Single); + try + { + var gravityTargets = new[] { "Fog Surface Displacement", "Slime Gravity", "MinimapGravity" }; + var seen = 0; + foreach (var camera in UnityEngine.Object.FindObjectsByType(FindObjectsInactive.Include, FindObjectsSortMode.None)) + { + if (camera.targetTexture == null || !gravityTargets.Contains(camera.targetTexture.name)) continue; + seen++; + if (camera.cullingMask != 1 << GravityLowering.FieldLayer) + Fail("wiring", $"camera {camera.name} (target {camera.targetTexture.name}) culls mask {camera.cullingMask}, not layer {GravityLowering.FieldLayer} alone"); + } + if (seen < gravityTargets.Length) Fail("wiring", $"only {seen} gravity cameras found in ARPG.unity"); + + var renderer = UnityEngine.Object.FindFirstObjectByType(FindObjectsInactive.Include); + if (renderer == null) Fail("wiring", "no ZoneRenderer in ARPG.unity"); + else if (renderer.GravityField == null || renderer.GravityField.shader.name != "Brushes/Gravity Field") + Fail("wiring", "ZoneRenderer.GravityField is not a Brushes/Gravity Field material"); + + foreach (var r in UnityEngine.Object.FindObjectsByType(FindObjectsInactive.Include, FindObjectsSortMode.None)) + if (r.gameObject.layer == GravityLowering.FieldLayer) + Fail("wiring", $"renderer {r.name} in ARPG.unity sits on layer {GravityLowering.FieldLayer}"); + } + finally + { + EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Single); + } + + foreach (var path in new[] + { + "Assets/Prefabs/RPG/Planets/Planet.prefab", "Assets/Prefabs/RPG/Planets/Gas Giant.prefab", + "Assets/Prefabs/RPG/Planets/Sun.prefab", "Assets/Prefabs/RPG/Wormhole 1.prefab" + }) + { + var prefab = AssetDatabase.LoadAssetAtPath(path); + if (prefab == null) { Fail("wiring", $"no prefab at {path}"); continue; } + foreach (var r in prefab.GetComponentsInChildren(true)) + if (r.gameObject.layer == GravityLowering.FieldLayer) + Fail("wiring", $"renderer {r.name} in {path} sits on layer {GravityLowering.FieldLayer}"); + } + } + } +} diff --git a/Assets/Scripts/Editor/GravityFieldParityVerify.cs.meta b/Assets/Scripts/Editor/GravityFieldParityVerify.cs.meta new file mode 100644 index 000000000..50646bcbb --- /dev/null +++ b/Assets/Scripts/Editor/GravityFieldParityVerify.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ceb2bdab0804463b1998471d47e82fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/Settings.cs b/Assets/Scripts/ServerShared/Settings.cs index a0fa7c7d9..6fcdd8f61 100644 --- a/Assets/Scripts/ServerShared/Settings.cs +++ b/Assets/Scripts/ServerShared/Settings.cs @@ -13,8 +13,6 @@ using static CultMath.math; [Serializable, MessagePackObject(keyAsPropertyName:true), JsonObject] public class PlanetSettings { - public ExponentialCurve GravityDepth; - public ExponentialCurve GravityRadius; public ExponentialCurve LightRadius; public ExponentialCurve BodyRadius; diff --git a/Assets/Scripts/ServerShared/Zone.cs b/Assets/Scripts/ServerShared/Zone.cs index cd0449545..ccec8edfd 100644 --- a/Assets/Scripts/ServerShared/Zone.cs +++ b/Assets/Scripts/ServerShared/Zone.cs @@ -612,14 +612,17 @@ public class Zone return security; } + // The potential of a body's well at the zone's edge, subtracted so every well is zero there: the one owner of the + // reference. GetHeight sums with it and the renderer's lowering (GravityLowering) hands it to the shader unchanged. + public float WellReference(Planet body) => GravityField.Potential(body.WellStrength, body.CoreRadius, Pack.Radius); + public float GetHeight(float2 position) { var result = 0f; foreach (var body in PlanetInstances.Values) { var offset = position - body.Orbit.Position; - result += GravityField.Potential(body.WellStrength, body.CoreRadius, length(offset)) - - GravityField.Potential(body.WellStrength, body.CoreRadius, Pack.Radius); + result += GravityField.Potential(body.WellStrength, body.CoreRadius, length(offset)) - WellReference(body); } return result / Settings.HeightExaggeration; @@ -685,9 +688,6 @@ public class Planet public Orbit Orbit; protected readonly PlanetSettings Settings; public BodyData BodyData; - // Brush inputs only (ZoneRenderer's Gravity Well brushes and planet icon); no sim reader. grid-lowering deletes them. - public float GravityWellDepth; - public float GravityWellRadius; public float BodyRadius; // The well (GravityField): strength c and softened core radius R by mass, and the Roche limit, the closest a child @@ -707,8 +707,6 @@ public class Planet public void CalculateProperties() { BodyRadius = Settings.BodyRadius.Evaluate(BodyData.Mass) * BodyData.BodyRadiusMultiplier; - GravityWellRadius = Settings.GravityRadius.Evaluate(BodyData.Mass) * BodyData.GravityRadiusMultiplier; - GravityWellDepth = Settings.GravityDepth.Evaluate(BodyData.Mass) * BodyData.GravityDepthMultiplier; WellStrength = Settings.WellStrength.Evaluate(BodyData.Mass); CoreRadius = Settings.CoreRadius.Evaluate(BodyData.Mass); RocheLimit = Settings.RocheLimit.Evaluate(BodyData.Mass); diff --git a/Assets/Scripts/ServerShared/ZoneData.cs b/Assets/Scripts/ServerShared/ZoneData.cs index a609db234..dd098862f 100644 --- a/Assets/Scripts/ServerShared/ZoneData.cs +++ b/Assets/Scripts/ServerShared/ZoneData.cs @@ -86,12 +86,6 @@ public abstract class BodyData [JsonProperty("bodyRadiusMul")] [Key(5)] public float BodyRadiusMultiplier = 1; - - [JsonProperty("gravRadiusMul")] [Key(6)] - public float GravityRadiusMultiplier = 1; - - [JsonProperty("depthMul")] [Key(7)] - public float GravityDepthMultiplier = 1; } [CultDocument("aetheria.planetdata", "1"), MessagePackObject, JsonObject(MemberSerialization.OptIn)] diff --git a/Assets/Scripts/Zone Display/GravityLowering.cs b/Assets/Scripts/Zone Display/GravityLowering.cs new file mode 100644 index 000000000..c8d33cc7b --- /dev/null +++ b/Assets/Scripts/Zone Display/GravityLowering.cs @@ -0,0 +1,78 @@ +using System.Runtime.InteropServices; +using UnityEngine; + +/// +/// The renderer's lowering of the zone's potential (aetheria-gravity, cut grid-lowering). Zone.GetHeight owns the drawn +/// height: this hands its inputs (each well's position, strength, core radius and reference, and the exaggeration) to +/// Assets/Shaders/Gravity.cginc, which sums them per texel, and makes the one quad that carries the sum into every +/// camera that culls layer 9. Nothing here decides a height. +/// +public static class GravityLowering +{ + /// The layer the gravity cameras cull; nothing but the run-time field sits on it. + public const int FieldLayer = 9; + /// The quad's side in u: larger than any zone (10000) plus any view (4096); texels outside a camera cost nothing. + public const float FieldExtent = 100000f; + + // Mirrors Gravity.cginc's GravityWell: float2 position, strength, coreRadius, reference. + [StructLayout(LayoutKind.Sequential)] + struct WellRecord + { + public Vector2 Position; + public float Strength; + public float CoreRadius; + public float Reference; + } + + static readonly int Stride = Marshal.SizeOf(); + static readonly int WellsId = Shader.PropertyToID("_GravityWells"); + static readonly int CountId = Shader.PropertyToID("_GravityWellCount"); + static readonly int ExaggerationId = Shader.PropertyToID("_HeightExaggeration"); + static WellRecord[] _records = new WellRecord[0]; + + /// + /// Fills one record per body of the zone (a null zone has none) and sets the shader globals. The buffer is the + /// caller's, (re)allocated to the body count (at least one, so the global is always bound). + /// + public static void Lower(Zone zone, ref ComputeBuffer wells) + { + var count = zone?.PlanetInstances.Count ?? 0; + var capacity = Mathf.Max(count, 1); + if (wells == null || wells.count != capacity) + { + wells?.Release(); + wells = new ComputeBuffer(capacity, Stride); + } + + if (_records.Length != capacity) _records = new WellRecord[capacity]; + var i = 0; + if (zone != null) + foreach (var body in zone.PlanetInstances.Values) + _records[i++] = new WellRecord + { + Position = new Vector2(body.Orbit.Position.x, body.Orbit.Position.y), + Strength = body.WellStrength, + CoreRadius = body.CoreRadius, + Reference = zone.WellReference(body) + }; + wells.SetData(_records); + + Shader.SetGlobalBuffer(WellsId, wells); + Shader.SetGlobalInt(CountId, count); + Shader.SetGlobalFloat(ExaggerationId, zone?.Settings.HeightExaggeration ?? 1f); + } + + /// The one quad of the field: flat in xz at y 0 on layer 9, drawn with the Gravity Field material. + public static GameObject CreateField(Material material) + { + var field = new GameObject("Gravity Field") { layer = FieldLayer }; + field.transform.rotation = Quaternion.Euler(90f, 0f, 0f); + field.transform.localScale = FieldExtent * Vector3.one; + field.AddComponent().sharedMesh = Resources.GetBuiltinResource("Quad.fbx"); + var renderer = field.AddComponent(); + renderer.sharedMaterial = material; + renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; + renderer.receiveShadows = false; + return field; + } +} diff --git a/Assets/Scripts/Zone Display/GravityLowering.cs.meta b/Assets/Scripts/Zone Display/GravityLowering.cs.meta new file mode 100644 index 000000000..725a49896 --- /dev/null +++ b/Assets/Scripts/Zone Display/GravityLowering.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1a5e08474b514e509ed1477b3ac06e94 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Zone Display/PlanetObject.cs b/Assets/Scripts/Zone Display/PlanetObject.cs index 9e4a80358..21b49262f 100644 --- a/Assets/Scripts/Zone Display/PlanetObject.cs +++ b/Assets/Scripts/Zone Display/PlanetObject.cs @@ -9,7 +9,6 @@ using UnityEngine; public class PlanetObject : MonoBehaviour { public MeshRenderer Body; - public MeshRenderer GravityWell; public MeshRenderer Icon; public CelestialBodyGenerator Generator; } diff --git a/Assets/Scripts/Zone Display/ZoneRenderer.cs b/Assets/Scripts/Zone Display/ZoneRenderer.cs index 907134dbc..4c63ed7b8 100644 --- a/Assets/Scripts/Zone Display/ZoneRenderer.cs +++ b/Assets/Scripts/Zone Display/ZoneRenderer.cs @@ -46,6 +46,8 @@ public class ZoneRenderer : MonoBehaviour public MineInstance MinePrefab; public VapourCloudInstance CloudPrefab; public Material[] MapGravityMaterials; + // The gravity field's material (Brushes/Gravity Field): GravityLowering makes the one quad that draws it. + public Material GravityField; [Header("Tour")] public bool Tour; public float TourSwitchTime = 5f; @@ -77,7 +79,8 @@ public class ZoneRenderer : MonoBehaviour // is stored on AsteroidBelt any more. private Dictionary _beltTransforms = new Dictionary(); private float _viewDistance; - //private float _maxDepth; + private GameObject _gravityField; + private ComputeBuffer _gravityWells; private float _minimapDistance; private int _tourIndex = -1; @@ -195,6 +198,7 @@ public class ZoneRenderer : MonoBehaviour SectorBrushes.localScale = zone.Pack.Radius * 2 * Vector3.one; SlimeGravityCamera.orthographicSize = zone.Pack.Radius; SlimeRenderer.ZoneRadius = zone.Pack.Radius; + if (_gravityField == null) _gravityField = GravityLowering.CreateField(GravityField); foreach (var p in zone.Planets) LoadPlanet(p.Key, p.Value); @@ -321,9 +325,17 @@ public class ZoneRenderer : MonoBehaviour WormholeInstances.Add(wormhole, (instance.gameObject, icon)); } + void OnDestroy() + { + _gravityWells?.Release(); + _gravityWells = null; + } + public void ClearZone() { if (Zone == null) return; + _gravityWells?.Release(); + _gravityWells = null; foreach (var wormhole in WormholeInstances.Values) { Destroy(wormhole.gravity); @@ -491,11 +503,6 @@ public class ZoneRenderer : MonoBehaviour var planetInstance = Zone.PlanetInstances[key]; planet.Body.transform.localScale = planetInstance.BodyRadius * Vector3.one; - planet.GravityWell.transform.localScale = planetInstance.GravityWellRadius * Vector3.one; - // var depth = planetInstance.GravityWellDepth; - // if (depth > _maxDepth) _maxDepth = depth; - planet.GravityWell.material.SetFloat("_Depth", planetInstance.GravityWellDepth); - planet.Icon.transform.position = new Vector3(0, -planetInstance.GravityWellDepth, 0); planet.Icon.transform.localScale = Settings.IconSize.Evaluate(planetInstance.BodyData.Mass) * Vector3.one; @@ -513,6 +520,7 @@ public class ZoneRenderer : MonoBehaviour void Update() { var maxDepth = 0f; + GravityLowering.Lower(Zone, ref _gravityWells); foreach (var loot in _floatingItems.Values) { loot.ViewOrigin = PerspectiveEntity.Position; @@ -576,6 +584,7 @@ public class ZoneRenderer : MonoBehaviour if (-height > maxDepth) maxDepth = -height; planet.Value.transform.position = new Vector3(p.x, 0, p.y); planet.Value.Body.transform.localPosition = new Vector3(0, height + planetInstance.BodyRadius * 2, 0); + planet.Value.Icon.transform.localPosition = new Vector3(0, height, 0); if (planet.Value is GasGiantObject gasGiantObject) { if (!(planet.Value is SunObject)) diff --git a/Assets/Shaders/Brushes/GravityField.shader b/Assets/Shaders/Brushes/GravityField.shader new file mode 100644 index 000000000..b3987aab1 --- /dev/null +++ b/Assets/Shaders/Brushes/GravityField.shader @@ -0,0 +1,47 @@ +// Draws the zone's gravity: depth = -Zone.GetHeight at the world xz of every texel, into whichever gravity camera culls +// layer 9 (Surface Displacement, Patch Displacement, Slime Gravity, both Map Gravity). One quad covers the zone; the +// law lives in Gravity.cginc, which mirrors ServerShared's GravityField. +Shader "Brushes/Gravity Field" { +Category { + Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" } + Blend One One + ColorMask RGB + Cull Off Lighting Off ZWrite Off + + SubShader { + Pass { + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 4.5 + + #include "UnityCG.cginc" + #include "../Gravity.cginc" + + struct appdata_t { + float4 vertex : POSITION; + }; + + struct v2f { + float4 vertex : SV_POSITION; + float2 world : TEXCOORD0; + }; + + v2f vert (appdata_t v) + { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + o.world = mul(unity_ObjectToWorld, v.vertex).xz; + return o; + } + + float4 frag (v2f i) : SV_Target + { + return (-gravityHeight(i.world)).xxxx; + } + ENDCG + } + } +} +} diff --git a/Assets/Shaders/Brushes/RadialWaveBrush.shader.meta b/Assets/Shaders/Brushes/GravityField.shader.meta similarity index 80% rename from Assets/Shaders/Brushes/RadialWaveBrush.shader.meta rename to Assets/Shaders/Brushes/GravityField.shader.meta index 14b474d83..f98548391 100644 --- a/Assets/Shaders/Brushes/RadialWaveBrush.shader.meta +++ b/Assets/Shaders/Brushes/GravityField.shader.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8a8e593b17063b54ea02f7ea5363b59d +guid: 08d8efa80af84065b54c9bfed784e435 ShaderImporter: externalObjects: {} defaultTextures: [] diff --git a/Assets/Shaders/Brushes/RadialWaveBrush.shader b/Assets/Shaders/Brushes/RadialWaveBrush.shader deleted file mode 100644 index 1828873bc..000000000 --- a/Assets/Shaders/Brushes/RadialWaveBrush.shader +++ /dev/null @@ -1,81 +0,0 @@ -Shader "Brushes/Radial Wave Brush" { -Properties { - _Depth ("Depth", Float) = 0.5 - _Power("Envelope Power", Float) = 1.25 - _Frequency("Frequency", Float) = 6.2832 - _Phase("Phase", Float) = 0 - _SinePower("Sine Power", Float) = 1.25 -} - -Category { - Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" } - Blend One One - ColorMask RGB - Cull Off Lighting Off ZWrite Off - - SubShader { - Pass { - - CGPROGRAM - #pragma vertex vert - #pragma fragment frag - #pragma target 2.0 - - #include "UnityCG.cginc" - - float _Depth; - float _Power; - float _Frequency; - float _Phase; - float _SinePower; - - struct appdata_t { - float4 vertex : POSITION; - fixed4 color : COLOR; - float2 texcoord : TEXCOORD0; - }; - - struct v2f { - float4 vertex : SV_POSITION; - fixed4 color : COLOR; - float2 texcoord : TEXCOORD0; - }; - - float4 _MainTex_ST; - - v2f vert (appdata_t v) - { - v2f o; - o.vertex = UnityObjectToClipPos(v.vertex); - o.color = v.color; - o.texcoord = v.texcoord; - return o; - } - - float almostIdentity(float x, float m, float n) - { - if (x>m) return x; - - const float a = 2.0f*n - m; - const float b = 2.0f*m - 3.0f*n; - const float t = x / m; - - return (a*t + b)*t*t + n; - } - - float powerPulse( float x, float power ) - { - x = saturate(abs(x)); - return pow((x + 1.0f) * (1.0f - x), power); - } - - fixed4 frag (v2f i) : SV_Target - { - float dist = length(i.texcoord - float2(.5,.5)) * 2; - return _Depth * powerPulse(dist,_Power) * cos(pow(dist, _SinePower)*_Frequency+_Phase); - } - ENDCG - } - } -} -} diff --git a/Assets/Shaders/Brushes/WormholeBrush.shader b/Assets/Shaders/Brushes/WormholeBrush.shader deleted file mode 100644 index 6d2c8a0ed..000000000 --- a/Assets/Shaders/Brushes/WormholeBrush.shader +++ /dev/null @@ -1,85 +0,0 @@ -Shader "Brushes/Wormhole Brush" { -Properties { - _Depth ("Depth", Float) = 0.5 - _Power("Envelope Power", Float) = 1.25 - _Frequency("Frequency", Float) = 6.2832 - _FrequencyDist("Distance Frequency", Float) = 6.2832 - _Speed("Speed", Float) = 0 - _SinePower("Sine Power", Float) = 1.25 -} - -Category { - Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" } - Blend One One - ColorMask RGB - Cull Off Lighting Off ZWrite Off - - SubShader { - Pass { - - CGPROGRAM - #pragma vertex vert - #pragma fragment frag - #pragma target 2.0 - - #include "UnityCG.cginc" - - float _Depth; - float _Power; - float _Frequency; - float _FrequencyDist; - float _Speed; - float _SinePower; - - struct appdata_t { - float4 vertex : POSITION; - fixed4 color : COLOR; - float2 texcoord : TEXCOORD0; - }; - - struct v2f { - float4 vertex : SV_POSITION; - fixed4 color : COLOR; - float2 texcoord : TEXCOORD0; - }; - - float4 _MainTex_ST; - - v2f vert (appdata_t v) - { - v2f o; - o.vertex = UnityObjectToClipPos(v.vertex); - o.color = v.color; - o.texcoord = v.texcoord; - return o; - } - - float almostIdentity(float x, float m, float n) - { - if (x>m) return x; - - const float a = 2.0f*n - m; - const float b = 2.0f*m - 3.0f*n; - const float t = x / m; - - return (a*t + b)*t*t + n; - } - - float powerPulse( float x, float power ) - { - x = saturate(abs(x)); - return pow((x + 1.0f) * (1.0f - x), power); - } - - fixed4 frag (v2f i) : SV_Target - { - float2 uv2 = i.texcoord - float2(.5,.5); - float dist = length(uv2); - float ang = atan2(uv2.y,uv2.x); - return _Depth * powerPulse(dist * 2,_Power) * (cos(ang*_Frequency+pow(dist, _SinePower)*_FrequencyDist+_Time.x*_Speed)+1); - } - ENDCG - } - } -} -} diff --git a/Assets/Shaders/Gravity.cginc b/Assets/Shaders/Gravity.cginc new file mode 100644 index 000000000..8cc256d94 --- /dev/null +++ b/Assets/Shaders/Gravity.cginc @@ -0,0 +1,42 @@ +#ifndef AETHERIA_GRAVITY_INCLUDED +#define AETHERIA_GRAVITY_INCLUDED + +// The lowering of the zone's potential (aetheria-gravity, cut grid-lowering). The law is ServerShared's GravityField +// and the height is Zone.GetHeight; this file mirrors them and decides nothing. GravityLowering.Lower fills the +// buffer and the globals from the zone (positions from Orbit.Position, reference from Zone.WellReference) each frame. +// GravityFieldParityVerify renders it and compares every texel with -Zone.GetHeight. + +struct GravityWell +{ + float2 position; + float strength; + float coreRadius; + float reference; +}; + +StructuredBuffer _GravityWells; +int _GravityWellCount; +float _HeightExaggeration; + +// GravityField.Potential, line for line: c is the well's strength, R its core radius, r the distance. +float gravityPotential(float c, float R, float r) +{ + return c == 0 ? 0 : + r < R + ? c * r * r / (2 * R * R) + : c * (log(r / R) + .5); +} + +// Zone.GetHeight at world xz: each well's potential minus its own reference, summed, divided by the exaggeration. +float gravityHeight(float2 p) +{ + float result = 0; + for (int i = 0; i < _GravityWellCount; i++) + { + GravityWell well = _GravityWells[i]; + result += gravityPotential(well.strength, well.coreRadius, length(p - well.position)) - well.reference; + } + return result / _HeightExaggeration; +} + +#endif diff --git a/Assets/Shaders/Brushes/WormholeBrush.shader.meta b/Assets/Shaders/Gravity.cginc.meta similarity index 71% rename from Assets/Shaders/Brushes/WormholeBrush.shader.meta rename to Assets/Shaders/Gravity.cginc.meta index 6bccf4a95..61a1a4c96 100644 --- a/Assets/Shaders/Brushes/WormholeBrush.shader.meta +++ b/Assets/Shaders/Gravity.cginc.meta @@ -1,10 +1,9 @@ fileFormatVersion: 2 -guid: 8681ac064d59d15458d16cc9b884262c +guid: b8f69df89fde433c8263115c25267a10 ShaderImporter: externalObjects: {} defaultTextures: [] nonModifiableTextures: [] - preprocessorOverride: 0 userData: assetBundleName: assetBundleVariant: diff --git a/tests/Aetheria.Shared.Tests/GravitySubtractTests.cs b/tests/Aetheria.Shared.Tests/GravitySubtractTests.cs index 696b491df..078de12f2 100644 --- a/tests/Aetheria.Shared.Tests/GravitySubtractTests.cs +++ b/tests/Aetheria.Shared.Tests/GravitySubtractTests.cs @@ -46,8 +46,6 @@ public sealed class GravitySubtractTests : IDisposable CoreRadius = new ExponentialCurve { Exponent = .25f, Multiplier = 3f }, RocheLimit = new ExponentialCurve { Exponent = .25f, Multiplier = 7.32f }, BodyRadius = new ExponentialCurve { Exponent = .25f, Multiplier = 3f }, - GravityRadius = new ExponentialCurve { Exponent = .25f, Multiplier = 500f }, - GravityDepth = new ExponentialCurve { Exponent = .175f, Multiplier = 30f }, LightRadius = new ExponentialCurve { Exponent = .25f, Multiplier = 300f }, OrbitPeriod = new ExponentialCurve() }; @@ -81,8 +79,6 @@ public sealed class GravitySubtractTests : IDisposable var orbit = _cache.Upsert(new OrbitData { FixedPosition = float2.zero }).Key; data.Orbit = new CultRecordRef(orbit); data.Mass = 100f; - data.GravityRadiusMultiplier = 1.5f; - data.GravityDepthMultiplier = .7f; var body = _cache.Upsert(data).Key; var pack = new ZonePack { Radius = PackRadius }; pack.Orbits.Add(new CultRecordRef(orbit)); @@ -133,9 +129,9 @@ public sealed class GravitySubtractTests : IDisposable private float _clock; private const float PackRadius = 1000f; - // CultCache has no primitive for reserving a removed MessagePack key. Key 8 of a body record (its former well - // exponent) and the wave keys of the gas giants (14-17) must not come back with a different meaning, because - // stored records may still carry them. Every record type that is a BodyData is checked, bases walked, so a giant + // CultCache has no primitive for reserving a removed MessagePack key. Keys 6 and 7 of a body record (its former + // brush multipliers), key 8 (its former well exponent) and the wave keys of the gas giants (14-17) must not come back + // with a different meaning, because stored records may still carry them. Every record type that is a BodyData is checked, bases walked, so a giant // kind added later (the sun is one) cannot take them. [Fact] public void ABodyRecordNeverReusesRetiredKeys() @@ -157,7 +153,7 @@ public sealed class GravitySubtractTests : IDisposable { var keys = KeysOf(type); Assert.NotEmpty(keys); - Assert.DoesNotContain(8, keys); + foreach (var retired in new[] { 6, 7, 8 }) Assert.DoesNotContain(retired, keys); if (typeof(GasGiantData).IsAssignableFrom(type)) foreach (var retired in new[] { 14, 15, 16, 17 }) Assert.DoesNotContain(retired, keys); } diff --git a/tests/Aetheria.Shared.Tests/MiningCut2Tests.cs b/tests/Aetheria.Shared.Tests/MiningCut2Tests.cs index 647406669..5ac5ecac8 100644 --- a/tests/Aetheria.Shared.Tests/MiningCut2Tests.cs +++ b/tests/Aetheria.Shared.Tests/MiningCut2Tests.cs @@ -44,10 +44,8 @@ public sealed class MiningCut2Tests : IDisposable AsteroidSize = new ExponentialLerp { Minimum = 2f, Maximum = 9f, Exponent = 1.7f }, AsteroidHitpoints = new ExponentialLerp { Minimum = 20f, Maximum = 220f, Exponent = 1.6f }, AsteroidRespawnTime = new ExponentialLerp { Minimum = 8f, Maximum = 96f, Exponent = 1.2f }, - // The zone builds a Planet for the fixture's non-belt body; its constructor reads these three. - BodyRadius = new ExponentialCurve(), - GravityRadius = new ExponentialCurve(), - GravityDepth = new ExponentialCurve() + // The zone builds a Planet for the fixture's non-belt body; its constructor reads this. + BodyRadius = new ExponentialCurve() }; private sealed class Fixture diff --git a/tests/Aetheria.Shared.Tests/MiningCut3Tests.cs b/tests/Aetheria.Shared.Tests/MiningCut3Tests.cs index 273b63547..a9146613a 100644 --- a/tests/Aetheria.Shared.Tests/MiningCut3Tests.cs +++ b/tests/Aetheria.Shared.Tests/MiningCut3Tests.cs @@ -56,8 +56,6 @@ public sealed partial class MiningCut3Tests : IDisposable AsteroidHitpoints = new ExponentialLerp { Minimum = 20f, Maximum = 220f, Exponent = 1.6f }, AsteroidRespawnTime = new ExponentialLerp { Minimum = 8f, Maximum = 96f, Exponent = 1.2f }, BodyRadius = new ExponentialCurve(), - GravityRadius = new ExponentialCurve(), - GravityDepth = new ExponentialCurve(), LightRadius = new ExponentialCurve { Constant = lightRadius } }; diff --git a/tests/Aetheria.Shared.Tests/PotentialOwnerTests.cs b/tests/Aetheria.Shared.Tests/PotentialOwnerTests.cs index aa6aa626a..cd473b331 100644 --- a/tests/Aetheria.Shared.Tests/PotentialOwnerTests.cs +++ b/tests/Aetheria.Shared.Tests/PotentialOwnerTests.cs @@ -47,7 +47,6 @@ public sealed class PotentialOwnerTests : IDisposable CoreRadius = new ExponentialCurve { Exponent = .25f, Multiplier = 3f }, RocheLimit = new ExponentialCurve { Exponent = .25f, Multiplier = 7.32f }, BodyRadius = new ExponentialCurve { Exponent = .25f, Multiplier = 2f }, - GravityRadius = new ExponentialCurve(), GravityDepth = new ExponentialCurve(), LightRadius = new ExponentialCurve(), OrbitPeriod = new ExponentialCurve(), HeightExaggeration = exaggeration }; @@ -84,7 +83,7 @@ public sealed class PotentialOwnerTests : IDisposable { var planets = new PlanetSettings { - BodyRadius = new ExponentialCurve(), GravityRadius = new ExponentialCurve(), GravityDepth = new ExponentialCurve(), + BodyRadius = new ExponentialCurve(), LightRadius = new ExponentialCurve(), OrbitPeriod = new ExponentialCurve() }; var zone = ZoneOf(planets, (100f, float2.zero), (5000f, new float2(200f, 0f))); @@ -139,7 +138,6 @@ public sealed class PotentialOwnerTests : IDisposable CoreRadius = new ExponentialCurve { Constant = core }, RocheLimit = new ExponentialCurve { Constant = roche }, BodyRadius = new ExponentialCurve { Constant = 10f }, - GravityRadius = new ExponentialCurve(), GravityDepth = new ExponentialCurve(), LightRadius = new ExponentialCurve(), OrbitPeriod = new ExponentialCurve() }; Assert.Throws(() => ZoneOf(Constants(60f, 50f), (100f, float2.zero))); @@ -161,7 +159,6 @@ public sealed class PotentialOwnerTests : IDisposable CoreRadius = new ExponentialCurve { Multiplier = coreMultiplier, Exponent = coreExponent }, RocheLimit = new ExponentialCurve { Multiplier = rocheMultiplier, Exponent = rocheExponent }, BodyRadius = new ExponentialCurve { Constant = 1f }, - GravityRadius = new ExponentialCurve(), GravityDepth = new ExponentialCurve(), LightRadius = new ExponentialCurve(), OrbitPeriod = new ExponentialCurve() }; var threw = 0; @@ -212,12 +209,12 @@ public sealed class PotentialOwnerTests : IDisposable } // The well is authored once, by curves of mass (target: no per-body authoring of a core or Roche limit): a body whose - // record carries other radius, gravity-radius or gravity-depth multipliers has the same strength, core and Roche limit, - // and pulls and digs exactly as its plain twin. The multipliers are brush inputs for the renderer, nothing else. + // record carries another radius multiplier has the same strength, core and Roche limit, and pulls and digs exactly as + // its plain twin. [Theory] - [InlineData(2.5f, 3f, .4f)] - [InlineData(.5f, .5f, 3f)] - public void PerBodyMultipliersDoNotMoveTheWell(float bodyRadius, float gravityRadius, float gravityDepth) + [InlineData(2.5f)] + [InlineData(.5f)] + public void PerBodyMultipliersDoNotMoveTheWell(float bodyRadius) { var planets = Curves(); foreach (var mass in new[] { 29.2f, 14152.4f }) @@ -226,8 +223,6 @@ public sealed class PotentialOwnerTests : IDisposable var scaled = ZoneOf(planets, data => { data.BodyRadiusMultiplier = bodyRadius; - data.GravityRadiusMultiplier = gravityRadius; - data.GravityDepthMultiplier = gravityDepth; }, (mass, float2.zero)); var a = plain.PlanetInstances.Values.Single(); var b = scaled.PlanetInstances.Values.Single(); diff --git a/tests/Aetheria.Shared.Tests/WellFixture.cs b/tests/Aetheria.Shared.Tests/WellFixture.cs index e732172d9..0b895e4c0 100644 --- a/tests/Aetheria.Shared.Tests/WellFixture.cs +++ b/tests/Aetheria.Shared.Tests/WellFixture.cs @@ -10,8 +10,6 @@ internal static class WellFixture public static void Dig(CultCache cache, ZonePack pack, PlanetSettings settings, float strength, float coreRadius, float2 at = default) { settings.BodyRadius = new ExponentialCurve(); - settings.GravityRadius = new ExponentialCurve(); // brush inputs, read by Planet until grid-lowering deletes them - settings.GravityDepth = new ExponentialCurve(); settings.OrbitPeriod = new ExponentialCurve(); settings.WellStrength = new ExponentialCurve { Constant = strength }; settings.CoreRadius = new ExponentialCurve { Constant = coreRadius }; diff --git a/tests/Aetheria.Shared.Tests/ZonePlacedAtBuildTests.cs b/tests/Aetheria.Shared.Tests/ZonePlacedAtBuildTests.cs index 11d514de6..bdf8822d3 100644 --- a/tests/Aetheria.Shared.Tests/ZonePlacedAtBuildTests.cs +++ b/tests/Aetheria.Shared.Tests/ZonePlacedAtBuildTests.cs @@ -44,8 +44,6 @@ public sealed class ZonePlacedAtBuildTests : IDisposable { OrbitPeriod = Flat(Period), BodyRadius = Flat(20f), - GravityRadius = Flat(0f), // brush inputs, read by Planet until grid-lowering deletes them - GravityDepth = Flat(0f), WellStrength = Flat(100f), CoreRadius = Flat(20f), RocheLimit = Flat(30f),