diff --git a/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml b/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml index 98d09efc3..79a806f0c 100644 --- a/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml +++ b/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml @@ -68,42 +68,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -248,6 +212,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj index 286e5708a..20c8a9b4d 100644 --- a/Assembly-CSharp.csproj +++ b/Assembly-CSharp.csproj @@ -176,6 +176,8 @@ + + diff --git a/Assets/Resources/Prefabs/Lightning.prefab b/Assets/Resources/Prefabs/Lightning.prefab new file mode 100644 index 000000000..9709188e3 --- /dev/null +++ b/Assets/Resources/Prefabs/Lightning.prefab @@ -0,0 +1,142 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &7383646976225659343 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7383646976225659342} + - component: {fileID: 7383646976225659329} + m_Layer: 0 + m_Name: Lightning + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7383646976225659342 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7383646976225659343} + 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: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7383646976225659329 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7383646976225659343} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 044c2be5da0fc2340a09f856be731cea, type: 3} + m_Name: + m_EditorClassIdentifier: + Camera: {fileID: 0} + StartPosition: {x: 0, y: 500, z: 0} + EndPosition: {x: 0, y: 0, z: 0} + StartWidth: 2.5 + EndWidth: 0.5 + BranchLength: 64 + MorphSpeed: 2.5 + NoiseAmplitude: 64 + NoiseFrequency: 0.0025 + NoiseGain: 0.2 + NoiseLacunarity: 5 + FixedEndpoint: 0 + LeaderWidth: 2 + LeaderDuration: 4 + LeaderIntensity: 10 + PulseDuration: 2 + PulseIntensity: 1000 + PulseWidth: 2 + PulseTrunkIntensityCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.1 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + PulseBranchIntensityCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.01 + inSlope: -0.044314474 + outSlope: -0.044314474 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0.05641593 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + PulseWidthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: -1.7295918 + outSlope: -1.7295918 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0.05420354 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + TrunkNodeCount: 2048 + BranchCount: 16 + BranchNodeCount: 128 + RenderMaterial: {fileID: 2100000, guid: c94ec17d8118c2749ad885c2b378ea01, type: 2} + ComputeShader: {fileID: 7200000, guid: a974189fea3fe9a46a7859ef6ea8da09, type: 3} + DebugDrawNodes: 0 + DebugDrawVertices: 0 diff --git a/Assets/Resources/Prefabs/Lightning.prefab.meta b/Assets/Resources/Prefabs/Lightning.prefab.meta new file mode 100644 index 000000000..e0006c91c --- /dev/null +++ b/Assets/Resources/Prefabs/Lightning.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: eb3a880755444d144a4d7f13ef11df77 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Prefabs/Weapons/Lightning Rifle.prefab b/Assets/Resources/Prefabs/Weapons/Lightning Rifle.prefab index c08de4a52..324903a71 100644 --- a/Assets/Resources/Prefabs/Weapons/Lightning Rifle.prefab +++ b/Assets/Resources/Prefabs/Weapons/Lightning Rifle.prefab @@ -29,8 +29,7 @@ Transform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - - {fileID: 7930492351484902759} - - {fileID: 8908669924470592673} + - {fileID: 8454157079536979760} m_Father: {fileID: 6101924816820053886} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -46,72 +45,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 5c75d76a7b418d3479761187b2d420bc, type: 3} m_Name: m_EditorClassIdentifier: - Trunk: {fileID: 1576755778947147315} - BranchPrototype: {fileID: 7950428215667845793} + LightningCompute: {fileID: 8454157079536979775} HitRadius: 5 - Duration: 0.5 - IntensityCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 15.255 - outSlope: 15.255 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0.2198576 - - serializedVersion: 3 - time: 0.099529654 - value: 0.7125015 - inSlope: -0.07577679 - outSlope: -0.07577679 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.07689258 - - serializedVersion: 3 - time: 0.23082784 - value: 0.23103416 - inSlope: 4.1353536 - outSlope: 4.1353536 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.48861334 - - serializedVersion: 3 - time: 0.352674 - value: 0.9862572 - inSlope: 0.11107577 - outSlope: 0.11107577 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.0907272 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: -2.1678352 - outSlope: -2.1678352 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.07860794 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - BranchCount: 8 - BranchDistance: 32 - PointCount: 256 - BranchPointCount: 64 - MorphSpeed: 20 - Octaves: 3 - Frequency: 0.01 - Offset: 0 - Amplitude: 15 - Lacunarity: 2 - Gain: 0.5 --- !u!114 &4364339867848153585 MonoBehaviour: m_ObjectHideFlags: 0 @@ -169,576 +104,165 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: Prototype: {fileID: 4364339867848153585} ---- !u!1 &8231147997880483471 -GameObject: +--- !u!1001 &1379448248635655934 +PrefabInstance: m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7930492351484902759} - - component: {fileID: 1576755778947147315} - m_Layer: 0 - m_Name: Line - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7930492351484902759 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 4033498549525708839} + m_Modifications: + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: Animate + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: MorphSpeed + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: StartWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: LeaderWidth + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: BranchLength + value: 32 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: EndPosition.x + value: -3424.384 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: EndPosition.y + value: -311.8413 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: EndPosition.z + value: 6464.0195 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: PulseDuration + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: LeaderDuration + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: NoiseAmplitude + value: 32 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: NoiseLacunarity + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: StartPosition.x + value: -4001.9797 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: StartPosition.y + value: -362.0634 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: StartPosition.z + value: 6939.794 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659343, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_Name + value: Lightning + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: eb3a880755444d144a4d7f13ef11df77, type: 3} +--- !u!4 &8454157079536979760 stripped Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + m_PrefabInstance: {fileID: 1379448248635655934} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8231147997880483471} - 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: 4033498549525708839} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!120 &1576755778947147315 -LineRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8231147997880483471} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 0 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 0 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 9c20b9ccbbbb1b14cb5729e0c8460cd9, 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_Positions: - - {x: 0, y: 0, z: 0} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - m_Parameters: - serializedVersion: 3 - widthMultiplier: 1 - widthCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: -0.5 - tangentMode: 69 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0.5 - inSlope: -0.5 - outSlope: 0 - tangentMode: 69 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - colorGradient: - serializedVersion: 2 - key0: {r: 1, g: 0.050000012, b: 0.9991149, a: 1} - key1: {r: 0.050000012, g: 0.3610669, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - numCornerVertices: 0 - numCapVertices: 0 - alignment: 0 - textureMode: 0 - shadowBias: 0.5 - generateLightingData: 0 - m_UseWorldSpace: 1 - m_Loop: 0 ---- !u!1 &9043411360431727333 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8908669924470592673} - - component: {fileID: 7280962290875153966} - - component: {fileID: 7950428215667845793} - m_Layer: 0 - m_Name: Branch - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8908669924470592673 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9043411360431727333} - 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: 4033498549525708839} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!120 &7280962290875153966 -LineRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9043411360431727333} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 0 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 0 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 9c20b9ccbbbb1b14cb5729e0c8460cd9, 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_Positions: - - {x: 0, y: 0, z: 0} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - - {x: 0, y: 0, z: 1} - m_Parameters: - serializedVersion: 3 - widthMultiplier: 1 - widthCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: -1 - tangentMode: 69 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: -1 - outSlope: 0 - tangentMode: 69 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - colorGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 0} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - numCornerVertices: 0 - numCapVertices: 0 - alignment: 0 - textureMode: 0 - shadowBias: 0.5 - generateLightingData: 0 - m_UseWorldSpace: 1 - m_Loop: 0 ---- !u!114 &7950428215667845793 +--- !u!114 &8454157079536979775 stripped MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + m_PrefabInstance: {fileID: 1379448248635655934} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9043411360431727333} + m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1281fe44325f9b548aa42dc331b17266, type: 3} + m_Script: {fileID: 11500000, guid: 044c2be5da0fc2340a09f856be731cea, type: 3} m_Name: m_EditorClassIdentifier: diff --git a/Assets/Resources/Prefabs/Weapons/Tesla Gun.prefab b/Assets/Resources/Prefabs/Weapons/Tesla Gun.prefab new file mode 100644 index 000000000..c0120e955 --- /dev/null +++ b/Assets/Resources/Prefabs/Weapons/Tesla Gun.prefab @@ -0,0 +1,305 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &6697988721035608826 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8092217512616552971} + - component: {fileID: 8139927425898867051} + - component: {fileID: 4961115960910193164} + m_Layer: 0 + m_Name: Bolt + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8092217512616552971 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6697988721035608826} + 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: + - {fileID: 7692568534316527279} + m_Father: {fileID: 6705871793161460977} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &8139927425898867051 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6697988721035608826} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b184352ea3694b8d892f1402b8d51153, type: 3} + m_Name: + m_EditorClassIdentifier: + Lightning: {fileID: 7692568534316527264} + HitRadius: 8 + FadeCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + StartWidth: 0.5 + EndWidth: 0.5 + FadeDuration: 0.5 +--- !u!114 &4961115960910193164 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6697988721035608826} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1281fe44325f9b548aa42dc331b17266, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &8960602767558375808 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6705871793161460977} + - component: {fileID: 8350558017173826883} + m_Layer: 0 + m_Name: Tesla Gun + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6705871793161460977 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8960602767558375808} + 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: + - {fileID: 8092217512616552971} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &8350558017173826883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8960602767558375808} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ecabe4f078a147459bba6172582d7bc8, type: 3} + m_Name: + m_EditorClassIdentifier: + LightningPrototype: {fileID: 4961115960910193164} +--- !u!1001 &916066491333994337 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 8092217512616552971} + m_Modifications: + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: Camera + value: + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: EndWidth + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: NoiseGain + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: MorphSpeed + value: 150 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: StartWidth + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: BranchCount + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: BranchLength + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: EndPosition.x + value: 2367.149 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: EndPosition.y + value: -475.3712 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: EndPosition.z + value: 2901.6836 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: NoiseAmplitude + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: NoiseFrequency + value: 0.005 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: RenderMaterial + value: + objectReference: {fileID: 2100000, guid: 476f7453551d79b469dda2d6926b93fd, type: 2} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: TrunkNodeCount + value: 4096 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: StartPosition.x + value: 2794.1182 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: StartPosition.y + value: -483.92413 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: StartPosition.z + value: 2641.6372 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659343, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_Name + value: Lightning + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: eb3a880755444d144a4d7f13ef11df77, type: 3} +--- !u!4 &7692568534316527279 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + m_PrefabInstance: {fileID: 916066491333994337} + m_PrefabAsset: {fileID: 0} +--- !u!114 &7692568534316527264 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + m_PrefabInstance: {fileID: 916066491333994337} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 044c2be5da0fc2340a09f856be731cea, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Resources/Prefabs/Weapons/Tesla Gun.prefab.meta b/Assets/Resources/Prefabs/Weapons/Tesla Gun.prefab.meta new file mode 100644 index 000000000..e8206ef23 --- /dev/null +++ b/Assets/Resources/Prefabs/Weapons/Tesla Gun.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e319f59ddd6d4fb42a1c47bb5ca0abd5 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/ARPG.unity b/Assets/Scenes/ARPG.unity index 000f53c28..34528f18e 100644 --- a/Assets/Scenes/ARPG.unity +++ b/Assets/Scenes/ARPG.unity @@ -7004,13 +7004,13 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 519840345} - m_LocalRotation: {x: 0, y: 0, z: -0.258819, w: 0.9659259} + m_LocalRotation: {x: 0, y: 0, z: -0.38268343, w: 0.92387956} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 263352743} m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: -30} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -45} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} m_AnchoredPosition: {x: 0, y: 0} @@ -17819,7 +17819,7 @@ PrefabInstance: - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 55.675 objectReference: {fileID: 0} - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} @@ -18182,13 +18182,13 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1558182380} - m_LocalRotation: {x: 0, y: 0, z: 0.2588191, w: 0.9659258} + m_LocalRotation: {x: 0, y: 0, z: 0.38268343, w: 0.92387956} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 263352743} m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 30} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 45} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} m_AnchoredPosition: {x: 0, y: 0} @@ -18750,7 +18750,7 @@ PrefabInstance: - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 60.98 objectReference: {fileID: 0} - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} diff --git a/Assets/Scenes/LightningTestScene.unity b/Assets/Scenes/LightningTestScene.unity index 9174cd28a..276e6cff3 100644 --- a/Assets/Scenes/LightningTestScene.unity +++ b/Assets/Scenes/LightningTestScene.unity @@ -123,67 +123,6 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &23518774 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 23518775} - - component: {fileID: 23518776} - m_Layer: 0 - m_Name: Lightning - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &23518775 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 23518774} - 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: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &23518776 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 23518774} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 044c2be5da0fc2340a09f856be731cea, type: 3} - m_Name: - m_EditorClassIdentifier: - StartPosition: {x: 0, y: 500, z: 0} - EndPosition: {x: 0, y: 0, z: 0} - StartWidth: 2.5 - EndWidth: 0.5 - BranchLength: 50 - MorphSpeed: 2.5 - NoiseAmplitude: 80 - NoiseFrequency: 0.0025 - NoiseGain: 0.2 - NoiseLacunarity: 6 - Camera: {fileID: 104940729} - TrunkNodeCount: 4096 - BranchCount: 8 - BranchNodeCount: 128 - RenderMaterial: {fileID: 2100000, guid: c94ec17d8118c2749ad885c2b378ea01, type: 2} - ComputeShader: {fileID: 7200000, guid: a974189fea3fe9a46a7859ef6ea8da09, type: 3} - DebugDrawNodes: 0 - DebugDrawVertices: 0 --- !u!1 &104940725 GameObject: m_ObjectHideFlags: 0 @@ -330,13 +269,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 104940725} - m_LocalRotation: {x: -0.258819, y: 0, z: 0, w: 0.9659259} - m_LocalPosition: {x: 0, y: 0, z: -285} + m_LocalRotation: {x: -0.2419218, y: 0, z: 0, w: 0.9702958} + m_LocalPosition: {x: 0, y: 0, z: -330} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 310526803} m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: -30, y: 0, z: 0} + m_LocalEulerAnglesHint: {x: -28, y: 0, z: 0} --- !u!1 &310526802 GameObject: m_ObjectHideFlags: 0 @@ -381,7 +320,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 47e64413aeb5ae740b410d70fb05d20c, type: 3} m_Name: m_EditorClassIdentifier: - rotSpeed: {x: 0, y: 1, z: 0} + rotSpeed: {x: 0, y: 15, z: 0} --- !u!1 &1812750579 GameObject: m_ObjectHideFlags: 0 @@ -535,3 +474,77 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &7383646976240752633 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 7383646976225659329, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: Camera + value: + objectReference: {fileID: 104940729} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659342, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7383646976225659343, guid: eb3a880755444d144a4d7f13ef11df77, + type: 3} + propertyPath: m_Name + value: Lightning + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: eb3a880755444d144a4d7f13ef11df77, type: 3} diff --git a/Assets/Scripts/Gameplay/ActionGameManager.cs b/Assets/Scripts/Gameplay/ActionGameManager.cs index 4d682d6f4..b953f36c3 100644 --- a/Assets/Scripts/Gameplay/ActionGameManager.cs +++ b/Assets/Scripts/Gameplay/ActionGameManager.cs @@ -177,7 +177,13 @@ public class ActionGameManager : MonoBehaviour _input.Global.Dock.performed += context => { - if (CurrentShip.Parent == null) Dock(); + if (CurrentShip == null) + { + ConfirmationDialog.Clear(); + ConfirmationDialog.Title.text = "Can't undock. You dont have a ship!"; + ConfirmationDialog.Show(); + } + else if (CurrentShip.Parent == null) Dock(); else Undock(); }; diff --git a/Assets/Scripts/Gameplay/Weapons/ConstantLightning.cs b/Assets/Scripts/Gameplay/Weapons/ConstantLightning.cs new file mode 100644 index 000000000..9132a12e4 --- /dev/null +++ b/Assets/Scripts/Gameplay/Weapons/ConstantLightning.cs @@ -0,0 +1,79 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ConstantLightning : MonoBehaviour +{ + public LightningCompute Lightning; + public float HitRadius; + public AnimationCurve FadeCurve; + public float StartWidth = 1; + public float EndWidth = 1; + public float FadeDuration; + + public Transform Barrel { get; set; } + public float Damage { get; set; } + public float Penetration { get; set; } + public float Spread { get; set; } + public DamageType DamageType { get; set; } + public EntityInstance Source { get; set; } + public float Range { get; set; } + + private bool _stopping; + private float _startTime; + + private void OnEnable() + { + _stopping = false; + Lightning.StartAnimation(); + } + + private void Update() + { + if (Barrel == null) return; + if (_stopping) + { + var lerp = (Time.time - _startTime) / FadeDuration; + Lightning.StartWidth = FadeCurve.Evaluate(lerp) * StartWidth; + Lightning.EndWidth = FadeCurve.Evaluate(lerp) * EndWidth; + + if (lerp > 1) + { + GetComponent().ReturnToPool(); + return; + } + } + else + { + Lightning.StartWidth = StartWidth; + Lightning.EndWidth = EndWidth; + } + + Lightning.FixedEndpoint = false; + var hits = Physics.SphereCastAll(Barrel.position, HitRadius, Barrel.forward, Range, 1); + foreach (var hit in hits) + { + var hull = hit.collider.GetComponent(); + if (hull) + { + if (hull.Entity == Source.Entity) continue; + hull.SendHit(Damage * Time.deltaTime, Penetration, Spread, DamageType, Source.Entity, hit, Barrel.forward); + } + + Lightning.FixedEndpoint = true; + Lightning.EndPosition = hit.point; + + break; + } + if(!Lightning.FixedEndpoint) + Lightning.EndPosition = Barrel.position + Barrel.forward * Range; + + Lightning.StartPosition = Barrel.position; + } + + public void Stop() + { + _stopping = true; + _startTime = Time.time; + } +} diff --git a/Assets/Scripts/Gameplay/Weapons/ConstantLightning.cs.meta b/Assets/Scripts/Gameplay/Weapons/ConstantLightning.cs.meta new file mode 100644 index 000000000..9a34b00c9 --- /dev/null +++ b/Assets/Scripts/Gameplay/Weapons/ConstantLightning.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b184352ea3694b8d892f1402b8d51153 +timeCreated: 1612491884 \ No newline at end of file diff --git a/Assets/Scripts/Gameplay/Weapons/ConstantLightningManager.cs b/Assets/Scripts/Gameplay/Weapons/ConstantLightningManager.cs new file mode 100644 index 000000000..5ee105a20 --- /dev/null +++ b/Assets/Scripts/Gameplay/Weapons/ConstantLightningManager.cs @@ -0,0 +1,32 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Serialization; + +public class ConstantLightningManager : ConstantWeaponEffectManager +{ + public Prototype LightningPrototype; + + private Dictionary _bolts = new Dictionary(); + + public override void StartFiring(WeaponData data, EquippedItem item, EntityInstance source, EntityInstance target) + { + var p = LightningPrototype.Instantiate(); + p.Source = source; + var hp = source.Entity.Hardpoints[item.Position.x, item.Position.y]; + var barrel = source.GetBarrel(hp); + p.Barrel = barrel; + p.Damage = source.Entity.ItemManager.Evaluate(data.Damage, item.EquippableItem, source.Entity); + p.Range = source.Entity.ItemManager.Evaluate(data.Range, item.EquippableItem, source.Entity); + p.Penetration = source.Entity.ItemManager.Evaluate(data.Penetration, item.EquippableItem, source.Entity); + p.Spread = source.Entity.ItemManager.Evaluate(data.DamageSpread, item.EquippableItem, source.Entity); + p.DamageType = data.DamageType; + _bolts.Add(item, p); + } + + public override void StopFiring(EquippedItem item) + { + _bolts[item].Stop(); + _bolts.Remove(item); + } +} diff --git a/Assets/Scripts/Gameplay/Weapons/ConstantLightningManager.cs.meta b/Assets/Scripts/Gameplay/Weapons/ConstantLightningManager.cs.meta new file mode 100644 index 000000000..f96c814ec --- /dev/null +++ b/Assets/Scripts/Gameplay/Weapons/ConstantLightningManager.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ecabe4f078a147459bba6172582d7bc8 +timeCreated: 1612491892 \ No newline at end of file diff --git a/Assets/Scripts/Gameplay/Weapons/Lightning.cs b/Assets/Scripts/Gameplay/Weapons/Lightning.cs index 8acbaeba0..548d89256 100644 --- a/Assets/Scripts/Gameplay/Weapons/Lightning.cs +++ b/Assets/Scripts/Gameplay/Weapons/Lightning.cs @@ -9,23 +9,8 @@ using Random = UnityEngine.Random; public class Lightning : MonoBehaviour { - public LineRenderer Trunk; - public Prototype BranchPrototype; + public LightningCompute LightningCompute; public float HitRadius; - public float Duration; - public AnimationCurve IntensityCurve; - public int BranchCount; - public float BranchDistance; - public int PointCount; - public int BranchPointCount; - public int MorphSpeed; - - public int Octaves; - public float Frequency; - public float Offset; - public float Amplitude; - public float Lacunarity; - public float Gain; public float Damage { get; set; } public float Penetration { get; set; } @@ -36,46 +21,16 @@ public class Lightning : MonoBehaviour public EntityInstance Target { get; set; } public Transform Barrel { get; set; } - private float _startTime; - private LineRenderer[] _branches; - private Vector3[] _points; - private Vector3[][] _branchPoints; - private int[] _branchStarts; private bool _colliderHit; private Vector3 _colliderLocalPosition; private Transform _colliderTransform; private Vector3 _endpoint; - private float _offset; - - private void Awake() - { - _points = new Vector3[PointCount]; - _branchPoints = new Vector3[BranchCount][]; - _branchStarts = new int[BranchCount]; - _branches = new LineRenderer[BranchCount]; - for (int i = 0; i < BranchCount; i++) - { - _branchPoints[i] = new Vector3[BranchPointCount]; - _branches[i] = BranchPrototype.Instantiate(); - } - } public void Fire() { - _offset = Random.value * 1000; - _startTime = Time.time; - Trunk.widthMultiplier = 0; - foreach(var line in _branches) - line.widthMultiplier = 0; - - for (int i = 0; i < BranchCount; i++) - { - _branchStarts[i] = Random.Range(0, PointCount); - var lerp = (float) _branchStarts[i] / PointCount; - _branches[i].startColor = Trunk.colorGradient.Evaluate(lerp); - } - _colliderHit = false; + LightningCompute.OnLeaderComplete = null; + LightningCompute.FixedEndpoint = false; var hits = Physics.SphereCastAll(Barrel.position, HitRadius, Barrel.forward, Range, 1); foreach (var hit in hits) { @@ -83,64 +38,32 @@ public class Lightning : MonoBehaviour if (hull) { if (hull.Entity == Source.Entity) continue; - hull.SendHit(Damage, Penetration, Spread, DamageType, Source.Entity, hit, Barrel.forward); + LightningCompute.OnLeaderComplete = () => + hull.SendHit(Damage, Penetration, Spread, DamageType, Source.Entity, hit, Barrel.forward); } _colliderHit = true; _colliderLocalPosition = hit.collider.transform.InverseTransformPoint(hit.point); _colliderTransform = hit.collider.transform; + LightningCompute.FixedEndpoint = true; break; } + LightningCompute.OnPulseComplete = () => + GetComponent().ReturnToPool(); + LightningCompute.StartAnimation(); + _endpoint = Barrel.position + Barrel.forward * Range; } private void Update() { if (Barrel == null) return; - var time = (Time.time - _startTime) / Duration; - if (time > 1) - { - GetComponent().ReturnToPool(); - return; - } - Trunk.widthMultiplier = IntensityCurve.Evaluate(time); if (_colliderHit) { - if(_colliderTransform) _endpoint = _colliderTransform.TransformPoint(_colliderLocalPosition); + if (_colliderTransform) _endpoint = _colliderTransform.TransformPoint(_colliderLocalPosition); } - else _endpoint = Barrel.position + Barrel.forward * Range + (Vector3) NoiseFbm.fBm3(Time.time, Octaves, Frequency, Offset, Amplitude, Lacunarity, Gain); - var startPoint = Barrel.position; - var dist = (_endpoint - startPoint).magnitude; - var startOffset = -NoiseFbm.fBm3(float2(0+_offset, Time.time*MorphSpeed), Octaves, Frequency, Offset, Amplitude, Lacunarity, Gain); - var endOffset = -NoiseFbm.fBm3(float2(dist+_offset, Time.time*MorphSpeed), Octaves, Frequency, Offset, Amplitude, Lacunarity, Gain); - for (int i = 0; i < PointCount; i++) - { - var l = (float) i / (PointCount - 1); - var sampleDist = dist * l; - var pos = lerp(startPoint, _endpoint, l) + - NoiseFbm.fBm3(float2(sampleDist+_offset, Time.time*MorphSpeed), Octaves, Frequency, Offset, Amplitude, Lacunarity, Gain); - if (l < .5f) pos += startOffset * (1 - l * 2); - else pos += endOffset * (2 * (l - .5f)); - _points[i] = pos; - } - Trunk.SetPositions(_points); - for (int i = 0; i < BranchCount; i++) - { - _branches[i].widthMultiplier = Trunk.widthMultiplier * Trunk.widthCurve.Evaluate((float) _branchStarts[i] / PointCount); - var branchStartPoint = _points[_branchStarts[i]]; - var branchEndPoint = branchStartPoint + Random.onUnitSphere * BranchDistance; - var branchstartOffset = -NoiseFbm.fBm3(float2(_branchStarts[i]*10, Time.time*MorphSpeed), Octaves, Frequency, Offset, Amplitude, Lacunarity, Gain); - for (int j = 0; j < BranchPointCount; j++) - { - var l = (float) j / (BranchPointCount - 1); - var sampleDist = BranchDistance * l + _branchStarts[i]*10; - var pos = lerp(branchStartPoint, branchEndPoint, l) + - NoiseFbm.fBm3(float2(sampleDist * 2, Time.time * MorphSpeed), Octaves, Frequency, Offset, Amplitude, Lacunarity, Gain); - if (l < .5f) pos += branchstartOffset * (1 - l * 2); - _branchPoints[i][j] = pos; - } - _branches[i].SetPositions(_branchPoints[i]); - } + LightningCompute.EndPosition = _endpoint; + LightningCompute.StartPosition = Barrel.position; } } diff --git a/Assets/Scripts/Gameplay/Weapons/Lightning.cs.meta b/Assets/Scripts/Gameplay/Weapons/Lightning.cs.meta index 8c5bab994..16cc7f818 100644 --- a/Assets/Scripts/Gameplay/Weapons/Lightning.cs.meta +++ b/Assets/Scripts/Gameplay/Weapons/Lightning.cs.meta @@ -4,7 +4,7 @@ MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] - executionOrder: 0 + executionOrder: 53 icon: {instanceID: 0} userData: assetBundleName: diff --git a/Assets/Scripts/Sector Display/SectorRenderer.cs b/Assets/Scripts/Sector Display/SectorRenderer.cs index abd88b874..25739ec53 100644 --- a/Assets/Scripts/Sector Display/SectorRenderer.cs +++ b/Assets/Scripts/Sector Display/SectorRenderer.cs @@ -373,9 +373,9 @@ public class SectorRenderer : MonoBehaviour hitShape[v] = true; } - for (int i = 0; i < hit.Spread - 1; i++) + for (int i = 0; i < Mathf.RoundToInt(hit.Spread); i++) { - hitShape.Expand(); + hitShape = hitShape.Expand(); } if (hit.Penetration > .5f) diff --git a/Assets/Shaders/Compute/Lightning/Lightning 1.mat b/Assets/Shaders/Compute/Lightning/Lightning 1.mat new file mode 100644 index 000000000..37619c3c1 --- /dev/null +++ b/Assets/Shaders/Compute/Lightning/Lightning 1.mat @@ -0,0 +1,85 @@ +%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: Lightning 1 + m_Shader: {fileID: 4800000, guid: 21dd485e846b4d3a8213cf5551832776, 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: + - _BranchIntensity: 10 + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Intensity: 100 + - _LeaderIntensity: 100 + - _LeaderProgress: 2 + - _LeaderSize: 0.025 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _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} + - _EndColor: {r: 1, g: 0.049999997, b: 0.049999997, a: 1} + - _StartColor: {r: 1, g: 0.20970267, b: 0.051643193, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Shaders/Compute/Lightning/Lightning 1.mat.meta b/Assets/Shaders/Compute/Lightning/Lightning 1.mat.meta new file mode 100644 index 000000000..9c2c07c0b --- /dev/null +++ b/Assets/Shaders/Compute/Lightning/Lightning 1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 476f7453551d79b469dda2d6926b93fd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Shaders/Compute/Lightning/Lightning.compute b/Assets/Shaders/Compute/Lightning/Lightning.compute index 5c3292169..0750006b9 100644 --- a/Assets/Shaders/Compute/Lightning/Lightning.compute +++ b/Assets/Shaders/Compute/Lightning/Lightning.compute @@ -78,10 +78,9 @@ void UpdateNodes (uint3 id : SV_DispatchThreadID) float distance = length(bolt.startPos - samplePos); - node.pos = samplePos + - fbm3(float2(distance, _Time + node.bolt * 10)) + - bolt.startOffset * max(.5 - node.time, 0) * 2 + - bolt.endOffset * max(node.time - .5, 0) * 2; + node.pos = samplePos + fbm3(float2(distance, _Time + node.bolt * 10)); + if(node.bolt == 0) node.pos += bolt.startOffset * max(.5 - node.time, 0) * 2 + bolt.endOffset * max(node.time - .5, 0) * 2; + else node.pos += bolt.startOffset; _NodeBuffer[idx] = node; } @@ -129,10 +128,10 @@ void CreateWidth (uint3 id : SV_DispatchThreadID) float uvx = bolt.startTime + node.time * (1-bolt.startTime); v0.pos = pos - right; - v0.uv = float2(uvx, 0); + v0.uv = float2(uvx, 0 + node.bolt); v1.pos = pos + right; - v1.uv = float2(uvx, 1); + v1.uv = float2(uvx, 1 + node.bolt); uint vId = idx * 2; _VertexBuffer[vId] = v0; diff --git a/Assets/Shaders/Compute/Lightning/Lightning.mat b/Assets/Shaders/Compute/Lightning/Lightning.mat index 2807a1544..8957b7b42 100644 --- a/Assets/Shaders/Compute/Lightning/Lightning.mat +++ b/Assets/Shaders/Compute/Lightning/Lightning.mat @@ -56,6 +56,7 @@ Material: m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} m_Floats: + - _BranchIntensity: 10 - _BumpScale: 1 - _Cutoff: 0.5 - _DetailNormalMapScale: 1 @@ -63,6 +64,10 @@ Material: - _GlossMapScale: 1 - _Glossiness: 0.5 - _GlossyReflections: 1 + - _Intensity: 10 + - _LeaderIntensity: 100 + - _LeaderProgress: 0.81259537 + - _LeaderSize: 0.025 - _Metallic: 0 - _Mode: 0 - _OcclusionStrength: 1 @@ -75,6 +80,6 @@ Material: m_Colors: - _Color: {r: 1, g: 1, b: 1, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _EndColor: {r: 0.40784314, g: 0.9411765, b: 8, a: 0} - - _StartColor: {r: 16, g: 0.8156863, b: 11.043138, a: 1} + - _EndColor: {r: 0.062478006, g: 0.11552096, b: 0.801, a: 0} + - _StartColor: {r: 0.83699995, g: 0.043821972, b: 0.57845026, a: 1} m_BuildTextureStacks: [] diff --git a/Assets/Shaders/Compute/Lightning/Lightning.shader b/Assets/Shaders/Compute/Lightning/Lightning.shader index 4b4ee54af..d01a95803 100644 --- a/Assets/Shaders/Compute/Lightning/Lightning.shader +++ b/Assets/Shaders/Compute/Lightning/Lightning.shader @@ -1,7 +1,12 @@ Shader "Aetheria/GPU Lightning" { Properties { - [HDR]_StartColor("StartColor", Color) = (1,1,1,1) - [HDR]_EndColor("EndColor", Color) = (0,0,0,1) + _StartColor("StartColor", Color) = (1,1,1,1) + _EndColor("EndColor", Color) = (0,0,0,1) + _Intensity("Intensity", Float) = 1 + _LeaderIntensity("LeaderIntensity", Float) = 10 + _LeaderProgress("Leader Progress", Float) = 1 + _LeaderSize("Leader Size", Float) = .01 + _BranchIntensity("Branch Intensity", Float) = 1 } SubShader { @@ -10,7 +15,6 @@ Pass{ CGPROGRAM #pragma target 5.0 - #pragma shader_feature GPUTRAIL_TRAIL_INDEX_ON #pragma vertex vert #pragma fragment frag @@ -18,10 +22,14 @@ Pass{ #include "UnityCG.cginc" #include "LightningVertex.cginc" #include "Assets/Shaders/Dither Functions.cginc" - + + float _Intensity; + float _LeaderIntensity; + float _LeaderProgress; + float _LeaderSize; + float _BranchIntensity; fixed4 _StartColor; fixed4 _EndColor; - uint _VerticesPerInstance; StructuredBuffer _IndexBuffer; StructuredBuffer _VertexBuffer; @@ -52,9 +60,15 @@ Pass{ fixed4 frag (vs_out In) : COLOR0 { + // Discard fragments that are further than the leader progress + clip(_LeaderProgress-In.uv.x); + // Simple quadratic curve "texture" - float x = 2 * In.uv.y - 1; + float x = 2 * (In.uv.y % 1) - 1; float a = 1 - x * x; + + float i = In.uv.y > 1 ? _BranchIntensity : _Intensity; + a *= lerp(i, _LeaderIntensity, smoothstep(_LeaderProgress - _LeaderSize * 1.5, _LeaderProgress - _LeaderSize, In.uv.x)); // Apply screen space dithering float2 screenUV = In.screenPos.xy / In.screenPos.w; @@ -65,6 +79,69 @@ Pass{ ENDCG + } +Pass{ + Name "ShadowCaster" + Tags { "LightMode" = "ShadowCaster" } + + CGPROGRAM + #pragma target 5.0 + + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + #include "LightningVertex.cginc" + #include "Assets/Shaders/Dither Functions.cginc" + + float _LeaderProgress; + float _LeaderSize; + StructuredBuffer _IndexBuffer; + StructuredBuffer _VertexBuffer; + + Vertex GetVertex(uint indexBufferIdx) { + uint idx = _IndexBuffer[indexBufferIdx]; + return _VertexBuffer[idx]; + } + + struct vs_out { + float4 pos : SV_POSITION; + float4 col : COLOR; + float2 uv : TEXCOORD; + float4 screenPos : TEXCOORD1; + }; + + vs_out vert (uint id : SV_VertexID, uint iId : SV_InstanceID) + { + vs_out Out; + Vertex vtx = GetVertex(id); + + Out.pos = UnityObjectToClipPos(float4(vtx.pos, 1.0)); + Out.uv = vtx.uv; + Out.col = 1; + Out.screenPos = ComputeScreenPos(float4(vtx.pos, 1.0)); + + return Out; + } + + fixed4 frag (vs_out In) : COLOR0 + { + // Discard fragments that are further than the leader progress + clip(_LeaderProgress-In.uv.x); + + // Simple quadratic curve "texture" + float x = 2 * (In.uv.y % 1) - 1; + float a = 1 - x * x; + + // Apply screen space dithering + float2 screenUV = In.screenPos.xy / In.screenPos.w; + ditherClip(screenUV, a); + + SHADOW_CASTER_FRAGMENT(In) + } + + ENDCG + } } diff --git a/Assets/Shaders/Compute/Lightning/LightningCompute.cs b/Assets/Shaders/Compute/Lightning/LightningCompute.cs index 578b21fa8..242d24b2f 100644 --- a/Assets/Shaders/Compute/Lightning/LightningCompute.cs +++ b/Assets/Shaders/Compute/Lightning/LightningCompute.cs @@ -1,3 +1,4 @@ +using System; using System.Collections; using System.Collections.Generic; using System.Linq; @@ -5,12 +6,16 @@ using System.Runtime.InteropServices; using UnityEngine; using UnityEngine.Rendering; using Unity.Mathematics; +using UnityEngine.InputSystem; +using UnityEngine.Serialization; using static Unity.Mathematics.math; using static Unity.Mathematics.noise; using Random = UnityEngine.Random; public class LightningCompute : MonoBehaviour { + public Camera Camera; + [Header("Bolt Properties")] public Vector3 StartPosition; public Vector3 EndPosition; @@ -22,7 +27,19 @@ public class LightningCompute : MonoBehaviour public float NoiseFrequency; public float NoiseGain; public float NoiseLacunarity; - public Camera Camera; + public bool FixedEndpoint; + public bool Animate; + + [Header("Animation Properties")] + public float LeaderWidth; + public float LeaderDuration; + public float LeaderIntensity; + public float PulseDuration; + public float PulseIntensity; + public float PulseWidth; + public AnimationCurve PulseTrunkIntensityCurve; + public AnimationCurve PulseBranchIntensityCurve; + public AnimationCurve PulseWidthCurve; [Header("Buffer Sizes")] public int TrunkNodeCount; @@ -36,6 +53,9 @@ public class LightningCompute : MonoBehaviour public bool DebugDrawNodes; public bool DebugDrawVertices; + public Action OnLeaderComplete; + public Action OnPulseComplete; + private Transform _cameraTransform; private ComputeBuffer _nodeBuffer; @@ -48,6 +68,12 @@ public class LightningCompute : MonoBehaviour private const int GROUP_SIZE = 64; private int _updateKernel; private int _createWidthKernel; + private float _animationStartTime; + private float _time; + private bool _leaderComplete; + private bool _pulseComplete; + private bool _initialized; + private Material _materialInstance; private int NodeBufferSize => TrunkNodeCount + BranchCount * BranchNodeCount; private int VertexBufferSize => NodeBufferSize * 2; @@ -78,14 +104,21 @@ public class LightningCompute : MonoBehaviour void Start() { + Initialize(); + _materialInstance = Instantiate(RenderMaterial); + } + + void Initialize() + { + if (_initialized) return; + _initialized = true; + + if (!Camera) + Camera = Camera.main; _cameraTransform = Camera.transform; _updateKernel = ComputeShader.FindKernel("UpdateNodes"); _createWidthKernel = ComputeShader.FindKernel("CreateWidth"); - InitBuffers(); - } - - void InitBuffers() - { + _nodeBuffer = new ComputeBuffer(NodeBufferSize, Marshal.SizeOf(typeof(Node))); var nodeList = new List(); for (int i = 0; i < TrunkNodeCount; i++) @@ -113,17 +146,6 @@ public class LightningCompute : MonoBehaviour endPos = EndPosition, startTime = 0 }; - for (int i = 0; i < BranchCount; i++) - { - _branchEndpoints[i] = Random.insideUnitSphere * BranchLength; - var parent = nodeList[(int)((float) i / BranchCount * TrunkNodeCount)]; - _bolts[i+1] = new Bolt - { - startPos = parent.pos, - endPos = parent.pos + _branchEndpoints[i], - startTime = parent.time - }; - } _boltBuffer.SetData(_bolts); @@ -159,6 +181,24 @@ public class LightningCompute : MonoBehaviour _indexBuffer = new ComputeBuffer(indexData.Length, Marshal.SizeOf(typeof(uint))); // 1 node to 2 triangles(6vertexs) _indexBuffer.SetData(indexData); } + + public void StartAnimation() + { + Initialize(); + _animationStartTime = Time.time; + _time = Random.value * 1000; + _leaderComplete = false; + _pulseComplete = false; + + for (int i = 0; i < BranchCount; i++) + { + _branchEndpoints[i] = Random.insideUnitSphere * BranchLength; + _bolts[i+1] = new Bolt + { + startTime = Random.value * .8f + }; + } + } float fbm(float2 p) { @@ -183,23 +223,51 @@ public class LightningCompute : MonoBehaviour void Update() { - var time = Time.time * MorphSpeed; + _time += Time.deltaTime * MorphSpeed; + + if(Animate) + { + var leaderLerp = (Time.time - _animationStartTime) / LeaderDuration; + if (leaderLerp > 1 && !_leaderComplete) + { + OnLeaderComplete?.Invoke(); + _leaderComplete = true; + } + + var pulseLerp = (Time.time - _animationStartTime - LeaderDuration) / PulseDuration; + if (pulseLerp > 1 && !_pulseComplete) + { + OnPulseComplete?.Invoke(); + _pulseComplete = true; + } + ComputeShader.SetFloat("_StartWidth", leaderLerp < 1 ? LeaderWidth : StartWidth * PulseWidthCurve.Evaluate(pulseLerp)*PulseWidth); + ComputeShader.SetFloat("_EndWidth", leaderLerp < 1 ? LeaderWidth : EndWidth * PulseWidthCurve.Evaluate(pulseLerp)*PulseWidth); + + _materialInstance.SetFloat("_LeaderProgress", leaderLerp); + _materialInstance.SetFloat("_BranchIntensity", leaderLerp < 1 ? LeaderIntensity : PulseBranchIntensityCurve.Evaluate(pulseLerp) * PulseIntensity); + _materialInstance.SetFloat("_Intensity", leaderLerp < 1 ? LeaderIntensity : PulseTrunkIntensityCurve.Evaluate(pulseLerp) * PulseIntensity); + } + else + { + ComputeShader.SetFloat("_StartWidth", StartWidth); + ComputeShader.SetFloat("_EndWidth", EndWidth); + } var diff = EndPosition - StartPosition; var dist = diff.magnitude; _bolts[0].startPos = StartPosition; - _bolts[0].startOffset = -(Vector3) fbm3(float2(0, time)); + _bolts[0].startOffset = -(Vector3) fbm3(float2(0, _time)); _bolts[0].endPos = EndPosition; - _bolts[0].endOffset = -(Vector3) fbm3(float2(dist, time)); + _bolts[0].endOffset = FixedEndpoint ? -(Vector3) fbm3(float2(dist, _time)) : Vector3.zero; for (int i = 0; i < BranchCount; i++) { var root = Vector3.Lerp(StartPosition, EndPosition, _bolts[i + 1].startTime); var rootDist = _bolts[i + 1].startTime * dist; _bolts[i + 1].startPos = - root + (Vector3) fbm3(float2(rootDist, time)) + + root + (Vector3) fbm3(float2(rootDist, _time)) + _bolts[0].startOffset * (max(.5f - _bolts[i + 1].startTime, 0) * 2) + _bolts[0].endOffset * (max(_bolts[i + 1].startTime - .5f, 0) * 2); - _bolts[i + 1].startOffset = -(Vector3) fbm3(float2(0, time + (i + 1) * 10)); + _bolts[i + 1].startOffset = -(Vector3) fbm3(float2(0, _time + (i + 1) * 10)); _bolts[i + 1].endPos = root + _branchEndpoints[i]; } @@ -208,7 +276,7 @@ public class LightningCompute : MonoBehaviour ComputeShader.SetBuffer(_updateKernel, "_NodeBuffer", _nodeBuffer); ComputeShader.SetBuffer(_updateKernel, "_BoltBuffer", _boltBuffer); - ComputeShader.SetFloat("_Time", time); + ComputeShader.SetFloat("_Time", _time); ComputeShader.SetFloat("_NoiseAmplitude", NoiseAmplitude); ComputeShader.SetFloat("_NoiseFrequency", NoiseFrequency); ComputeShader.SetFloat("_NoiseGain", NoiseGain); @@ -219,8 +287,6 @@ public class LightningCompute : MonoBehaviour ComputeShader.SetInt("_TrunkNodeCount", TrunkNodeCount); ComputeShader.SetInt("_BranchNodeCount", BranchNodeCount); ComputeShader.SetVector("_CameraPos", _cameraTransform.position); - ComputeShader.SetFloat("_StartWidth", StartWidth); - ComputeShader.SetFloat("_EndWidth", EndWidth); ComputeShader.SetBuffer(_createWidthKernel, "_NodeBuffer", _nodeBuffer); ComputeShader.SetBuffer(_createWidthKernel, "_BoltBuffer", _boltBuffer); @@ -228,10 +294,10 @@ public class LightningCompute : MonoBehaviour ComputeShader.Dispatch(_createWidthKernel, NodeBufferSize/GROUP_SIZE, 1, 1); - RenderMaterial.SetBuffer("_IndexBuffer", _indexBuffer); - RenderMaterial.SetBuffer("_VertexBuffer", _vertexBuffer); + _materialInstance.SetBuffer("_IndexBuffer", _indexBuffer); + _materialInstance.SetBuffer("_VertexBuffer", _vertexBuffer); Graphics.DrawProcedural( - RenderMaterial, + _materialInstance, new Bounds((EndPosition + StartPosition) / 2, (EndPosition - StartPosition).magnitude * Vector3.one), MeshTopology.Triangles, IndexBufferSize, @@ -241,6 +307,9 @@ public class LightningCompute : MonoBehaviour ShadowCastingMode.Off, false, 0); + // + // if(pulseLerp > 2) + // StartAnimation(); } #region cleanup diff --git a/Assets/Shaders/Compute/Lightning/LightningCompute.cs.meta b/Assets/Shaders/Compute/Lightning/LightningCompute.cs.meta index 155a0283f..c6a71c693 100644 --- a/Assets/Shaders/Compute/Lightning/LightningCompute.cs.meta +++ b/Assets/Shaders/Compute/Lightning/LightningCompute.cs.meta @@ -4,7 +4,7 @@ MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] - executionOrder: 0 + executionOrder: 55 icon: {instanceID: 0} userData: assetBundleName: diff --git a/GameData/Presets/Longinus.preset b/GameData/Presets/Longinus.preset index 7b6a2a85a..d430336df 100644 Binary files a/GameData/Presets/Longinus.preset and b/GameData/Presets/Longinus.preset differ diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset index bb9da901a..620d9a189 100644 --- a/UserSettings/EditorUserSettings.asset +++ b/UserSettings/EditorUserSettings.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:193b1fff33ba3374c17d69a888068835a54660e10b1a73a9285f35b65880acde +oid sha256:a8d6ea99fabe08bd673c3526938e2e7d79b85571e90bd9abfd5d11e43ab24ad1 size 1077