From cb4cb243e4c6aa031d9268c456b24476264e7e31 Mon Sep 17 00:00:00 2001 From: Reinier Vens Date: Mon, 8 Mar 2021 22:58:37 +0000 Subject: [PATCH] Freeform Zone Generation Modified zone generator to create multiple fixed points with areas of influence tangent to each other and the zone boundary Added weapon range icons Modified gravity potential shader to fade out at maximum depth --- Asset Sources/clouds.psd | 4 +- Asset Sources/range.psd | 3 + Assets/Materials/UI/Map Gravity Lines.mat | 2 +- Assets/Resources/Settings.asset | 4 +- Assets/Resources/Sprites/Attribution.txt | 1 + Assets/Resources/Sprites/Icons/Weapons.meta | 8 ++ .../Sprites/Icons/Weapons/Long Range.png | 3 + .../Sprites/Icons/Weapons/Long Range.png.meta | 108 ++++++++++++++++++ .../Sprites/Icons/Weapons/Medium Range.png | 3 + .../Icons/Weapons/Medium Range.png.meta | 108 ++++++++++++++++++ .../Sprites/Icons/Weapons/Melee Range.png | 3 + .../Icons/Weapons/Melee Range.png.meta | 108 ++++++++++++++++++ .../Sprites/Icons/Weapons/Short Range.png | 3 + .../Icons/Weapons/Short Range.png.meta | 108 ++++++++++++++++++ Assets/Scenes/ARPG.unity | 99 +--------------- Assets/Scripts/ServerShared/Zone.cs | 5 +- Assets/Scripts/ServerShared/ZoneData.cs | 4 + Assets/Scripts/ServerShared/ZoneGenerator.cs | 78 +++++++++++-- Assets/Shaders/IsolinesUI.shader | 1 + 19 files changed, 541 insertions(+), 112 deletions(-) create mode 100644 Asset Sources/range.psd create mode 100644 Assets/Resources/Sprites/Icons/Weapons.meta create mode 100644 Assets/Resources/Sprites/Icons/Weapons/Long Range.png create mode 100644 Assets/Resources/Sprites/Icons/Weapons/Long Range.png.meta create mode 100644 Assets/Resources/Sprites/Icons/Weapons/Medium Range.png create mode 100644 Assets/Resources/Sprites/Icons/Weapons/Medium Range.png.meta create mode 100644 Assets/Resources/Sprites/Icons/Weapons/Melee Range.png create mode 100644 Assets/Resources/Sprites/Icons/Weapons/Melee Range.png.meta create mode 100644 Assets/Resources/Sprites/Icons/Weapons/Short Range.png create mode 100644 Assets/Resources/Sprites/Icons/Weapons/Short Range.png.meta diff --git a/Asset Sources/clouds.psd b/Asset Sources/clouds.psd index 6fa053384..1a8121a76 100644 --- a/Asset Sources/clouds.psd +++ b/Asset Sources/clouds.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d0755dea7b5ab43c12bbd843da3e3435c0964e5ee2e89b539cce380707b97ae -size 2412596 +oid sha256:635ce281c63f677b873746103c7247a74ef1d8a851f37501df858515f8f002bb +size 2413040 diff --git a/Asset Sources/range.psd b/Asset Sources/range.psd new file mode 100644 index 000000000..d7a594eb7 --- /dev/null +++ b/Asset Sources/range.psd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f09503282c35895744cc7a02c5e0464b5a0b377fcbf1c954f6ffe3cecfeda189 +size 5182010 diff --git a/Assets/Materials/UI/Map Gravity Lines.mat b/Assets/Materials/UI/Map Gravity Lines.mat index cf592f684..49aa30d41 100644 --- a/Assets/Materials/UI/Map Gravity Lines.mat +++ b/Assets/Materials/UI/Map Gravity Lines.mat @@ -86,7 +86,7 @@ Material: - _Mode: 0 - _OcclusionStrength: 1 - _Parallax: 0.02 - - _Scale: 1.2393435 + - _Scale: 4.933006 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 diff --git a/Assets/Resources/Settings.asset b/Assets/Resources/Settings.asset index d3d82f554..432331c09 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:53b8c532e6449c6366238fdcd637a70de6dfb16194d04ddbaba2e421881bad9e -size 8652 +oid sha256:28d4bbe38944332d1532370d7ef2ad18549e00beca1abbb0e8d329d402f87b32 +size 8653 diff --git a/Assets/Resources/Sprites/Attribution.txt b/Assets/Resources/Sprites/Attribution.txt index f813b8cee..e71ebcbc7 100644 --- a/Assets/Resources/Sprites/Attribution.txt +++ b/Assets/Resources/Sprites/Attribution.txt @@ -54,6 +54,7 @@ distance by Anthony Ledoux Cross by shashank singh Worried Fire Flame by Akshar Pathak Boiling Thermometer by KEN MURRAY +wifi by i cons Other diff --git a/Assets/Resources/Sprites/Icons/Weapons.meta b/Assets/Resources/Sprites/Icons/Weapons.meta new file mode 100644 index 000000000..936c183a1 --- /dev/null +++ b/Assets/Resources/Sprites/Icons/Weapons.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 85df8a21e7cff9c44817677a6bf316c5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Icons/Weapons/Long Range.png b/Assets/Resources/Sprites/Icons/Weapons/Long Range.png new file mode 100644 index 000000000..9900f3466 --- /dev/null +++ b/Assets/Resources/Sprites/Icons/Weapons/Long Range.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc63af12f397cfd1f66f0ebbbbc3add41fbd117f3a928d7e77bafe9a344cbf07 +size 45535 diff --git a/Assets/Resources/Sprites/Icons/Weapons/Long Range.png.meta b/Assets/Resources/Sprites/Icons/Weapons/Long Range.png.meta new file mode 100644 index 000000000..bf6a3345f --- /dev/null +++ b/Assets/Resources/Sprites/Icons/Weapons/Long Range.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: c67d4f4a1937edd45b177b6ca7f086b3 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Icons/Weapons/Medium Range.png b/Assets/Resources/Sprites/Icons/Weapons/Medium Range.png new file mode 100644 index 000000000..e69203551 --- /dev/null +++ b/Assets/Resources/Sprites/Icons/Weapons/Medium Range.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4da0a62ba59da4129f7f3ab8e0144f8acacd13793f8ccf34f2f379d4cce02272 +size 36787 diff --git a/Assets/Resources/Sprites/Icons/Weapons/Medium Range.png.meta b/Assets/Resources/Sprites/Icons/Weapons/Medium Range.png.meta new file mode 100644 index 000000000..cd0eaaf7d --- /dev/null +++ b/Assets/Resources/Sprites/Icons/Weapons/Medium Range.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: 8116eba48a70bee45a4e8b86ed4ade50 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Icons/Weapons/Melee Range.png b/Assets/Resources/Sprites/Icons/Weapons/Melee Range.png new file mode 100644 index 000000000..d1d104748 --- /dev/null +++ b/Assets/Resources/Sprites/Icons/Weapons/Melee Range.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bcfc644c3e9000959e6610643dac968621b052370091ff785bf011a5e9f40db +size 25697 diff --git a/Assets/Resources/Sprites/Icons/Weapons/Melee Range.png.meta b/Assets/Resources/Sprites/Icons/Weapons/Melee Range.png.meta new file mode 100644 index 000000000..d15e32d80 --- /dev/null +++ b/Assets/Resources/Sprites/Icons/Weapons/Melee Range.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: 9099d9d8147be6647bef58bc86f6cce8 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Icons/Weapons/Short Range.png b/Assets/Resources/Sprites/Icons/Weapons/Short Range.png new file mode 100644 index 000000000..7b318af1e --- /dev/null +++ b/Assets/Resources/Sprites/Icons/Weapons/Short Range.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2124a6debf2c99618e8e689b576c535119c8323a60a0eeaa71d9f938be48a280 +size 29948 diff --git a/Assets/Resources/Sprites/Icons/Weapons/Short Range.png.meta b/Assets/Resources/Sprites/Icons/Weapons/Short Range.png.meta new file mode 100644 index 000000000..5f723aa09 --- /dev/null +++ b/Assets/Resources/Sprites/Icons/Weapons/Short Range.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: 3605fce693e46684db487553aaf9b74d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/ARPG.unity b/Assets/Scenes/ARPG.unity index 5405f35c8..e338f9418 100644 --- a/Assets/Scenes/ARPG.unity +++ b/Assets/Scenes/ARPG.unity @@ -4010,101 +4010,6 @@ Camera: m_OcclusionCulling: 0 m_StereoConvergence: 10 m_StereoSeparation: 0.022 ---- !u!1 &328187702 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 328187706} - - component: {fileID: 328187705} - - component: {fileID: 328187704} - - component: {fileID: 328187703} - m_Layer: 0 - m_Name: Sphere - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!135 &328187703 -SphereCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328187702} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Radius: 0.5 - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &328187704 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328187702} - 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: 5acb4b3490cbda04c85ad7cca3b2b325, 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!33 &328187705 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328187702} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &328187706 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328187702} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.03, y: -0.16, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 9 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &342600466 PrefabInstance: m_ObjectHideFlags: 0 @@ -18504,7 +18409,7 @@ PrefabInstance: - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchoredPosition.x - value: 55.675 + value: 0 objectReference: {fileID: 0} - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} @@ -19534,7 +19439,7 @@ PrefabInstance: - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchoredPosition.x - value: 60.98 + value: 0 objectReference: {fileID: 0} - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} diff --git a/Assets/Scripts/ServerShared/Zone.cs b/Assets/Scripts/ServerShared/Zone.cs index 54bf93853..7287dd816 100644 --- a/Assets/Scripts/ServerShared/Zone.cs +++ b/Assets/Scripts/ServerShared/Zone.cs @@ -144,7 +144,10 @@ public class Zone } } - Orbits[orbitID].Position = GetOrbitPosition(orbit.Data.Parent) + pos; + var parentPosition = Orbits[orbitID].Data.Parent == Guid.Empty + ? Orbits[orbitID].Data.FixedPosition : + GetOrbitPosition(orbit.Data.Parent); + Orbits[orbitID].Position = parentPosition + pos; _updatedOrbits.Add(orbitID); } diff --git a/Assets/Scripts/ServerShared/ZoneData.cs b/Assets/Scripts/ServerShared/ZoneData.cs index fd757da54..3571bee35 100644 --- a/Assets/Scripts/ServerShared/ZoneData.cs +++ b/Assets/Scripts/ServerShared/ZoneData.cs @@ -10,6 +10,7 @@ using Newtonsoft.Json; using UniRx; using Unity.Mathematics; using static Unity.Mathematics.math; +using float2 = Unity.Mathematics.float2; using float3 = Unity.Mathematics.float3; [RethinkTable("Galaxy"), MessagePackObject, JsonObject(MemberSerialization.OptIn)] @@ -226,6 +227,9 @@ public class OrbitData : DatabaseEntry [JsonProperty("phase"), Key(3)] public float Phase; + [JsonProperty("phase"), Key(3)] + public float2 FixedPosition = float2.zero; + // [JsonProperty("period"), Key(4)] // public float Period; diff --git a/Assets/Scripts/ServerShared/ZoneGenerator.cs b/Assets/Scripts/ServerShared/ZoneGenerator.cs index 36835b42f..3ba71e6ca 100644 --- a/Assets/Scripts/ServerShared/ZoneGenerator.cs +++ b/Assets/Scripts/ServerShared/ZoneGenerator.cs @@ -11,6 +11,7 @@ using MessagePack; using UniRx; using Unity.Mathematics; using static Unity.Mathematics.math; +using float2 = Unity.Mathematics.float2; using Random = Unity.Mathematics.Random; public class ZoneGenerator @@ -40,9 +41,27 @@ public class ZoneGenerator var position = float2(0f); var random = new Random(Convert.ToUInt32(abs(name.GetHashCode()))); - return GenerateZone(settings, name, position, mass, radius, random); + return GenerateZone(settings, name, position, mass, radius, random, 6); } - + + private class Circle + { + public float2 Center; + public float Radius; + + public float Area => PI * Radius * Radius; + + public Circle(float2 center, float radius) + { + Center = center; + Radius = radius; + } + + public float DistanceTo(float2 point) => length(point - Center) - Radius; + public float DistanceTo(Circle other) => length(other.Center - Center) - Radius - other.Radius; + } + + private const int MaximumPlacementSamples = 32; private static ZonePack GenerateZone( ZoneGenerationSettings settings, // Dictionary mapLayers, @@ -51,7 +70,8 @@ public class ZoneGenerator float2 position, float mass, float radius, - Random random) + Random random, + int targetSubzoneCount) { var zone = new ZoneData { @@ -68,8 +88,45 @@ public class ZoneGenerator zone.Mass = mass; //Debug.Log($"Generating zone at position {zone.Position} with radius {zoneRadius} and mass {zoneMass}"); - - var planets = GenerateEntities(settings, ref random, zone); + + var planets = new List(); + if (targetSubzoneCount > 1) + { + var zoneBoundary = new Circle(float2.zero, radius); + float boundaryTangentRadius(float2 point) => -zoneBoundary.DistanceTo(point); + + var occupiedAreas = new List(); + float tangentRadius(float2 point) => min(boundaryTangentRadius(point), occupiedAreas.Min(circle => circle.DistanceTo(point))); + + var startPosition = random.NextFloat(radius * .25f, radius * .75f) * random.NextFloat2Direction(); + occupiedAreas.Add(new Circle(startPosition, boundaryTangentRadius(startPosition))); + + int samples = 0; + while (occupiedAreas.Count < targetSubzoneCount && samples < MaximumPlacementSamples) + { + samples = 0; + for (int i = 0; i < MaximumPlacementSamples; i++) + { + var samplePos = random.NextFloat2(-radius, radius); + var rad = tangentRadius(samplePos); + if (rad > 0) + { + occupiedAreas.Add(new Circle(samplePos, rad)); + break; + } + + samples++; + } + } + + var totalArea = occupiedAreas.Sum(c => c.Area); + foreach (var c in occupiedAreas) + { + planets.AddRange(GenerateEntities(settings, ref random, c.Area / totalArea * zone.Mass, c.Radius, c.Center)); + } + } + else + planets.AddRange(GenerateEntities(settings, ref random, zone.Mass, zone.Radius, float2.zero)); // Create collections to map between zone generator output and database entries var orbitMap = new Dictionary(); @@ -80,6 +137,7 @@ public class ZoneGenerator { var data = new OrbitData { + FixedPosition = planet.FixedPosition, Distance = new ReactiveProperty(planet.Distance), //Period = planet.Period, Phase = planet.Phase @@ -209,14 +267,15 @@ public class ZoneGenerator // 1 / lerp(settings.ResourceDensityMinimum, settings.ResourceDensityMaximum, density)); // } - public static GeneratorPlanet[] GenerateEntities(ZoneGenerationSettings settings, ref Random random, ZoneData zone) + public static GeneratorPlanet[] GenerateEntities(ZoneGenerationSettings settings, ref Random random, float mass, float radius, float2 fixedPosition) { var root = new GeneratorPlanet { + FixedPosition = fixedPosition, Settings = settings, - Mass = zone.Mass, - ChildDistanceMaximum = zone.Radius * .75f, - ChildDistanceMinimum = settings.PlanetSafetyRadius.Evaluate(zone.Mass) + Mass = mass, + ChildDistanceMaximum = radius * .75f, + ChildDistanceMinimum = settings.PlanetSafetyRadius.Evaluate(mass) }; // There is some chance of generating a rosette or binary system @@ -350,6 +409,7 @@ public class GeneratorPlanet public bool Belt = false; public List Children = new List(); // Planets orbiting this one are referred to as children public GeneratorPlanet Parent; + public float2 FixedPosition; // Recursively gather all planets in the hierarchy public IEnumerable AllPlanets() diff --git a/Assets/Shaders/IsolinesUI.shader b/Assets/Shaders/IsolinesUI.shader index 95f987fae..ce6356a09 100644 --- a/Assets/Shaders/IsolinesUI.shader +++ b/Assets/Shaders/IsolinesUI.shader @@ -193,6 +193,7 @@ Shader "UI/Isolines" for (float ia = 0.5; ia < 13; ia++) { float isoline = abs(angle - ia / 6.0); float l = 1-smoothstep(_AngleWidth, _AngleWidth * _AngleFade, isoline); + l *= smoothstep(-_StartDepth - _DepthRange, -_StartDepth, h); col += l * angcol; // col += (1-smoothstep(_Angle2Width, _Angle2Width * _Angle2Fade, isoline / angmag)) * _AngleColor * blend; // Isoline }