Stealth Detection Indicator

Modified fade texture to have those cool circuit trace designs
Added visible hostile indicator which fills to indicate player is being detected and flashes when detected
This commit is contained in:
Reinier Vens 2021-03-07 23:24:22 +00:00
commit 1c4aa57d78
17 changed files with 692 additions and 26 deletions

View file

@ -2088,6 +2088,7 @@
<e p="TechArrow.cs" t="Include" />
<e p="TechNode.cs" t="Include" />
<e p="TradeMenu.cs" t="Include" />
<e p="VisibleHostileIndicator.cs" t="Include" />
<e p="ZoneGravityObject.cs" t="Include" />
<e p="ZoneObject.cs" t="Include" />
<e p="ZoneRenderer.cs" t="Include" />

View file

@ -395,6 +395,7 @@
<Compile Include="Assets\Scripts\Gameplay\HullCollider.cs" />
<Compile Include="Assets\Wwise\Deployment\Components\AkEvent.cs" />
<Compile Include="Assets\Wwise\Deployment\API\Generated\Common\AkFloorPlane.cs" />
<Compile Include="Assets\Scripts\UI\VisibleHostileIndicator.cs" />
<None Include="Assets\com.unity.uiextensions\Runtime\Resources\Shaders\UIAdditive.shader" />
<None Include="Assets\TextMesh Pro\Resources\Shaders\TMPro.cginc" />
<None Include="Assets\TextMesh Pro\Resources\Shaders\TMP_SDF-Mobile Overlay.shader" />

BIN
Asset Sources/clouds.psd (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Asset Sources/triangle.psd (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -69,7 +69,7 @@ Material:
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _Fade: 1
- _Fade: 0
- _FadeEdge: 0.05
- _FadeSharpness: 16
- _GlossMapScale: 1

View file

@ -86,7 +86,7 @@ Material:
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _Scale: 8.4506855
- _Scale: 1.2393435
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1

BIN
Assets/Resources/Sprites/Indicators/triangleFill.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,108 @@
fileFormatVersion: 2
guid: 9e87ff4a45e1fff4e8f210c3c26551a0
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:

BIN
Assets/Resources/Sprites/Indicators/triangleStroke.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,108 @@
fileFormatVersion: 2
guid: 9fa59801aac390542a1aab396485ab57
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:

View file

@ -1759,6 +1759,9 @@ MonoBehaviour:
NoiseFrequency: 0
Canvas: {fileID: 0}
BorderPixels: 10
PointAtTarget: 0
ScreenSpaceOffset: {x: 0, y: 0}
EdgeMargin: 0.1
Target: {x: 0, y: 0, z: 0}
--- !u!1 &166261016
GameObject:
@ -2948,6 +2951,81 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &221986828
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 221986829}
- component: {fileID: 221986831}
- component: {fileID: 221986830}
m_Layer: 5
m_Name: Stroke
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &221986829
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 221986828}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 1787772780}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &221986830
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 221986828}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 0, b: 0, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 9fa59801aac390542a1aab396485ab57, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!222 &221986831
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 221986828}
m_CullTransparentMesh: 1
--- !u!1 &232470596
GameObject:
m_ObjectHideFlags: 0
@ -3932,6 +4010,101 @@ 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
@ -4143,6 +4316,7 @@ RectTransform:
- {fileID: 1284802338}
- {fileID: 1631662978}
- {fileID: 146394775}
- {fileID: 1787772780}
m_Father: {fileID: 761574181}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -7758,6 +7932,81 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 574005126}
m_CullTransparentMesh: 1
--- !u!1 &582989120
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 582989121}
- component: {fileID: 582989123}
- component: {fileID: 582989122}
m_Layer: 5
m_Name: Fill
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &582989121
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 582989120}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 1787772780}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &582989122
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 582989120}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 9e87ff4a45e1fff4e8f210c3c26551a0, type: 3}
m_Type: 3
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 1
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 1
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!222 &582989123
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 582989120}
m_CullTransparentMesh: 1
--- !u!1 &594274405
GameObject:
m_ObjectHideFlags: 0
@ -10096,6 +10345,9 @@ MonoBehaviour:
NoiseFrequency: 0
Canvas: {fileID: 761574180}
BorderPixels: 10
PointAtTarget: 0
ScreenSpaceOffset: {x: 0, y: 0}
EdgeMargin: 0.1
Target: {x: 0, y: 0, z: 0}
--- !u!114 &776416426
MonoBehaviour:
@ -13156,8 +13408,11 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 39f95af24dd29a645895a57a75460b0c, type: 3}
m_Name:
m_EditorClassIdentifier:
TargetSpottedBlinkFrequency: 20
TargetSpottedBlinkOffset: -0.25
HeatstrokePP: {fileID: 1404901906}
SevereHeatstrokePP: {fileID: 837424435}
HostileTargetIndicator: {fileID: 1787772783}
ViewDot: {fileID: 146394778}
TargetIndicator: {fileID: 1556666357}
LockIndicator: {fileID: 1876420642}
@ -15709,6 +15964,9 @@ MonoBehaviour:
NoiseFrequency: 0
Canvas: {fileID: 761574180}
BorderPixels: 10
PointAtTarget: 0
ScreenSpaceOffset: {x: 0, y: 0}
EdgeMargin: 0.1
Target: {x: 0, y: 0, z: 0}
--- !u!114 &1284802340
MonoBehaviour:
@ -18509,7 +18767,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
m_IsActive: 1
--- !u!224 &1556666354
RectTransform:
m_ObjectHideFlags: 0
@ -18583,6 +18841,9 @@ MonoBehaviour:
NoiseFrequency: 0
Canvas: {fileID: 761574180}
BorderPixels: 10
PointAtTarget: 0
ScreenSpaceOffset: {x: 0, y: 0}
EdgeMargin: 0.1
Target: {x: 0, y: 0, z: 0}
--- !u!1 &1558182380
GameObject:
@ -19647,6 +19908,9 @@ MonoBehaviour:
NoiseFrequency: 0
Canvas: {fileID: 761574180}
BorderPixels: 10
PointAtTarget: 0
ScreenSpaceOffset: {x: 0, y: 0}
EdgeMargin: 0.1
Target: {x: 0, y: 0, z: 0}
--- !u!114 &1631662980
MonoBehaviour:
@ -21008,6 +21272,9 @@ MonoBehaviour:
NoiseFrequency: 0
Canvas: {fileID: 761574180}
BorderPixels: 10
PointAtTarget: 0
ScreenSpaceOffset: {x: 0, y: 0}
EdgeMargin: 0.1
Target: {x: 0, y: 0, z: 0}
--- !u!114 &1771741751
MonoBehaviour:
@ -21152,6 +21419,93 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1783772014}
m_CullTransparentMesh: 0
--- !u!1 &1787772779
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1787772780}
- component: {fileID: 1787772783}
- component: {fileID: 1787772782}
- component: {fileID: 1787772781}
m_Layer: 5
m_Name: Visible Hostile
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1787772780
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1787772779}
m_LocalRotation: {x: 0, y: 0, z: 1, w: 0}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 582989121}
- {fileID: 221986829}
m_Father: {fileID: 346000247}
m_RootOrder: 12
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 26.1}
m_SizeDelta: {x: 32, y: 32}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1787772781
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1787772779}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 79e1b49bde6c1c54aa6b5c2256e0e382, type: 3}
m_Name:
m_EditorClassIdentifier:
NoiseAmplitude: 0
NoiseFrequency: 0
Canvas: {fileID: 761574180}
BorderPixels: 10
PointAtTarget: 1
ScreenSpaceOffset: {x: 0, y: 25}
EdgeMargin: 0.001
Target: {x: 0, y: 0, z: 0}
--- !u!114 &1787772782
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1787772779}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e39172b086df1a44c8da6b3962a5ecd3, type: 3}
m_Name:
m_EditorClassIdentifier:
Transform: {fileID: 1787772780}
Fill: {fileID: 582989122}
Place: {fileID: 1787772781}
--- !u!114 &1787772783
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1787772779}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1281fe44325f9b548aa42dc331b17266, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &1803753852
GameObject:
m_ObjectHideFlags: 0
@ -21886,6 +22240,9 @@ MonoBehaviour:
NoiseFrequency: 0
Canvas: {fileID: 761574180}
BorderPixels: 10
PointAtTarget: 0
ScreenSpaceOffset: {x: 0, y: 0}
EdgeMargin: 0.1
Target: {x: 0, y: 0, z: 0}
--- !u!114 &1876420642
MonoBehaviour:
@ -22111,6 +22468,9 @@ MonoBehaviour:
NoiseFrequency: 0
Canvas: {fileID: 761574180}
BorderPixels: 10
PointAtTarget: 0
ScreenSpaceOffset: {x: 0, y: 0}
EdgeMargin: 0.1
Target: {x: 0, y: 0, z: 0}
--- !u!114 &1914685584
MonoBehaviour:
@ -23633,8 +23993,8 @@ Camera:
m_GameObject: {fileID: 2115559087}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.5, g: 0.5, b: 0.5, a: 0}
m_ClearFlags: 2
m_BackGroundColor: {r: 0.319, g: 0.319, b: 0.319, a: 1}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0

View file

@ -23,8 +23,11 @@ using Random = UnityEngine.Random;
public class ActionGameManager : MonoBehaviour
{
public float TargetSpottedBlinkFrequency = 20;
public float TargetSpottedBlinkOffset = -.25f;
public PostProcessVolume HeatstrokePP;
public PostProcessVolume SevereHeatstrokePP;
public Prototype HostileTargetIndicator;
public PlaceUIElementWorldspace ViewDot;
public PlaceUIElementWorldspace TargetIndicator;
public Prototype LockIndicator;
@ -67,6 +70,7 @@ public class ActionGameManager : MonoBehaviour
private float3 _viewDirection;
private (HardpointData[] hardpoints, Transform[] barrels, PlaceUIElementWorldspace crosshair)[] _articulationGroups;
private (LockWeapon targetLock, PlaceUIElementWorldspace indicator, Rotate spin)[] _lockingIndicators;
private Dictionary<Entity, VisibleHostileIndicator> _visibleHostileIndicators = new Dictionary<Entity, VisibleHostileIndicator>();
private List<IDisposable> _shipSubscriptions = new List<IDisposable>();
private float _severeHeatstrokePhase;
@ -576,21 +580,11 @@ public class ActionGameManager : MonoBehaviour
return (x, i, i.GetComponent<Rotate>());
}).ToArray();
CurrentShip.HullDamage.Subscribe(f =>
{
if (float.IsNaN(CurrentShip.Hull.Durability))
Debug.Log("WTF!");
});
_shipSubscriptions.Add(CurrentShip.Target.Subscribe(target =>
{
TargetIndicator.gameObject.SetActive(CurrentShip.Target.Value != null);
TargetShipPanel.gameObject.SetActive(target != null);
if (target != null)
{
TargetShipPanel.Display(target, true);
TargetSchematicDisplay.ShowShip(target, CurrentShip);
}
}));
// CurrentShip.HullDamage.Subscribe(f =>
// {
// if (float.IsNaN(CurrentShip.Hull.Durability))
// Debug.Log("WTF!");
// });
//_shipSubscriptions.Add(CurrentShip.HeatstrokeRisk.Subscribe(_ => _severeHeatstrokePhase = 0));
@ -632,6 +626,36 @@ public class ActionGameManager : MonoBehaviour
crosshair.gameObject.SetActive(false);
foreach (var group in _articulationGroups)
group.crosshair.gameObject.SetActive(true);
foreach(var subscription in _shipSubscriptions) subscription.Dispose();
_shipSubscriptions.Clear();
_shipSubscriptions.Add(CurrentShip.Target.Subscribe(target =>
{
TargetIndicator.gameObject.SetActive(CurrentShip.Target.Value != null);
TargetShipPanel.gameObject.SetActive(target != null);
if (target != null)
{
TargetShipPanel.Display(target, true);
TargetSchematicDisplay.ShowShip(target, CurrentShip);
}
}));
foreach (var entity in CurrentShip.VisibleHostiles)
{
var indicator = HostileTargetIndicator.Instantiate<VisibleHostileIndicator>();
_visibleHostileIndicators.Add(entity, indicator);
}
_shipSubscriptions.Add(CurrentShip.VisibleHostiles.ObserveAdd().Subscribe(addEvent =>
{
var indicator = HostileTargetIndicator.Instantiate<VisibleHostileIndicator>();
_visibleHostileIndicators.Add(addEvent.Value, indicator);
}));
_shipSubscriptions.Add(CurrentShip.VisibleHostiles.ObserveRemove().Subscribe(removeEvent =>
{
_visibleHostileIndicators[removeEvent.Value].GetComponent<Prototype>().ReturnToPool();
_visibleHostileIndicators.Remove(removeEvent.Value);
}));
}
public void SaveZone() => File.WriteAllBytes(
@ -674,6 +698,16 @@ public class ActionGameManager : MonoBehaviour
ItemManager.Time = Time.time;
if(CurrentShip !=null && CurrentShip.Parent==null)
{
foreach (var indicator in _visibleHostileIndicators)
{
indicator.Value.gameObject.SetActive(indicator.Key!=CurrentShip.Target.Value);
indicator.Value.Place.Target = indicator.Key.Position;
indicator.Value.Fill.fillAmount =
saturate(indicator.Key.EntityInfoGathered[CurrentShip] / Settings.GameplaySettings.TargetDetectionInfoThreshold);
indicator.Value.Fill.enabled =
!(indicator.Key.EntityInfoGathered[CurrentShip] > Settings.GameplaySettings.TargetDetectionInfoThreshold) ||
sin(TargetSpottedBlinkFrequency * Time.time) + TargetSpottedBlinkOffset > 0;
}
var look = _input.Player.Look.ReadValue<Vector2>();
_shipYawPitch = float2(_shipYawPitch.x + look.x * Sensitivity.x, clamp(_shipYawPitch.y + look.y * Sensitivity.y, -.45f * PI, .45f * PI));
_viewDirection = mul(float3(0, 0, 1), Unity.Mathematics.float3x3.Euler(float3(_shipYawPitch.yx, 0), RotationOrder.YXZ));

View file

@ -14,6 +14,9 @@ public class PlaceUIElementWorldspace : MonoBehaviour
public float NoiseFrequency;
public Canvas Canvas;
public float BorderPixels = 10;
public bool PointAtTarget;
public Vector2 ScreenSpaceOffset;
public float EdgeMargin = .1f;
public Vector3 Target;
@ -21,6 +24,8 @@ public class PlaceUIElementWorldspace : MonoBehaviour
private Transform _cameraTransform;
private float _noiseOffset;
private RectTransform _canvasRectTransform;
private Camera _mainCamera;
private Quaternion _startRotation;
void Start()
{
@ -28,6 +33,8 @@ public class PlaceUIElementWorldspace : MonoBehaviour
_rectTransform = GetComponent<RectTransform>();
_cameraTransform = Camera.main.transform;
_canvasRectTransform = Canvas.GetComponent<RectTransform>();
_mainCamera = Camera.main;
_startRotation = transform.rotation;
}
private void OnEnable()
@ -42,10 +49,23 @@ public class PlaceUIElementWorldspace : MonoBehaviour
{
_noiseOffset += Time.deltaTime * NoiseFrequency;
Vector2 screenPoint = RectTransformUtility.WorldToScreenPoint(Camera.main, Target);
Vector2 screenPoint = RectTransformUtility.WorldToScreenPoint(_mainCamera, Target);
var toTarget = (Target - _mainCamera.transform.position).normalized;
screenPoint *= Mathf.Sign(Vector3.Dot(_cameraTransform.forward, Target - _cameraTransform.position));
screenPoint += new Vector2(noise(_noiseOffset), noise(10 + _noiseOffset)) * NoiseAmplitude;
screenPoint = new Vector2(Mathf.Clamp(screenPoint.x, BorderPixels, Screen.width - BorderPixels),Mathf.Clamp(screenPoint.y, BorderPixels, Screen.height - BorderPixels));
_rectTransform.anchoredPosition = screenPoint / Canvas.scaleFactor - _canvasRectTransform.sizeDelta / 2f;
var clampedPoint = new Vector2(
Mathf.Clamp(screenPoint.x, BorderPixels, Screen.width - BorderPixels),
Mathf.Clamp(screenPoint.y, BorderPixels, Screen.height - BorderPixels));
var toEdge = _mainCamera.ScreenPointToRay(clampedPoint);
var edgeLerp = smoothstep(1 - EdgeMargin, 1, dot(toEdge.direction, toTarget));
if (PointAtTarget)
{
transform.rotation = Quaternion.Slerp(
Quaternion.LookRotation(Vector3.forward, (screenPoint - clampedPoint).normalized),
_startRotation, edgeLerp);
}
clampedPoint += ScreenSpaceOffset * edgeLerp;
_rectTransform.anchoredPosition = clampedPoint / Canvas.scaleFactor - _canvasRectTransform.sizeDelta / 2f;
}
}

View file

@ -0,0 +1,11 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class VisibleHostileIndicator : MonoBehaviour
{
public RectTransform Transform;
public Image Fill;
public PlaceUIElementWorldspace Place;
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e39172b086df1a44c8da6b3962a5ecd3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -67,7 +67,7 @@ Shader "Aetheria/GlowFade"
void surf (Input IN, inout SurfaceOutputStandard o)
{
half f = tex2D (_FadeTex, IN.uv_FadeTex).r + (1-_Fade);
half f = tex2D (_FadeTex, IN.uv_FadeTex).r + (1-_FadeEdge-_Fade);
half3 e = _EdgeColor * smoothstep(1 - _FadeEdge, 1, f);
o.Emission = e;
// Apply screen space dithering

BIN
Assets/Textures/clouds.png (Stored with Git LFS)

Binary file not shown.