diff --git a/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml b/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml index 7348999ad..2050c8808 100644 --- a/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml +++ b/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml @@ -223,6 +223,7 @@ + @@ -1444,7 +1445,6 @@ - @@ -1488,6 +1488,7 @@ + diff --git a/.idea/.idea.Aetheria-Economy/.idea/indexLayout.xml b/.idea/.idea.Aetheria-Economy/.idea/indexLayout.xml index c5d005208..66d8cf5e2 100644 --- a/.idea/.idea.Aetheria-Economy/.idea/indexLayout.xml +++ b/.idea/.idea.Aetheria-Economy/.idea/indexLayout.xml @@ -37,7 +37,6 @@ Logs Recordings Server - Temp UserSettings obj diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj index 8f89983d7..87339e51d 100644 --- a/Assembly-CSharp.csproj +++ b/Assembly-CSharp.csproj @@ -196,11 +196,13 @@ + + @@ -330,6 +332,7 @@ + @@ -342,6 +345,7 @@ + @@ -399,6 +403,7 @@ + @@ -448,6 +453,7 @@ + @@ -460,13 +466,17 @@ + + + + @@ -529,6 +539,7 @@ + @@ -695,16 +706,6 @@ - - - - - - - - - - diff --git a/Assets/ArticulationPoint.cs b/Assets/ArticulationPoint.cs index 328ca42b3..944541d5f 100644 --- a/Assets/ArticulationPoint.cs +++ b/Assets/ArticulationPoint.cs @@ -14,14 +14,32 @@ public class ArticulationPoint : MonoBehaviour public float PitchMin; public float PitchMax; + public float Speed; + + private float _yaw; + private float _pitch; + void Update() { if (Target) { var targetLocal = transform.parent.InverseTransformPoint(Target.position); + var yaw = Vector2.SignedAngle(new Vector2(0, 1), new Vector2(targetLocal.x, targetLocal.z)); var pitch = Vector2.SignedAngle(new Vector2(1, 0), new Vector2(targetLocal.z, targetLocal.y)); - transform.localRotation = Quaternion.Euler(clamp(-pitch, -PitchMin, -PitchMax), clamp(yaw, YawMin, YawMax), 0); + + var targetYaw = clamp(-yaw, YawMin, YawMax); + var targetPitch = clamp(-pitch, PitchMin, PitchMax); + + if (abs(targetYaw - _yaw) < Speed * Time.deltaTime) + _yaw = targetYaw; + else _yaw = _yaw + sign(targetYaw - _yaw) * Speed * Time.deltaTime; + + if (abs(targetPitch - _pitch) < Speed * Time.deltaTime) + _pitch = targetPitch; + else _pitch = _pitch + sign(targetPitch - _pitch) * Speed * Time.deltaTime; + + transform.localRotation = Quaternion.Euler(_pitch, _yaw, 0); } } } diff --git a/Assets/InventoryMenu.cs b/Assets/InventoryMenu.cs index 73423a236..2ba83fc2d 100644 --- a/Assets/InventoryMenu.cs +++ b/Assets/InventoryMenu.cs @@ -18,6 +18,7 @@ public class InventoryMenu : MonoBehaviour public PropertiesPanel PropertiesPanel; public ActionGameManager GameManager; public RectTransform DragParent; + public ConfirmationDialog Dialog; private int _currentPanel = -1; @@ -126,12 +127,23 @@ public class InventoryMenu : MonoBehaviour if (data is InventoryCargoEventData cargoEvent) { cargoEvent.CargoBay.Remove(_dragItem); + _dragTargetPanel.DropItem(_dragItem, _dragTargetPosition); } else if (data is InventoryEntityEventData entityEvent) { - entityEvent.Entity.Unequip(_originalEquippedItem); + if (entityEvent.Entity.Unequip(_originalEquippedItem) != null) + { + _dragTargetPanel.DropItem(_dragItem, _dragTargetPosition); + } + else + { + Dialog.Clear(); + Dialog.Title.text = "Unable to move item!"; + Dialog.AddProperty("Verify that cargo bays are empty before un-equipping them."); + Dialog.Show(); + } } - _dragTargetPanel.DropItem(_dragItem, _dragTargetPosition); + _dragTargetPanel.FakeOccupancy = null; } else diff --git a/Assets/Materials/Radiators 1.mat b/Assets/Materials/Radiators 1.mat new file mode 100644 index 000000000..a6219fe9d --- /dev/null +++ b/Assets/Materials/Radiators 1.mat @@ -0,0 +1,87 @@ +%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: Radiators 1 + m_Shader: {fileID: 4800000, guid: d69ef48273708ef4680762f5cdcfc860, 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: -812895718602229137, guid: b7e648471e9dfc44490bd41973711541, + type: 3} + m_Scale: {x: 8, y: 8} + 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: -6057190860509678031, guid: 2b42584452fe0cc4fa4e8a115230b156, + type: 3} + m_Scale: {x: 8, y: 8} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: -894214952450941493, guid: 2b42584452fe0cc4fa4e8a115230b156, + type: 3} + 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: + - _BumpPower: 2 + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Emission: 15 + - _EmissionFresnel: 4 + - _EmissionRoughnessFresnelPower: 0.5 + - _GlossMapScale: 1 + - _Glossiness: 1 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ReverseRim: 0 + - _Rotation: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 1, g: 0.40135294, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Materials/Radiators 1.mat.meta b/Assets/Materials/Radiators 1.mat.meta new file mode 100644 index 000000000..c562a84de --- /dev/null +++ b/Assets/Materials/Radiators 1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f396635dc77c59c44ac85ae278a2e909 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Substance/Metal/metal_car_paint.sbsar b/Assets/Materials/Substance/Metal/metal_car_paint red.sbsar similarity index 100% rename from Assets/Materials/Substance/Metal/metal_car_paint.sbsar rename to Assets/Materials/Substance/Metal/metal_car_paint red.sbsar diff --git a/Assets/Materials/Substance/Metal/metal_car_paint red.sbsar.meta b/Assets/Materials/Substance/Metal/metal_car_paint red.sbsar.meta new file mode 100644 index 000000000..90d42c83c --- /dev/null +++ b/Assets/Materials/Substance/Metal/metal_car_paint red.sbsar.meta @@ -0,0 +1,381 @@ +fileFormatVersion: 2 +guid: 504c7bfe0d50ff64a88b8eac2ceb46f8 +ScriptedImporter: + internalIDToNameTable: + - first: + 1: 100000 + second: metal_car_paint/metal_car_paint + - first: + 4: 400000 + second: metal_car_paint/metal_car_paint/Transform + - first: + 21: 2100000 + second: mat.Car paint + - first: + 23: 2300000 + second: metal_car_paint/metal_car_paint/MeshRenderer + - first: + 28: 2800000 + second: Car paint_baseColor + - first: + 28: 2800002 + second: Car paint_normal + - first: + 28: 2800004 + second: Car paint_metallic + - first: + 28: 2800006 + second: Car paint_ambientOcclusion + - first: + 28: 2800008 + second: Car paint_height + - first: + 33: 3300000 + second: metal_car_paint/metal_car_paint/MeshFilter + - first: + 114: 11400000 + second: sbsar + - first: + 114: 11400002 + second: graph0 + - first: + 135: 13500000 + second: metal_car_paint/metal_car_paint/SphereCollider + - first: + 1001: 100100000 + second: metal_car_paint + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 232528478, guid: 43a8bbf65be290d44ba52b94476242b9, type: 3} + version: 29 + projectContext: 0 + mGraphInstanceData: + - graphLabel: Car paint + prototypeName: Car paint + graphDescIndex: 0 + generateAllOutputs: 0 + generateMipMaps: 1 + preset: " \n \n + \n \n \n \n \n \n \n \n \n \n \n" + shaderName: Standard + materialProperties: + shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + shaderKeywords: _MAINTEX _METALLICGLOSSMAP _NORMALMAP _OCCLUSIONMAP _PARALLAXMAP + lightmapFlags: 4 + enableInstancingVariants: 0 + doubleSidedGI: 0 + customRenderQueue: -1 + texEnvs: + - name: _BumpMap + texture: {fileID: 3068890721646206586, guid: 504c7bfe0d50ff64a88b8eac2ceb46f8, + type: 3} + scale: {x: 1, y: 1} + offset: {x: 0, y: 0} + - name: _DetailAlbedoMap + texture: {instanceID: 0} + scale: {x: 1, y: 1} + offset: {x: 0, y: 0} + - name: _DetailMask + texture: {instanceID: 0} + scale: {x: 1, y: 1} + offset: {x: 0, y: 0} + - name: _DetailNormalMap + texture: {instanceID: 0} + scale: {x: 1, y: 1} + offset: {x: 0, y: 0} + - name: _EmissionMap + texture: {instanceID: 0} + scale: {x: 2, y: 2} + offset: {x: 0, y: 0} + - name: _MainTex + texture: {fileID: 5917659159057834157, guid: 504c7bfe0d50ff64a88b8eac2ceb46f8, + type: 3} + scale: {x: 2, y: 2} + offset: {x: 0, y: 0} + - name: _MetallicGlossMap + texture: {fileID: -3552914696322007609, guid: 504c7bfe0d50ff64a88b8eac2ceb46f8, + type: 3} + scale: {x: 1, y: 1} + offset: {x: 0, y: 0} + - name: _OcclusionMap + texture: {fileID: -1242281561028671816, guid: 504c7bfe0d50ff64a88b8eac2ceb46f8, + type: 3} + scale: {x: 1, y: 1} + offset: {x: 0, y: 0} + - name: _ParallaxMap + texture: {fileID: -1652887728991447519, guid: 504c7bfe0d50ff64a88b8eac2ceb46f8, + type: 3} + scale: {x: 1, y: 1} + offset: {x: 0, y: 0} + floats: + - name: _BumpScale + float: 1 + - name: _Cutoff + float: 0.5 + - name: _DetailNormalMapScale + float: 1 + - name: _DstBlend + float: 0 + - name: _GlossMapScale + float: 1 + - name: _Glossiness + float: 0.5 + - name: _GlossyReflections + float: 1 + - name: _Metallic + float: 0 + - name: _Mode + float: 0 + - name: _OcclusionStrength + float: 1 + - name: _Parallax + float: 0.005 + - name: _SmoothnessTextureChannel + float: 0 + - name: _SpecularHighlights + float: 1 + - name: _SrcBlend + float: 1 + - name: _UVSec + float: 0 + - name: _ZWrite + float: 1 + colors: + - name: _Color + color: {r: 1, g: 1, b: 1, a: 1} + - name: _EmissionColor + color: {r: 0, g: 0, b: 0, a: 1} + outputDescList: + - outputName: diffuse + identifier: diffuse + usageName: diffuse + channelStr: diffuse + label: Diffuse + usage: 0 + bImage: 1 + bNumerical: 0 + bLinear: 0 + - outputName: baseColor + identifier: basecolor + usageName: baseColor + channelStr: baseColor + label: Base Color + usage: 1 + bImage: 1 + bNumerical: 0 + bLinear: 0 + - outputName: normal + identifier: normal + usageName: normal + channelStr: normal + label: Normal + usage: 7 + bImage: 1 + bNumerical: 0 + bLinear: 1 + - outputName: specular + identifier: specular + usageName: specular + channelStr: specular + label: Specular + usage: 11 + bImage: 1 + bNumerical: 0 + bLinear: 0 + - outputName: glossiness + identifier: glossiness + usageName: glossiness + channelStr: glossiness + label: Glossiness + usage: 14 + bImage: 1 + bNumerical: 0 + bLinear: 1 + - outputName: roughness + identifier: roughness + usageName: roughness + channelStr: roughness + label: Roughness + usage: 15 + bImage: 1 + bNumerical: 0 + bLinear: 1 + - outputName: metallic + identifier: metallic + usageName: metallic + channelStr: metallic + label: Metallic + usage: 34 + bImage: 1 + bNumerical: 0 + bLinear: 1 + - outputName: ambientOcclusion + identifier: ambient_occlusion + usageName: ambientOcclusion + channelStr: ambientOcclusion + label: Ambient Occlusion + usage: 5 + bImage: 1 + bNumerical: 0 + bLinear: 1 + - outputName: height + identifier: height + usageName: height + channelStr: height + label: Height + usage: 9 + bImage: 1 + bNumerical: 0 + bLinear: 1 + texturePackingList: + - targetName: diffuse + components: + - sourceName: diffuse + from: 0 + to: 3 + - targetName: baseColor + components: + - sourceName: baseColor + from: 0 + to: 3 + - targetName: normal + components: + - sourceName: normal + from: 0 + to: 3 + - targetName: specular + components: + - sourceName: specular + from: 0 + to: 3 + - targetName: glossiness + components: + - sourceName: glossiness + from: 0 + to: 3 + - targetName: roughness + components: + - sourceName: roughness + from: 0 + to: 3 + - targetName: metallic + components: + - sourceName: smoothness + from: 0 + to: 3 + - targetName: ambientOcclusion + components: + - sourceName: ambientOcclusion + from: 0 + to: 3 + - targetName: height + components: + - sourceName: height + from: 0 + to: 3 + textureParameters: + - textureName: Car paint_glossiness + wrapMode: 0 + filterMode: 1 + aniso: 1 + - textureName: Car paint_diffuse + wrapMode: 0 + filterMode: 1 + aniso: 1 + - textureName: Car paint_baseColor + wrapMode: 0 + filterMode: 1 + aniso: 1 + - textureName: Car paint_normal + wrapMode: 0 + filterMode: 1 + aniso: 1 + - textureName: Car paint_specular + wrapMode: 0 + filterMode: 1 + aniso: 1 + - textureName: Car paint_roughness + wrapMode: 0 + filterMode: 1 + aniso: 1 + - textureName: Car paint_metallic + wrapMode: 0 + filterMode: 1 + aniso: 1 + - textureName: Car paint_ambientOcclusion + wrapMode: 0 + filterMode: 1 + aniso: 1 + - textureName: Car paint_height + wrapMode: 0 + filterMode: 1 + aniso: 1 + - textureName: Car paint - diffuse + wrapMode: 0 + filterMode: 1 + aniso: 1 + - textureName: Car paint - baseColor + wrapMode: 0 + filterMode: 1 + aniso: 1 + - textureName: Car paint - normal + wrapMode: 0 + filterMode: 1 + aniso: 1 + - textureName: Car paint - specular + wrapMode: 0 + filterMode: 1 + aniso: 1 + - textureName: Car paint - glossiness + wrapMode: 0 + filterMode: 1 + aniso: 1 + - textureName: Car paint - roughness + wrapMode: 0 + filterMode: 1 + aniso: 1 + - textureName: Car paint - metallic + wrapMode: 0 + filterMode: 1 + aniso: 1 + - textureName: Car paint - ambientOcclusion + wrapMode: 0 + filterMode: 1 + aniso: 1 + - textureName: Car paint - height + wrapMode: 0 + filterMode: 1 + aniso: 1 + colorSpaceList: [] + inputTextureMap: [] + targetSettingList: + - label: Default + bOverride: 0 + bLockRatio: 1 + textureWidth: 2048 + textureHeight: 2048 + textureFormatMode: 0 + normalCompressed: 0 + bGenerateOnLoad: 1 + material: {fileID: 3720744386649352057, guid: 504c7bfe0d50ff64a88b8eac2ceb46f8, + type: 3} + generatedTextures: + - {fileID: 5917659159057834157, guid: 504c7bfe0d50ff64a88b8eac2ceb46f8, type: 3} + - {fileID: 3068890721646206586, guid: 504c7bfe0d50ff64a88b8eac2ceb46f8, type: 3} + - {fileID: -3552914696322007609, guid: 504c7bfe0d50ff64a88b8eac2ceb46f8, type: 3} + - {fileID: -1242281561028671816, guid: 504c7bfe0d50ff64a88b8eac2ceb46f8, type: 3} + - {fileID: -1652887728991447519, guid: 504c7bfe0d50ff64a88b8eac2ceb46f8, type: 3} diff --git a/Assets/Materials/Substance/Metal/metal_car_paint white.sbsar b/Assets/Materials/Substance/Metal/metal_car_paint white.sbsar new file mode 100644 index 000000000..963310406 --- /dev/null +++ b/Assets/Materials/Substance/Metal/metal_car_paint white.sbsar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbee14b278a03ed59e1df8ecd6ba2b07ab7c2b2089e5e2bc3fad5673694a9f03 +size 14971 diff --git a/Assets/Materials/Substance/Metal/metal_car_paint.sbsar.meta b/Assets/Materials/Substance/Metal/metal_car_paint white.sbsar.meta similarity index 100% rename from Assets/Materials/Substance/Metal/metal_car_paint.sbsar.meta rename to Assets/Materials/Substance/Metal/metal_car_paint white.sbsar.meta diff --git a/Assets/Materials/UI/Map Gravity Lines.mat b/Assets/Materials/UI/Map Gravity Lines.mat index 093c4cf46..9a0d02de9 100644 --- a/Assets/Materials/UI/Map Gravity Lines.mat +++ b/Assets/Materials/UI/Map Gravity Lines.mat @@ -86,7 +86,7 @@ Material: - _Mode: 0 - _OcclusionStrength: 1 - _Parallax: 0.02 - - _Scale: 2.7152557 + - _Scale: 1.6680267 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 diff --git a/Assets/Materials/UI/Turret.mat b/Assets/Materials/UI/Turret.mat new file mode 100644 index 000000000..47e3459f4 --- /dev/null +++ b/Assets/Materials/UI/Turret.mat @@ -0,0 +1,101 @@ +%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: Turret + m_Shader: {fileID: 4800000, guid: f69be63d97f3ffe499bc8ad9f5a104c6, type: 3} + m_ShaderKeywords: _ALPHAPREMULTIPLY_ON + m_LightmapFlags: 0 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - ALWAYS + 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: 2800000, guid: f1647736355d8a14aa3444e46a012714, type: 3} + 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: + - _BlendOp: 0 + - _BumpScale: 1 + - _CameraFadingEnabled: 0 + - _CameraFarFadeDistance: 2 + - _CameraNearFadeDistance: 1 + - _ColorMode: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DistortionBlend: 0.5 + - _DistortionEnabled: 0 + - _DistortionStrength: 1 + - _DistortionStrengthScaled: 0 + - _DstBlend: 10 + - _EmissionEnabled: 0 + - _FlipbookMode: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _InvFade: 1 + - _LightingEnabled: 0 + - _Metallic: 0 + - _Mode: 3 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SoftParticlesEnabled: 0 + - _SoftParticlesFarFadeDistance: 1 + - _SoftParticlesNearFadeDistance: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 0 + m_Colors: + - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _ColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} + - _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5} + m_BuildTextureStacks: [] diff --git a/Assets/Materials/UI/Turret.mat.meta b/Assets/Materials/UI/Turret.mat.meta new file mode 100644 index 000000000..c8f98152e --- /dev/null +++ b/Assets/Materials/UI/Turret.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 397fd6d1d65c2c84bbd629fd9d4bc19a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Models/Turret.blend b/Assets/Models/Turret.blend index c5dd724c2..5100c2620 100644 --- a/Assets/Models/Turret.blend +++ b/Assets/Models/Turret.blend @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8de92b173431ec653b3e0aadaf758dff9aeb0b3586dcd43b641e138decd08006 -size 1903384 +oid sha256:1d64f60540ea577695ca50e6d4746d6dd7ac72db02d6f7d8b8e8e8f005f45959 +size 2015992 diff --git a/Assets/Models/Turret.blend.meta b/Assets/Models/Turret.blend.meta index 67f6a9894..449040393 100644 --- a/Assets/Models/Turret.blend.meta +++ b/Assets/Models/Turret.blend.meta @@ -69,7 +69,7 @@ ModelImporter: useFileScale: 1 tangentSpace: normalSmoothAngle: 60 - normalImportMode: 0 + normalImportMode: 1 tangentImportMode: 3 normalCalculationMode: 4 legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 diff --git a/Assets/Models/Turret.blend1 b/Assets/Models/Turret.blend1 index 37be8f911..e01cdb7d6 100644 Binary files a/Assets/Models/Turret.blend1 and b/Assets/Models/Turret.blend1 differ diff --git a/Assets/Models/Turret.fbx b/Assets/Models/Turret.fbx new file mode 100644 index 000000000..40a22de04 --- /dev/null +++ b/Assets/Models/Turret.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:343e2dc17751e3be2dbb490e418b5262c0912f31d49a30bff8066d20d9c8eb64 +size 364012 diff --git a/Assets/Models/Turret.fbx.meta b/Assets/Models/Turret.fbx.meta new file mode 100644 index 000000000..093eabaaf --- /dev/null +++ b/Assets/Models/Turret.fbx.meta @@ -0,0 +1,113 @@ +fileFormatVersion: 2 +guid: 33ad68f41d4b2fe4c9801f449debd3b6 +ModelImporter: + serializedVersion: 20101 + internalIDToNameTable: + - first: + 74: -5395469358196396232 + second: LD12_Scanner|LD12_Scanner2Action + - first: + 74: -339793421420189680 + second: LD12_Scanner|LD12_ScannerAction + - first: + 74: -1060864838660959178 + second: LD12_Scanner2|LD12_Scanner2Action + - first: + 74: 2014324191034718849 + second: LD12_Scanner2|LD12_ScannerAction + externalObjects: {} + materials: + materialImportMode: 1 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Projectile.cs b/Assets/Projectile.cs index 7fd18a09d..f1a0e2141 100644 --- a/Assets/Projectile.cs +++ b/Assets/Projectile.cs @@ -11,13 +11,16 @@ public class Projectile : MonoBehaviour public float Gravity; private bool _alive; + public Zone Zone { get; set; } + public Vector3 StartPosition { get; set; } public Vector3 Velocity { get; set; } public float Damage { get; set; } public DamageType DamageType { get; set; } public Entity SourceEntity { get; set; } - + public float Range { get; set; } + // Start is called before the first frame update void Start() { @@ -34,20 +37,25 @@ public class Projectile : MonoBehaviour { if (SourceEntity == null) return; - var position = transform.position; - Velocity += Vector3.up * (sign(Zone.GetHeight(float2(position.x,position.z)) - position.y) * Gravity * Time.deltaTime); - var ray = new Ray(position, Velocity); - if (Physics.Raycast(ray, out var hit, Velocity.magnitude, LayerMask.NameToLayer("Combat"))) - { - var hull = hit.collider.GetComponent(); - if (hull) - { - hull.SendHit(Damage, DamageType, SourceEntity, hit); - } - StartCoroutine(Kill()); - } if(_alive) + { + var position = transform.position; + Velocity += Vector3.up * (sign(Zone.GetHeight(float2(position.x,position.z)) - position.y) * Gravity * Time.deltaTime); + var ray = new Ray(position, Velocity); + if (Physics.Raycast(ray, out var hit, Velocity.magnitude, LayerMask.NameToLayer("Combat"))) + { + var hull = hit.collider.GetComponent(); + if (hull) + { + hull.SendHit(Damage, DamageType, SourceEntity, hit); + } + StartCoroutine(Kill()); + } + transform.position += Velocity; + if((transform.position - StartPosition).magnitude > Range) + StartCoroutine(Kill()); + } } IEnumerator Kill() diff --git a/Assets/ProjectileManager.cs b/Assets/ProjectileManager.cs index 83bc2ef61..da70e93cc 100644 --- a/Assets/ProjectileManager.cs +++ b/Assets/ProjectileManager.cs @@ -12,7 +12,8 @@ public class ProjectileManager : MonoBehaviour p.SourceEntity = source.Entity; var hp = source.Entity.Hardpoints[item.Position.x, item.Position.y]; var barrel = source.GetBarrel(hp); - p.transform.position = barrel.position; + p.Range = source.Entity.ItemManager.Evaluate(data.Range, item.EquippableItem, source.Entity); + p.StartPosition = p.transform.position = barrel.position; p.Velocity = barrel.forward * source.Entity.ItemManager.Evaluate(data.Velocity, item.EquippableItem, source.Entity); p.Damage = source.Entity.ItemManager.Evaluate(data.Damage, item.EquippableItem, source.Entity); p.DamageType = data.DamageType; diff --git a/Assets/Resources/Prefabs/Ships/Djinni.prefab b/Assets/Resources/Prefabs/Ships/Djinni.prefab index aee0d2819..b3f6f1fcf 100644 --- a/Assets/Resources/Prefabs/Ships/Djinni.prefab +++ b/Assets/Resources/Prefabs/Ships/Djinni.prefab @@ -7196,5 +7196,6 @@ MonoBehaviour: Target: {fileID: 0} YawMin: 0 YawMax: 0 - PitchMin: 15 - PitchMax: -45 + PitchMin: -45 + PitchMax: 15 + Speed: 15 diff --git a/Assets/Resources/Prefabs/Turrets/Turret.prefab b/Assets/Resources/Prefabs/Turrets/Turret.prefab new file mode 100644 index 000000000..95d6b4a97 --- /dev/null +++ b/Assets/Resources/Prefabs/Turrets/Turret.prefab @@ -0,0 +1,1266 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &252092834766144829 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8377448638104583804} + - component: {fileID: 7612603927487076180} + - component: {fileID: 3483230693202533876} + - component: {fileID: 667483273640189963} + - component: {fileID: 4456774205701546612} + m_Layer: 14 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8377448638104583804 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 252092834766144829} + m_LocalRotation: {x: 1, y: -0, z: -0, w: -0.00000008940697} + m_LocalPosition: {x: 0, y: 0, z: 7.23} + m_LocalScale: {x: 50, y: 50.000034, z: 50.000034} + m_Children: [] + m_Father: {fileID: 7279045006683137756} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!33 &7612603927487076180 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 252092834766144829} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &3483230693202533876 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 252092834766144829} + 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: 397fd6d1d65c2c84bbd629fd9d4bc19a, 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: 0 + 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!64 &667483273640189963 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 252092834766144829} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &4456774205701546612 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 252092834766144829} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 52538a3309c36fc4583c964a1c0b705f, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1540544894083512783 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8392758469276633946} + - component: {fileID: 6403286589338250947} + - component: {fileID: 2973799556959900949} + m_Layer: 0 + m_Name: LD12_Main.001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8392758469276633946 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1540544894083512783} + m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067} + m_LocalPosition: {x: 0, y: -1.9, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1727314640455870929} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &6403286589338250947 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1540544894083512783} + m_Mesh: {fileID: 2804577904970917418, guid: f143db2fec0aefa45b3255990a395382, type: 3} +--- !u!23 &2973799556959900949 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1540544894083512783} + 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: 3720744386649352057, guid: 504c7bfe0d50ff64a88b8eac2ceb46f8, type: 3} + - {fileID: 3720744386649352057, guid: b2bec4b400153d745b2915f1c43e5c96, type: 3} + - {fileID: 3720744386649352057, guid: b2bec4b400153d745b2915f1c43e5c96, type: 3} + - {fileID: 3720744386649352057, guid: 504c7bfe0d50ff64a88b8eac2ceb46f8, type: 3} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1727314640455870928 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1727314640455870929} + - component: {fileID: 1727314640455870930} + m_Layer: 0 + m_Name: Articulation Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1727314640455870929 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727314640455870928} + 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: 7671155440789524956} + - {fileID: 8392758469276633946} + - {fileID: 1727314641413589630} + - {fileID: 1727314641367161992} + m_Father: {fileID: 1727314642013213443} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1727314640455870930 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727314640455870928} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4a2c831a00e255547b4261897f5c0b81, type: 3} + m_Name: + m_EditorClassIdentifier: + Target: {fileID: 0} + YawMin: 0 + YawMax: 0 + PitchMin: -45 + PitchMax: 28 + Speed: 15 +--- !u!1 &1727314640817046611 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1727314640817046620} + m_Layer: 0 + m_Name: Hardpoints + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1727314640817046620 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727314640817046611} + 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: 1727314640956741321} + - {fileID: 1727314642268200747} + m_Father: {fileID: 6148628377977073562} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1727314640956741320 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1727314640956741321} + - component: {fileID: 1727314640956741322} + m_Layer: 0 + m_Name: Left Gun + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1727314640956741321 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727314640956741320} + 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: 1727314640817046620} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1727314640956741322 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727314640956741320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2b6f57d9fe9e78c438112332511e7b07, type: 3} + m_Name: + m_EditorClassIdentifier: + FiringPoint: + - {fileID: 1727314641413589630} +--- !u!1 &1727314641367161999 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1727314641367161992} + m_Layer: 0 + m_Name: Right Barrel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1727314641367161992 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727314641367161999} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.43, y: 0.096, z: 1.245} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1727314640455870929} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1727314641413589629 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1727314641413589630} + m_Layer: 0 + m_Name: Left Barrel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1727314641413589630 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727314641413589629} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.415, y: 0.126, z: 1.265} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1727314640455870929} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1727314641991746687 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1727314641991746680} + - component: {fileID: 1727314641991746681} + m_Layer: 0 + m_Name: Radiator Pivot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1727314641991746680 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727314641991746687} + 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: 1107077262217616032} + - {fileID: 1400495860060317977} + m_Father: {fileID: 6148628377977073562} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1727314641991746681 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727314641991746687} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cd72410ad11370d478bf52dc4afddc0c, type: 3} + m_Name: + m_EditorClassIdentifier: + Axis: {x: 0, y: 1, z: 0} + Speed: 7.5 +--- !u!1 &1727314642013213442 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1727314642013213443} + m_Layer: 0 + m_Name: Pitch Pivot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1727314642013213443 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727314642013213442} + m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0, z: 1.8999999} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1727314640455870929} + m_Father: {fileID: 7279045006683137756} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1727314642051522539 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1727314642051522548} + - component: {fileID: 1042551328614064086} + m_Layer: 0 + m_Name: Turret Yaw Pivot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1727314642051522548 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727314642051522539} + 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: 7279045006683137756} + m_Father: {fileID: 6148628377977073562} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1042551328614064086 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727314642051522539} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4a2c831a00e255547b4261897f5c0b81, type: 3} + m_Name: + m_EditorClassIdentifier: + Target: {fileID: 0} + YawMin: -720 + YawMax: 720 + PitchMin: 0 + PitchMax: 0 + Speed: 15 +--- !u!1 &1727314642268200746 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1727314642268200747} + - component: {fileID: 1727314642268200756} + m_Layer: 0 + m_Name: Right Gun + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1727314642268200747 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727314642268200746} + 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: 1727314640817046620} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1727314642268200756 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727314642268200746} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2b6f57d9fe9e78c438112332511e7b07, type: 3} + m_Name: + m_EditorClassIdentifier: + FiringPoint: + - {fileID: 1727314641367161992} +--- !u!1 &1796972107386253351 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3103618512529724952} + - component: {fileID: 5495307182897004020} + - component: {fileID: 587740871002326469} + - component: {fileID: 1796972107386253344} + m_Layer: 0 + m_Name: LD12_Scanner2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3103618512529724952 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1796972107386253351} + m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6148628377977073562} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5495307182897004020 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1796972107386253351} + m_Mesh: {fileID: 5313178652037130226, guid: f143db2fec0aefa45b3255990a395382, type: 3} +--- !u!23 &587740871002326469 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1796972107386253351} + 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: 3720744386649352057, guid: b2bec4b400153d745b2915f1c43e5c96, type: 3} + - {fileID: 3954565982357225544, guid: 53adf8e53222e6f4791d7bf2110fb70c, type: 3} + 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!114 &1796972107386253344 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1796972107386253351} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cd72410ad11370d478bf52dc4afddc0c, type: 3} + m_Name: + m_EditorClassIdentifier: + Axis: {x: 0, y: 0, z: 1} + Speed: -25 +--- !u!1 &2664341253667465538 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1107077262217616032} + - component: {fileID: 2664341253667465548} + - component: {fileID: 2664341253667465539} + m_Layer: 0 + m_Name: Cylinder.001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1107077262217616032 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2664341253667465538} + m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067} + m_LocalPosition: {x: 0.000017106533, y: 0.9793335, z: 0.00001692772} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1727314641991746680} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2664341253667465548 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2664341253667465538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eff043e6f0a5f834ebfbc7f750260ae0, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!64 &2664341253667465539 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2664341253667465538} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: -7387706064836869012, guid: f143db2fec0aefa45b3255990a395382, type: 3} +--- !u!1 &3028840165937219681 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7671155440789524956} + - component: {fileID: 3028840165937219682} + - component: {fileID: 3028840165937219683} + m_Layer: 0 + m_Name: Cube.001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7671155440789524956 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3028840165937219681} + m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067} + m_LocalPosition: {x: 0, y: -1.9, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1727314640455870929} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!64 &3028840165937219682 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3028840165937219681} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 4493585093827132993, guid: f143db2fec0aefa45b3255990a395382, type: 3} +--- !u!114 &3028840165937219683 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3028840165937219681} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eff043e6f0a5f834ebfbc7f750260ae0, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &3495863821383666329 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4055558357782281998} + - component: {fileID: 8944161893655398130} + - component: {fileID: 4818779000612417220} + m_Layer: 0 + m_Name: LD12_Main + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4055558357782281998 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3495863821383666329} + m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6148628377977073562} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8944161893655398130 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3495863821383666329} + m_Mesh: {fileID: 8015487029495216440, guid: f143db2fec0aefa45b3255990a395382, type: 3} +--- !u!23 &4818779000612417220 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3495863821383666329} + 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: 3720744386649352057, guid: b2bec4b400153d745b2915f1c43e5c96, type: 3} + - {fileID: 3720744386649352057, guid: 504c7bfe0d50ff64a88b8eac2ceb46f8, type: 3} + - {fileID: -741235592913766832, guid: 885e680924fc12c439a842a2142d4b78, type: 3} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &3679721456505528735 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1400495860060317977} + - component: {fileID: 3724182920659359263} + - component: {fileID: 8504342740407631773} + m_Layer: 0 + m_Name: LD12_Main.005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1400495860060317977 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3679721456505528735} + m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1727314641991746680} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3724182920659359263 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3679721456505528735} + m_Mesh: {fileID: -7350775625961525960, guid: f143db2fec0aefa45b3255990a395382, type: 3} +--- !u!23 &8504342740407631773 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3679721456505528735} + 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: f396635dc77c59c44ac85ae278a2e909, type: 2} + - {fileID: 3720744386649352057, guid: 504c7bfe0d50ff64a88b8eac2ceb46f8, type: 3} + - {fileID: 3720744386649352057, guid: b2bec4b400153d745b2915f1c43e5c96, type: 3} + - {fileID: -741235592913766832, guid: 885e680924fc12c439a842a2142d4b78, type: 3} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &5831785441666828417 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7279045006683137756} + - component: {fileID: 1365312991715299536} + - component: {fileID: 3686731686777660051} + m_Layer: 0 + m_Name: LD12_Main.004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7279045006683137756 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5831785441666828417} + m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 8377448638104583804} + - {fileID: 1727314642013213443} + m_Father: {fileID: 1727314642051522548} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1365312991715299536 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5831785441666828417} + m_Mesh: {fileID: -2334529448091913569, guid: f143db2fec0aefa45b3255990a395382, type: 3} +--- !u!23 &3686731686777660051 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5831785441666828417} + 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: 3720744386649352057, guid: 504c7bfe0d50ff64a88b8eac2ceb46f8, type: 3} + - {fileID: 3720744386649352057, guid: b2bec4b400153d745b2915f1c43e5c96, type: 3} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &6782280586133632288 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6148628377977073562} + - component: {fileID: 6782280586133632289} + m_Layer: 0 + m_Name: Turret + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6148628377977073562 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6782280586133632288} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: + - {fileID: 1073083876358738496} + - {fileID: 4055558357782281998} + - {fileID: 4698243474491765904} + - {fileID: 3103618512529724952} + - {fileID: 1727314642051522548} + - {fileID: 1727314641991746680} + - {fileID: 1727314640817046620} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6782280586133632289 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6782280586133632288} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 170aefb3b5cd0e444826f3561d38a962, type: 3} + m_Name: + m_EditorClassIdentifier: + HullColliders: + - {fileID: 6946734302097032818} + - {fileID: 2664341253667465548} + - {fileID: 3028840165937219683} + ThrusterHardpoints: [] + WeaponHardpoints: + - {fileID: 1727314640956741322} + - {fileID: 1727314642268200756} + ArticulationPoints: + - {fileID: 1042551328614064086} + - {fileID: 1727314640455870930} +--- !u!1 &6946734302097032817 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1073083876358738496} + - component: {fileID: 6946734302097032819} + - component: {fileID: 6946734302097032818} + m_Layer: 0 + m_Name: Body Collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1073083876358738496 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6946734302097032817} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: 1.4210855e-14, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6148628377977073562} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!64 &6946734302097032819 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6946734302097032817} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 2534964839176971238, guid: f143db2fec0aefa45b3255990a395382, type: 3} +--- !u!114 &6946734302097032818 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6946734302097032817} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eff043e6f0a5f834ebfbc7f750260ae0, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &8304154918997209427 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4698243474491765904} + - component: {fileID: 645052713255078889} + - component: {fileID: 628898948874959010} + - component: {fileID: 8304154918997209438} + - component: {fileID: 8304154918997209437} + - component: {fileID: 8304154918997209436} + m_Layer: 0 + m_Name: LD12_Scanner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4698243474491765904 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8304154918997209427} + m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6148628377977073562} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &645052713255078889 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8304154918997209427} + m_Mesh: {fileID: 3950215576658255144, guid: f143db2fec0aefa45b3255990a395382, type: 3} +--- !u!23 &628898948874959010 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8304154918997209427} + 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: 3954565982357225544, guid: 53adf8e53222e6f4791d7bf2110fb70c, type: 3} + - {fileID: 3720744386649352057, guid: b2bec4b400153d745b2915f1c43e5c96, type: 3} + - {fileID: 381320166465554420, guid: f143db2fec0aefa45b3255990a395382, type: 3} + 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!114 &8304154918997209438 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8304154918997209427} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cd72410ad11370d478bf52dc4afddc0c, type: 3} + m_Name: + m_EditorClassIdentifier: + Axis: {x: 0, y: 0, z: 1} + Speed: 15 +--- !u!65 &8304154918997209437 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8304154918997209427} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 0.16, y: 2.273619, z: 0.32} + m_Center: {x: 0, y: 0, z: 0.08} +--- !u!114 &8304154918997209436 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8304154918997209427} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eff043e6f0a5f834ebfbc7f750260ae0, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Resources/Prefabs/Turrets/Turret.prefab.meta b/Assets/Resources/Prefabs/Turrets/Turret.prefab.meta new file mode 100644 index 000000000..c520a9c25 --- /dev/null +++ b/Assets/Resources/Prefabs/Turrets/Turret.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8ffa1560728d1e848b6553d85057a511 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Prefabs/Weapons/Bullet Manager.prefab b/Assets/Resources/Prefabs/Weapons/Bullet Manager.prefab index 31fc23e99..0f258972d 100644 --- a/Assets/Resources/Prefabs/Weapons/Bullet Manager.prefab +++ b/Assets/Resources/Prefabs/Weapons/Bullet Manager.prefab @@ -86,7 +86,7 @@ TrailRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 - m_Time: 2 + m_Time: 0.1 m_Parameters: serializedVersion: 3 widthMultiplier: 1 diff --git a/Assets/Resources/Sprites/Attribution.txt b/Assets/Resources/Sprites/Attribution.txt index 9b440cd9a..6d2664025 100644 --- a/Assets/Resources/Sprites/Attribution.txt +++ b/Assets/Resources/Sprites/Attribution.txt @@ -49,6 +49,7 @@ Infinity By ProSymbols Box by Rajive storage by Gajah Mada Studio Tank by Creative Stall +Satellite by Amelia Other diff --git a/Assets/Resources/Sprites/Icons/Stroked/Satellite.png b/Assets/Resources/Sprites/Icons/Stroked/Satellite.png new file mode 100644 index 000000000..a3f490b97 --- /dev/null +++ b/Assets/Resources/Sprites/Icons/Stroked/Satellite.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c7935515e57b3f23ca33e878f656146ae9b069cd4cb37976e06b12d7eb40102 +size 18647 diff --git a/Assets/Resources/Sprites/Icons/Stroked/Satellite.png.meta b/Assets/Resources/Sprites/Icons/Stroked/Satellite.png.meta new file mode 100644 index 000000000..63f070459 --- /dev/null +++ b/Assets/Resources/Sprites/Icons/Stroked/Satellite.png.meta @@ -0,0 +1,118 @@ +fileFormatVersion: 2 +guid: f1647736355d8a14aa3444e46a012714 +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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 256 + 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: 256 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 256 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Rotate.cs b/Assets/Rotate.cs new file mode 100644 index 000000000..1e821a792 --- /dev/null +++ b/Assets/Rotate.cs @@ -0,0 +1,15 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Rotate : MonoBehaviour +{ + public Vector3 Axis; + + public float Speed; + + void Update() + { + transform.localRotation *= Quaternion.AngleAxis(Speed * Time.deltaTime, Axis); + } +} diff --git a/Assets/Scripts/ServerShared/Agents/Aim.cs.meta b/Assets/Rotate.cs.meta similarity index 83% rename from Assets/Scripts/ServerShared/Agents/Aim.cs.meta rename to Assets/Rotate.cs.meta index ed9441448..8cac01e3a 100644 --- a/Assets/Scripts/ServerShared/Agents/Aim.cs.meta +++ b/Assets/Rotate.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4daff8784b3444a4ab5466da3368cd7a +guid: cd72410ad11370d478bf52dc4afddc0c MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Scenes/ARPG.unity b/Assets/Scenes/ARPG.unity index 34cc2566c..b2f70b04e 100644 --- a/Assets/Scenes/ARPG.unity +++ b/Assets/Scenes/ARPG.unity @@ -4586,10 +4586,10 @@ RectTransform: m_Father: {fileID: 947321578} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 129.725, y: 0} - m_SizeDelta: {x: 36.930023, y: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &608624600 MonoBehaviour: @@ -4629,7 +4629,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &620555923 RectTransform: m_ObjectHideFlags: 0 @@ -4650,7 +4650,7 @@ RectTransform: m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} m_AnchoredPosition: {x: 0, y: -35.87} - m_SizeDelta: {x: 285.7, y: 90.91} + m_SizeDelta: {x: 285.7, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &620555924 MonoBehaviour: @@ -4690,9 +4690,10 @@ MonoBehaviour: type: 3} IncrementField: {fileID: 5486709585343280439, guid: 9c14c92a1a08b0a4fb4f6aa6f8504082, type: 3} - Content: {fileID: 0} + Content: {fileID: 620555923} SelectedChild: {fileID: 0} CancelClickCatcher: {fileID: 1420548305} + ButtonGroup: {fileID: 947321577} Cancel: {fileID: 1176624628} Confirm: {fileID: 843760693} --- !u!114 &620555925 @@ -5691,10 +5692,10 @@ RectTransform: m_Father: {fileID: 620555923} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 142.85, y: -21.455} - m_SizeDelta: {x: 269.7, y: 26.91} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &738229278 MonoBehaviour: @@ -7798,10 +7799,10 @@ RectTransform: m_Father: {fileID: 620555923} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 142.85, y: -66.91} - m_SizeDelta: {x: 269.7, y: 32} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &947321579 MonoBehaviour: @@ -10975,27 +10976,27 @@ PrefabInstance: - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchoredPosition.x - value: 55.629997 + value: 55.675 objectReference: {fileID: 0} - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchoredPosition.y - value: -16 + value: 0 objectReference: {fileID: 0} - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_SizeDelta.x - value: 47.259995 + value: 0 objectReference: {fileID: 0} - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} @@ -11100,17 +11101,17 @@ PrefabInstance: - target: {fileID: 2297648055057363568, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchoredPosition.x - value: 55.629997 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2297648055057363568, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchoredPosition.y - value: -16 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2297648055057363568, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_SizeDelta.x - value: 111.259995 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2297648055057363568, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} @@ -11125,7 +11126,7 @@ PrefabInstance: - target: {fileID: 2297648055057363568, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2297648055057363568, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} @@ -11135,7 +11136,7 @@ PrefabInstance: - target: {fileID: 2297648055057363568, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2297648055057363568, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} @@ -11150,22 +11151,22 @@ PrefabInstance: - target: {fileID: 3873577224371502733, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 3873577224371502733, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 3873577224371502733, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchoredPosition.y - value: -16 + value: 0 objectReference: {fileID: 0} - target: {fileID: 3873577224371502733, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_SizeDelta.x - value: 111.259995 + value: 0 objectReference: {fileID: 0} - target: {fileID: 3873577224371502733, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} @@ -11175,7 +11176,7 @@ PrefabInstance: - target: {fileID: 3873577224371502733, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchoredPosition.x - value: 55.629997 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4710256612221957410, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} @@ -11532,27 +11533,27 @@ PrefabInstance: - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchoredPosition.x - value: 60.754997 + value: 60.98 objectReference: {fileID: 0} - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchoredPosition.y - value: -16 + value: 0 objectReference: {fileID: 0} - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_SizeDelta.x - value: 57.509995 + value: 0 objectReference: {fileID: 0} - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} @@ -11652,17 +11653,17 @@ PrefabInstance: - target: {fileID: 2297648055057363568, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchoredPosition.x - value: 208.945 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2297648055057363568, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchoredPosition.y - value: -16 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2297648055057363568, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_SizeDelta.x - value: 121.509995 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2297648055057363568, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} @@ -11677,7 +11678,7 @@ PrefabInstance: - target: {fileID: 2297648055057363568, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2297648055057363568, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} @@ -11687,7 +11688,7 @@ PrefabInstance: - target: {fileID: 2297648055057363568, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2297648055057363568, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} @@ -11702,22 +11703,22 @@ PrefabInstance: - target: {fileID: 3873577224371502733, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 3873577224371502733, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 3873577224371502733, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchoredPosition.y - value: -16 + value: 0 objectReference: {fileID: 0} - target: {fileID: 3873577224371502733, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_SizeDelta.x - value: 121.509995 + value: 0 objectReference: {fileID: 0} - target: {fileID: 3873577224371502733, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} @@ -11727,7 +11728,7 @@ PrefabInstance: - target: {fileID: 3873577224371502733, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchoredPosition.x - value: 60.754997 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4710256612221957410, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} @@ -13721,6 +13722,7 @@ MonoBehaviour: PropertiesPanel: {fileID: 7399108074413661592} GameManager: {fileID: 1009503729} DragParent: {fileID: 245842385} + Dialog: {fileID: 620555924} --- !u!1 &2011788088 GameObject: m_ObjectHideFlags: 0 @@ -15804,7 +15806,8 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 45f0e5e2648ab8a40ba0d8e384188776, type: 3} + m_Sprite: {fileID: -134468233401069099, guid: ef4a863cd35ba454cb1d7e37e6388abe, + type: 3} m_Type: 1 m_PreserveAspect: 0 m_FillCenter: 1 @@ -15813,7 +15816,7 @@ MonoBehaviour: m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 + m_PixelsPerUnitMultiplier: 1.5 --- !u!222 &1605725322975872061 CanvasRenderer: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/ARPG_Profiles/Postprocessing Profile.asset b/Assets/Scenes/ARPG_Profiles/Postprocessing Profile.asset index 77ed0213c..22e7dcabd 100644 --- a/Assets/Scenes/ARPG_Profiles/Postprocessing Profile.asset +++ b/Assets/Scenes/ARPG_Profiles/Postprocessing Profile.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b083972fbaaaf785869935ee1fc820ca87e08d4c99263118f85d49bd31c8d387 -size 25032 +oid sha256:1b1e1a6045f2efed30105595997508ab05361970e976edc40f3db6a1f93b7cd2 +size 25029 diff --git a/Assets/Scripts/ActionGameManager.cs b/Assets/Scripts/ActionGameManager.cs index 80783f68b..9a9e4a471 100644 --- a/Assets/Scripts/ActionGameManager.cs +++ b/Assets/Scripts/ActionGameManager.cs @@ -110,7 +110,7 @@ public class ActionGameManager : MonoBehaviour _input.Player.Disable(); GameplayUI.SetActive(false); Menu.ShowTab(MenuTab.Map); - MenuMap.Position = _currentShip.Position; + MenuMap.Position = _currentShip.Position.xz; }; _input.Global.Inventory.performed += context => @@ -354,10 +354,10 @@ public class ActionGameManager : MonoBehaviour var stationType = ItemData.GetAll().First(x=>x.HullType==HullType.Station); var stationHull = ItemManager.CreateInstance(stationType, 0, 1) as EquippableItem; var stationParent = Zone.PlanetInstances.Values.OrderByDescending(p => p.BodyData.Mass.Value).ElementAt(3); - var parentOrbit = stationParent.Orbit.Data.ID; - var parentPos = Zone.GetOrbitPosition(parentOrbit); - var stationPos = parentPos + ItemManager.Random.NextFloat2Direction() * stationParent.GravityWellRadius.Value * .1f; - var stationOrbit = Zone.CreateOrbit(parentOrbit, stationPos); + var stationParentOrbit = stationParent.Orbit.Data.ID; + var stationParentPos = Zone.GetOrbitPosition(stationParentOrbit); + var stationPos = stationParentPos + ItemManager.Random.NextFloat2Direction() * stationParent.GravityWellRadius.Value * .1f; + var stationOrbit = Zone.CreateOrbit(stationParentOrbit, stationPos); var station = new OrbitalEntity(ItemManager, Zone, stationHull, stationOrbit.ID); Zone.Entities.Add(station); var dockingBayData = ItemData.GetAll().First(); @@ -365,6 +365,34 @@ public class ActionGameManager : MonoBehaviour station.TryEquip(dockingBay); station.Active = true; + var reactorData = ItemData.GetAll().First(x => x.HardpointType == HardpointType.Reactor && x.Shape.Height == 2); + var autocannonData = ItemData.GetAll().First(x => x.Name == "Autocannon"); + var ammoData = ItemData.GetAll().First(x => x.Name == "AC2 Ammo"); + + var turretType = ItemData.GetAll().First(x=>x.HullType==HullType.Turret); + var turretHull = ItemManager.CreateInstance(turretType, 0, 1) as EquippableItem; + var turretParent = Zone.PlanetInstances.Values.OrderByDescending(p => p.BodyData.Mass.Value).ElementAt(5); + var turretParentOrbit = turretParent.Orbit.Data.ID; + var turretParentPos = Zone.GetOrbitPosition(turretParentOrbit); + var turretPos = turretParentPos + ItemManager.Random.NextFloat2Direction() * turretParent.GravityWellRadius.Value * .05f; + var turretOrbit = Zone.CreateOrbit(turretParentOrbit, turretPos); + var turret = new OrbitalEntity(ItemManager, Zone, turretHull, turretOrbit.ID); + turret.TryEquip(ItemManager.CreateInstance(reactorData, .5f, 1) as EquippableItem); + + var controlModuleData = ItemData.GetAll().First(x => x.Name == "Murder Module"); + turret.TryEquip(ItemManager.CreateInstance(controlModuleData, .5f, 1) as EquippableItem); + + turret.TryEquip(ItemManager.CreateInstance(autocannonData, .5f, 1) as EquippableItem); + turret.TryEquip(ItemManager.CreateInstance(autocannonData, .5f, 1) as EquippableItem); + + var cargo1Data = ItemData.GetAll().First(x => x.Name == "Cargo Bay 1x1"); + var cargo1 = ItemManager.CreateInstance(cargo1Data, .5f, 1); + turret.TryEquip(cargo1 as EquippableItem); + + turret.CargoBays.First().TryStore(ItemManager.CreateInstance(ammoData, 400)); + turret.Active = true; + Zone.Entities.Add(turret); + var hullType = ItemData.GetAll().First(x=>x.HullType==HullType.Ship); var shipHull = ItemManager.CreateInstance(hullType, 0, 1) as EquippableItem; var ship = new Ship(ItemManager, Zone, shipHull); @@ -378,21 +406,18 @@ public class ActionGameManager : MonoBehaviour //dockingCargo.TryStore(ItemManager.CreateInstance(thrusterData, .5f, 1)); } - var reactorData = ItemData.GetAll().First(x => x.HardpointType == HardpointType.Reactor && x.Shape.Height == 2); ship.TryEquip(ItemManager.CreateInstance(reactorData, .5f, 1) as EquippableItem); var cockpitData = ItemData.GetAll().First(x => x.Behaviors.Any(b=>b is CockpitData)); ship.TryEquip(ItemManager.CreateInstance(cockpitData, .5f, 1) as EquippableItem); - var autocannonData = ItemData.GetAll().First(x => x.Name == "Autocannon"); ship.TryEquip(ItemManager.CreateInstance(autocannonData, .5f, 1) as EquippableItem); ship.TryEquip(ItemManager.CreateInstance(autocannonData, .5f, 1) as EquippableItem); var cargoData = ItemData.GetAll().First(x => x.Name == "Cargo Bay 4x4"); ship.TryEquip(ItemManager.CreateInstance(cargoData, .5f, 1) as EquippableItem); - var ammoData = ItemData.GetAll().First(x => x.Name == "AC2 Ammo"); - ship.CargoBays.First().TryStore(ItemManager.CreateInstance(ammoData, 100)); + ship.CargoBays.First().TryStore(ItemManager.CreateInstance(ammoData, 200)); //dockingCargo.TryStore(ItemManager.CreateInstance(reactorData, .5f, 1)); Dock(); @@ -413,7 +438,7 @@ public class ActionGameManager : MonoBehaviour if (_currentShip.Parent != null) return; foreach (var entity in Zone.Entities.ToArray()) { - if (lengthsq(entity.Position - _currentShip.Position) < + if (lengthsq(entity.Position.xz - _currentShip.Position.xz) < Settings.GameplaySettings.DockingDistance * Settings.GameplaySettings.DockingDistance) { var bay = entity.TryDock(_currentShip); diff --git a/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableBeginDragTrigger.cs b/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableBeginDragTrigger.cs index fefc213b2..4f3d3e624 100644 --- a/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableBeginDragTrigger.cs +++ b/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableBeginDragTrigger.cs @@ -22,6 +22,11 @@ namespace UniRx.Triggers return onBeginDrag ?? (onBeginDrag = new Subject()); } + private void OnDisable() + { + onBeginDrag = null; + } + protected override void RaiseOnCompletedOnDestroy() { if (onBeginDrag != null) diff --git a/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableDragTrigger.cs b/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableDragTrigger.cs index 6dff39f2a..c1f4e1d59 100644 --- a/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableDragTrigger.cs +++ b/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableDragTrigger.cs @@ -22,6 +22,11 @@ namespace UniRx.Triggers return onDrag ?? (onDrag = new Subject()); } + private void OnDisable() + { + onDrag = null; + } + protected override void RaiseOnCompletedOnDestroy() { if (onDrag != null) diff --git a/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableEndDragTrigger.cs b/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableEndDragTrigger.cs index 8d68135fb..202ce365c 100644 --- a/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableEndDragTrigger.cs +++ b/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableEndDragTrigger.cs @@ -22,6 +22,11 @@ namespace UniRx.Triggers return onEndDrag ?? (onEndDrag = new Subject()); } + private void OnDisable() + { + onEndDrag = null; + } + protected override void RaiseOnCompletedOnDestroy() { if (onEndDrag != null) diff --git a/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerClickTrigger.cs b/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerClickTrigger.cs index ae4c685f2..e5236e927 100644 --- a/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerClickTrigger.cs +++ b/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerClickTrigger.cs @@ -22,6 +22,11 @@ namespace UniRx.Triggers return onPointerClick ?? (onPointerClick = new Subject()); } + private void OnDisable() + { + onPointerClick = null; + } + protected override void RaiseOnCompletedOnDestroy() { if (onPointerClick != null) diff --git a/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerEnterTrigger.cs b/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerEnterTrigger.cs index 615a83c17..31b390523 100644 --- a/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerEnterTrigger.cs +++ b/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerEnterTrigger.cs @@ -22,6 +22,11 @@ namespace UniRx.Triggers return onPointerEnter ?? (onPointerEnter = new Subject()); } + private void OnDisable() + { + onPointerEnter = null; + } + protected override void RaiseOnCompletedOnDestroy() { if (onPointerEnter != null) diff --git a/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerExitTrigger.cs b/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerExitTrigger.cs index 90d904576..0d3536665 100644 --- a/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerExitTrigger.cs +++ b/Assets/Scripts/NIH/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerExitTrigger.cs @@ -22,6 +22,11 @@ namespace UniRx.Triggers return onPointerExit ?? (onPointerExit = new Subject()); } + private void OnDisable() + { + onPointerExit = null; + } + protected override void RaiseOnCompletedOnDestroy() { if (onPointerExit != null) diff --git a/Assets/Scripts/Sector Display/SectorRenderer.cs b/Assets/Scripts/Sector Display/SectorRenderer.cs index c9cd72399..1eaca05db 100644 --- a/Assets/Scripts/Sector Display/SectorRenderer.cs +++ b/Assets/Scripts/Sector Display/SectorRenderer.cs @@ -426,34 +426,25 @@ public class SectorRenderer : MonoBehaviour foreach (var entity in EntityInstances) { - var hullData = ItemManager.GetData(entity.Key.Hull) as HullData; - if(entity.Key is Ship ship) + if(entity.Value is ShipInstance shipInstance) { - var shipInstance = entity.Value as ShipInstance; - var normal = _zone.GetNormal(ship.Position); - var f = new float2(normal.x, normal.z); - var fl = lengthsq(f); - if (fl > .001) - { - var fa = 1 / (1 - fl) - 1; - entity.Key.Velocity += normalize(f) * Settings.PlanetSettings.GravityStrength * fa; - } - - //Debug.Log($"Normal: {normal}"); - var shipRight = ship.Direction.Rotate(ItemRotation.Clockwise); - var forward = Vector3.Cross(new Vector3(shipRight.x, 0, shipRight.y), normal); - entity.Value.Transform.rotation = Quaternion.LookRotation(forward, normal); for (int i = 0; i < shipInstance.Thrusters.Length; i++) { var emissionModule = shipInstance.ThrusterParticles[i].emission; emissionModule.rateOverTimeMultiplier = shipInstance.ThrusterBaseEmission[i] * shipInstance.Thrusters[i].Axis; } + + entity.Value.Transform.rotation = ((Ship) entity.Key).Rotation; + } + + foreach (var x in entity.Value.Barrels) + { + entity.Key.HardpointTransforms[x.Key] = (x.Value[0].position, x.Value[0].forward); } entity.Value.LookAtPoint.position = entity.Value.Transform.position + (Vector3) entity.Key.LookDirection * (entity.Key.Target != null ? (EntityInstances[entity.Key.Target].Transform.position - entity.Value.Transform.position).magnitude : 100); - var h = _zone.GetHeight(entity.Key.Position); - entity.Value.Transform.position = new Vector3(entity.Key.Position.x, h + hullData.GridOffset, entity.Key.Position.y); + entity.Value.Transform.position = entity.Key.Position; } var fogPos = FogCameraParent.position; diff --git a/Assets/Scripts/ServerShared/Agents/Aim.cs b/Assets/Scripts/ServerShared/Agents/Aim.cs deleted file mode 100644 index 42b5d9b3a..000000000 --- a/Assets/Scripts/ServerShared/Agents/Aim.cs +++ /dev/null @@ -1,34 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ - -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -public class Aim : AgentBehavior -{ - public float2 Objective; - - private Thruster _thrust; - private Turning _turning; - private VelocityLimit _velocityLimit; - - public Aim(ItemManager context, Entity entity, ControllerData controllerData) : base(context, entity, controllerData) - { - _velocityLimit = Entity.GetBehaviors().FirstOrDefault(); - _thrust = Entity.GetBehavior(); - _turning = Entity.GetBehavior(); - } - public override void Update(float delta) - { - if (_thrust != null && _turning != null) - { - float2 diff = Objective - Entity.Position; - _turning.Axis = TurningInput(diff); - _thrust.Axis = 0; - } - } -} diff --git a/Assets/Scripts/ServerShared/Agents/Locomotion.cs b/Assets/Scripts/ServerShared/Agents/Locomotion.cs index a90f26717..7387a0299 100644 --- a/Assets/Scripts/ServerShared/Agents/Locomotion.cs +++ b/Assets/Scripts/ServerShared/Agents/Locomotion.cs @@ -14,45 +14,45 @@ public class Locomotion : AgentBehavior public float2 Objective; private const float TangentSensitivity = 2; - private Thruster _thrust; - private Turning _turning; private VelocityLimit _velocityLimit; + private Thruster[] _thrusters; + private float _thrust; public Locomotion(ItemManager context, Entity entity, ControllerData controllerData) : base(context, entity, controllerData) { - _velocityLimit = Entity.GetBehaviors().FirstOrDefault(); - _thrust = Entity.GetBehavior(); - _turning = Entity.GetBehavior(); + _velocityLimit = Entity.GetBehavior(); + _thrusters = entity.GetBehaviors() + .Where(t => t.Item.EquippableItem.Rotation == ItemRotation.Reversed) + .ToArray(); + _thrust = _thrusters.Sum(t => t.Thrust); } public override void Update(float delta) { - if (_thrust != null && _turning != null) - { - float2 diff = Objective - Entity.Position; - - // We want to go top speed in the direction of our target - var topSpeed = _velocityLimit?.Limit ?? 1000; - float2 desiredVelocity = normalize(diff) * topSpeed; - - var accelerationTime = length(desiredVelocity - Entity.Velocity) / (_thrust.Thrust / Entity.Mass); - var accelerationDistance = accelerationTime * length((desiredVelocity + Entity.Velocity) / 2); + var diff = Objective - Entity.Position.xz; + + // We want to go top speed in the direction of our target + var topSpeed = _velocityLimit?.Limit ?? 1000; + float2 desiredVelocity = normalize(diff) * topSpeed; + + var accelerationTime = length(desiredVelocity - Entity.Velocity) / (_thrust / Entity.Mass); + var accelerationDistance = accelerationTime * length((desiredVelocity + Entity.Velocity) / 2); - // We do not have enough space to get to full speed, use approximate maneuvering - if (accelerationDistance > length(diff)) - { - float2 tangential = Entity.Velocity - dot(normalize(diff), normalize(Entity.Velocity)) * Entity.Velocity; - float2 adjustedDirection = normalize(diff) - tangential * TangentSensitivity; - _turning.Axis = TurningInput(adjustedDirection); - _thrust.Axis = 1; - } - // We have plenty of space, use exact maneuvering - else - { - var deltaV = desiredVelocity - Entity.Velocity; - _turning.Axis = TurningInput(deltaV); - _thrust.Axis = ThrustInput(deltaV); - } - } + // We do not have enough space to get to full speed, use approximate maneuvering + // if (accelerationDistance > length(diff)) + // { + // float2 tangential = Entity.Velocity - dot(normalize(diff), normalize(Entity.Velocity)) * Entity.Velocity; + // float2 adjustedDirection = normalize(diff) - tangential * TangentSensitivity; + // + // _turning.Axis = TurningInput(adjustedDirection); + // _thrust.Axis = 1; + // } + // // We have plenty of space, use exact maneuvering + // else + // { + // var deltaV = desiredVelocity - Entity.Velocity; + // _turning.Axis = TurningInput(deltaV); + // _thrust.Axis = ThrustInput(deltaV); + // } } } diff --git a/Assets/Scripts/ServerShared/Behaviors/Behaviors.cs b/Assets/Scripts/ServerShared/Behaviors/Behaviors.cs index 348e93080..7b7c95179 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Behaviors.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Behaviors.cs @@ -117,6 +117,7 @@ public abstract class PersistentBehaviorData Union(31, typeof(CapacitorData)), Union(32, typeof(CockpitData)), Union(33, typeof(HeatsinkData)), + Union(34, typeof(TurretControllerData)), JsonConverter(typeof(JsonKnownTypesConverter)), JsonObject(MemberSerialization.OptIn)] public abstract class BehaviorData { diff --git a/Assets/Scripts/ServerShared/Behaviors/Controller.cs b/Assets/Scripts/ServerShared/Behaviors/Controller.cs index 554362222..b425c870d 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Controller.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Controller.cs @@ -44,7 +44,6 @@ public abstract class ControllerBase : IBehavior, IController, IInitializa protected Locomotion Locomotion; protected VelocityMatch VelocityMatch; - protected Aim Aim; protected Func TargetPosition; protected Func TargetVelocity; protected bool MatchVelocity; @@ -80,7 +79,6 @@ public abstract class ControllerBase : IBehavior, IController, IInitializa { Locomotion = new Locomotion(ItemManager, Entity, _controllerData); VelocityMatch = new VelocityMatch(ItemManager, Entity, _controllerData); - Aim = new Aim(ItemManager, Entity, _controllerData); } public void Initialize() @@ -128,7 +126,7 @@ public abstract class ControllerBase : IBehavior, IController, IInitializa Entity.RemoveParent(); var targetPosition = TargetPosition(); - var distance = length(targetPosition - Entity.Position); + var distance = length(targetPosition - Entity.Position.xz); if (MatchVelocity) { var targetVelocity = TargetVelocity(); @@ -203,7 +201,7 @@ public abstract class ControllerBase : IBehavior, IController, IInitializa public void MoveTo(Entity entity, bool matchVelocity = true, Action onFinish = null) { - TargetPosition = () => entity.Position; + TargetPosition = () => entity.Position.xz; TargetVelocity = () => entity.Velocity; MatchVelocity = matchVelocity; _movementPhase = MovementPhase.Locomotion; diff --git a/Assets/Scripts/ServerShared/Behaviors/MiningController.cs b/Assets/Scripts/ServerShared/Behaviors/MiningController.cs index be4af8b81..95af4a3d8 100644 --- a/Assets/Scripts/ServerShared/Behaviors/MiningController.cs +++ b/Assets/Scripts/ServerShared/Behaviors/MiningController.cs @@ -116,7 +116,7 @@ public class MiningController : ControllerBase, IBehavior, IPersistentBe private void NextAsteroid() { - _asteroid = Zone.NearestAsteroid(Task.Asteroids, Entity.Position); + _asteroid = Zone.NearestAsteroid(Task.Asteroids, Entity.Position.xz); Entity.SetMessage("Selecting new asteroid."); } diff --git a/Assets/Scripts/ServerShared/Behaviors/MiningTool.cs b/Assets/Scripts/ServerShared/Behaviors/MiningTool.cs index 36f031b8f..b82a605b7 100644 --- a/Assets/Scripts/ServerShared/Behaviors/MiningTool.cs +++ b/Assets/Scripts/ServerShared/Behaviors/MiningTool.cs @@ -58,7 +58,7 @@ public class MiningTool : IBehavior var asteroidTransform = Entity.Zone.GetAsteroidTransform(AsteroidBelt, Asteroid); if (AsteroidBelt != Guid.Empty && Entity.Zone.AsteroidExists(AsteroidBelt, Asteroid) && - length(Entity.Position - asteroidTransform.xy) - asteroidTransform.w < Range) + length(Entity.Position.xz - asteroidTransform.xz) - asteroidTransform.w < Range) { Entity.Zone.MineAsteroid( Entity, diff --git a/Assets/Scripts/ServerShared/Behaviors/PatrolController.cs b/Assets/Scripts/ServerShared/Behaviors/PatrolController.cs index f7b04af1a..d91457e89 100644 --- a/Assets/Scripts/ServerShared/Behaviors/PatrolController.cs +++ b/Assets/Scripts/ServerShared/Behaviors/PatrolController.cs @@ -50,7 +50,7 @@ public class PatrolController : IBehavior, IInitializableBehavior _locomotion.Objective = Entity.Zone.GetOrbitPosition(_targetOrbit); _locomotion.Update(delta); - if(length(Entity.Position - _locomotion.Objective) < _data.TargetDistance) + if(length(Entity.Position.xz - _locomotion.Objective) < _data.TargetDistance) RandomTarget(); return true; diff --git a/Assets/Scripts/ServerShared/Behaviors/ResourceScanner.cs b/Assets/Scripts/ServerShared/Behaviors/ResourceScanner.cs index 657bd14a0..bf668bab0 100644 --- a/Assets/Scripts/ServerShared/Behaviors/ResourceScanner.cs +++ b/Assets/Scripts/ServerShared/Behaviors/ResourceScanner.cs @@ -74,7 +74,7 @@ public class ResourceScanner : IBehavior, IAlwaysUpdatedBehavior { if(Asteroid > -1 && Asteroid < beltData.Asteroids.Length && - length(Entity.Position - Entity.Zone.GetAsteroidTransform(ScanTarget, Asteroid).xy) < Range) + length(Entity.Position.xz - Entity.Zone.GetAsteroidTransform(ScanTarget, Asteroid).xy) < Range) { _scanTime += delta; if (_scanTime > ScanDuration) @@ -88,7 +88,7 @@ public class ResourceScanner : IBehavior, IAlwaysUpdatedBehavior } else { - if(length(Entity.Position - Entity.Zone.GetOrbitPosition(planetData.Orbit)) < Range) + if(length(Entity.Position.xz - Entity.Zone.GetOrbitPosition(planetData.Orbit)) < Range) { _scanTime += delta; if (_scanTime > ScanDuration) diff --git a/Assets/Scripts/ServerShared/Behaviors/SurveyController.cs b/Assets/Scripts/ServerShared/Behaviors/SurveyController.cs index b6e413391..235525d4a 100644 --- a/Assets/Scripts/ServerShared/Behaviors/SurveyController.cs +++ b/Assets/Scripts/ServerShared/Behaviors/SurveyController.cs @@ -109,8 +109,8 @@ public class SurveyController : ControllerBase, IBehavior, IPersistentBe private void NextPlanet() { var planets = Task.Planets.Select(id => Zone.Planets[id]); - var nearestPlanet = planets.MinBy(p => lengthsq(Entity.Position - GetPosition(p))); - _asteroid = nearestPlanet is AsteroidBeltData ? Zone.NearestAsteroid(nearestPlanet.ID, Entity.Position) : -1; + var nearestPlanet = planets.MinBy(p => lengthsq(Entity.Position.xz - GetPosition(p))); + _asteroid = nearestPlanet is AsteroidBeltData ? Zone.NearestAsteroid(nearestPlanet.ID, Entity.Position.xz) : -1; _targetPlanet = nearestPlanet.ID; } @@ -118,7 +118,7 @@ public class SurveyController : ControllerBase, IBehavior, IPersistentBe { if (planet is AsteroidBeltData) { - if(asteroid == -1) asteroid = Zone.NearestAsteroid(planet.ID, Entity.Position); + if(asteroid == -1) asteroid = Zone.NearestAsteroid(planet.ID, Entity.Position.xz); return Zone.GetAsteroidTransform(planet.ID, asteroid).xy; } return Zone.GetOrbitPosition(planet.Orbit); @@ -128,7 +128,7 @@ public class SurveyController : ControllerBase, IBehavior, IPersistentBe { if (planet is AsteroidBeltData) { - if(asteroid == -1) asteroid = Zone.NearestAsteroid(planet.ID, Entity.Position); + if(asteroid == -1) asteroid = Zone.NearestAsteroid(planet.ID, Entity.Position.xz); return Zone.GetAsteroidVelocity(planet.ID, asteroid); } return Zone.GetOrbitVelocity(planet.Orbit); diff --git a/Assets/Scripts/ServerShared/Behaviors/TowingController.cs b/Assets/Scripts/ServerShared/Behaviors/TowingController.cs index 07e9e4b02..0738c4cd4 100644 --- a/Assets/Scripts/ServerShared/Behaviors/TowingController.cs +++ b/Assets/Scripts/ServerShared/Behaviors/TowingController.cs @@ -65,7 +65,7 @@ public class TowingController : ControllerBase, IBehavior, IPersi MoveTo(() => { var orbitParent = Zone.GetOrbitPosition(Task.OrbitParent); - var parentToUs = Entity.Position - orbitParent; + var parentToUs = Entity.Position.xz - orbitParent; return orbitParent + normalize(parentToUs) * Task.OrbitDistance; }, () => Zone.GetOrbitVelocity(Task.OrbitParent), OnDelivery); } @@ -76,7 +76,7 @@ public class TowingController : ControllerBase, IBehavior, IPersi Entity.SetMessage("Target delivered. Returning Home."); - var orbit = Zone.CreateOrbit(Task.OrbitParent, Entity.Position); + var orbit = Zone.CreateOrbit(Task.OrbitParent, Entity.Position.xz); Task.Station.OrbitData = orbit.ID; FinishTask(); diff --git a/Assets/Scripts/ServerShared/Behaviors/Trigger.cs b/Assets/Scripts/ServerShared/Behaviors/Trigger.cs index 66e04a2a2..defce8ff4 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Trigger.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Trigger.cs @@ -20,9 +20,9 @@ public class Trigger : IBehavior { private TriggerData _data; - private Entity Entity { get; } - private EquippedItem Item { get; } - private ItemManager Context { get; } + public Entity Entity { get; } + public EquippedItem Item { get; } + public ItemManager Context { get; } public BehaviorData Data => _data; diff --git a/Assets/Scripts/ServerShared/Behaviors/TurretController.cs b/Assets/Scripts/ServerShared/Behaviors/TurretController.cs new file mode 100644 index 000000000..44b44a6b8 --- /dev/null +++ b/Assets/Scripts/ServerShared/Behaviors/TurretController.cs @@ -0,0 +1,93 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ + +using System.Collections.Generic; +using System.Linq; +using MessagePack; +using Newtonsoft.Json; +using UniRx; +using Unity.Mathematics; +using static Unity.Mathematics.math; + +[MessagePackObject, JsonObject(MemberSerialization.OptIn), RuntimeInspectable] +public class TurretControllerData : BehaviorData +{ + public override IBehavior CreateInstance(ItemManager context, Entity entity, EquippedItem item) + { + return new TurretController(context, this, entity, item); + } +} + +public class TurretController : IBehavior +{ + private TurretControllerData _data; + private Dictionary _triggers = new Dictionary(); + + public Entity EquippedEntity { get; } + public EquippedItem Item { get; } + public ItemManager Context { get; } + + public BehaviorData Data => _data; + + public TurretController(ItemManager context, TurretControllerData data, Entity equippedEntity, EquippedItem item) + { + Context = context; + _data = data; + EquippedEntity = equippedEntity; + Item = item; + var weapons = equippedEntity.Equipment.Where(e => e.Behaviors.Any(b => b.Data is WeaponData)); + foreach (var weapon in weapons) + { + CheckWeapon(item); + } + + equippedEntity.Equipment.ObserveAdd().Subscribe(add => CheckWeapon(add.Value)); + equippedEntity.Equipment.ObserveRemove().Subscribe(remove => + { + foreach (var bg in remove.Value.BehaviorGroups) + if (_triggers.ContainsKey(bg.Trigger)) + _triggers.Remove(bg.Trigger); + }); + } + + private void CheckWeapon(EquippedItem item) + { + foreach (var bg in item.BehaviorGroups) + { + if (bg.Trigger != null) + { + foreach (var b in bg.Behaviors) + { + if(b.Data is WeaponData weaponData) + _triggers.Add(bg.Trigger, weaponData); + } + } + } + } + + public bool Update(float delta) + { + if (EquippedEntity.Target != null) + { + var diff = EquippedEntity.Target.Position - EquippedEntity.Position; + EquippedEntity.LookDirection = normalize(diff); + var dist = length(diff); + + foreach (var x in _triggers) + { + if (Context.Evaluate(x.Value.Range, x.Key.Item.EquippableItem, EquippedEntity) > dist && + dot(EquippedEntity.HardpointTransforms[EquippedEntity.Hardpoints[x.Key.Item.Position.x, x.Key.Item.Position.y]].direction, + EquippedEntity.LookDirection) > .9f) + { + x.Key.Pull(); + } + } + } + else + { + EquippedEntity.Target = EquippedEntity.Zone.Entities.FirstOrDefault(e => e is Ship); + } + return true; + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/Behaviors/TurretController.cs.meta b/Assets/Scripts/ServerShared/Behaviors/TurretController.cs.meta new file mode 100644 index 000000000..a126a7fde --- /dev/null +++ b/Assets/Scripts/ServerShared/Behaviors/TurretController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c19f106bac321f34bab3c83bf64e7e77 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/Entity.cs b/Assets/Scripts/ServerShared/Entity.cs index fc8650b14..4ddbb8075 100644 --- a/Assets/Scripts/ServerShared/Entity.cs +++ b/Assets/Scripts/ServerShared/Entity.cs @@ -23,7 +23,7 @@ public abstract class Entity public Zone Zone; public EquippableItem Hull; - public float2 Position; + public float3 Position; public float2 Direction = float2(0,1); public float2 Velocity; @@ -49,6 +49,7 @@ public abstract class Entity public readonly Dictionary Messages = new Dictionary(); public readonly Dictionary VisibilitySources = new Dictionary(); + public readonly Dictionary HardpointTransforms = new Dictionary(); public readonly List[] TriggerGroups; @@ -337,9 +338,9 @@ public abstract class Entity if (!ItemFits(itemData, hullData, item, hullCoord)) return false; + EquippedItem equippedItem; if (itemData.HardpointType == HardpointType.Tool || itemData.HardpointType == HardpointType.Thermal) { - EquippedItem equippedItem; if(itemData is CargoBayData) { if (itemData is DockingBayData) @@ -358,34 +359,25 @@ public abstract class Entity equippedItem = new EquippedItem(ItemManager, item, hullCoord, this); Equipment.Add(equippedItem); } - - foreach (var i in itemData.Shape.Coordinates) - { - var occupiedCoord = hullCoord + itemData.Shape.Rotate(i, item.Rotation); - (itemData.HardpointType == HardpointType.Thermal ? ThermalOccupancy : GearOccupancy)[occupiedCoord.x, occupiedCoord.y] = equippedItem; - } - - Mass += itemData.Mass; - _orderedEquipment = Equipment.OrderBy(x => x.SortPosition).ToArray(); - return true; } else { - var equippedItem = new EquippedItem(ItemManager, item, hullCoord, this); + equippedItem = new EquippedItem(ItemManager, item, hullCoord, this); Equipment.Add(equippedItem); - - foreach (var i in itemData.Shape.Coordinates) - { - var occupiedCoord = hullCoord + itemData.Shape.Rotate(i, item.Rotation); - ThermalMass[occupiedCoord.x, occupiedCoord.y] += ItemManager.GetThermalMass(item) / itemData.Shape.Coordinates.Length; - Conductivity[occupiedCoord.x, occupiedCoord.y] *= itemData.Conductivity; - (itemData.HardpointType == HardpointType.Thermal ? ThermalOccupancy : GearOccupancy)[occupiedCoord.x, occupiedCoord.y] = equippedItem; - } - - Mass += itemData.Mass; - _orderedEquipment = Equipment.OrderBy(x => x.SortPosition).ToArray(); - return true; } + + foreach (var i in itemData.Shape.Coordinates) + { + var occupiedCoord = hullCoord + itemData.Shape.Rotate(i, item.Rotation); + // TODO: Track thermal mass of cargo bay contents as reactive property + ThermalMass[occupiedCoord.x, occupiedCoord.y] += ItemManager.GetThermalMass(item) / itemData.Shape.Coordinates.Length; + Conductivity[occupiedCoord.x, occupiedCoord.y] *= itemData.Conductivity; + (itemData.HardpointType == HardpointType.Thermal ? ThermalOccupancy : GearOccupancy)[occupiedCoord.x, occupiedCoord.y] = equippedItem; + } + + Mass += itemData.Mass; + _orderedEquipment = Equipment.OrderBy(x => x.SortPosition).ToArray(); + return true; } public EquippedDockingBay TryDock(Ship ship) @@ -553,6 +545,7 @@ public abstract class Entity Position = Parent.Position; Velocity = Parent.Velocity; } + else Position.y = Zone.GetHeight(Position.xz) + hullData.GridOffset; } public void SetMessage(string message) diff --git a/Assets/Scripts/ServerShared/OrbitalEntity.cs b/Assets/Scripts/ServerShared/OrbitalEntity.cs index 44d1680ee..20c44b3c8 100644 --- a/Assets/Scripts/ServerShared/OrbitalEntity.cs +++ b/Assets/Scripts/ServerShared/OrbitalEntity.cs @@ -22,7 +22,7 @@ public class OrbitalEntity : Entity { if (OrbitData != Guid.Empty) { - Position = Zone.GetOrbitPosition(OrbitData); + Position.xz = Zone.GetOrbitPosition(OrbitData); Velocity = Zone.GetOrbitVelocity(OrbitData); } diff --git a/Assets/Scripts/ServerShared/Ship.cs b/Assets/Scripts/ServerShared/Ship.cs index b52543f1a..c6c7c3eab 100644 --- a/Assets/Scripts/ServerShared/Ship.cs +++ b/Assets/Scripts/ServerShared/Ship.cs @@ -11,6 +11,7 @@ using MessagePack; using Newtonsoft.Json; using Unity.Mathematics; using static Unity.Mathematics.math; +using quaternion = Unity.Mathematics.quaternion; [MessagePackObject] public class Ship : Entity @@ -31,6 +32,8 @@ public class Ship : Entity private Thruster[] _leftThrusters; private Thruster[] _clockwiseThrusters; private Thruster[] _counterClockwiseThrusters; + + public quaternion Rotation { get; private set; } protected override void OnActivate() { @@ -49,7 +52,7 @@ public class Ship : Entity public override void Update(float delta) { - Position += Velocity * delta; + Position.xz += Velocity * delta; if (_active) { foreach (var thruster in _allThrusters) thruster.Axis = 0; @@ -65,6 +68,18 @@ public class Ship : Entity foreach (var thruster in _clockwiseThrusters) thruster.Axis += deltaRot; foreach (var thruster in _counterClockwiseThrusters) thruster.Axis += -deltaRot; } + var normal = Zone.GetNormal(Position.xz); + var f = new float2(normal.x, normal.z); + var fl = lengthsq(f); + if (fl > .001) + { + var fa = 1 / (1 - fl) - 1; + Velocity += normalize(f) * Zone.Settings.GravityStrength * fa; + } + var shipRight = Direction.Rotate(ItemRotation.Clockwise); + var forward = cross(float3(shipRight.x, 0, shipRight.y), normal); + Rotation = quaternion.LookRotation(forward, normal); + base.Update(delta); } } diff --git a/Assets/Scripts/ServerShared/Zone.cs b/Assets/Scripts/ServerShared/Zone.cs index 4be09b638..8fe6784e9 100644 --- a/Assets/Scripts/ServerShared/Zone.cs +++ b/Assets/Scripts/ServerShared/Zone.cs @@ -25,7 +25,7 @@ public class Zone private HashSet _updatedOrbits = new HashSet(); - private PlanetSettings _settings; + public PlanetSettings Settings; private float _time; private Random _random; @@ -34,12 +34,12 @@ public class Zone public Zone(PlanetSettings settings, ZonePack pack) { Data = pack.Data; - _settings = settings; + Settings = settings; _random = new Random(Convert.ToUInt32(abs(Data.ID.GetHashCode()))); foreach (var orbit in pack.Orbits) { - Orbits.Add(orbit.ID, new Orbit(_settings, orbit)); + Orbits.Add(orbit.ID, new Orbit(Settings, orbit)); } foreach (var planet in pack.Planets) @@ -77,7 +77,7 @@ public class Zone public void AddOrbit(OrbitData orbit) { - Orbits.Add(orbit.ID, new Orbit(_settings, orbit)); + Orbits.Add(orbit.ID, new Orbit(Settings, orbit)); } public void Update(float time, float deltaTime) @@ -194,14 +194,14 @@ public class Zone if(belt.RespawnTimers.ContainsKey(i)) size = 0; else if (belt.Damage.ContainsKey(i)) { - var asteroidHitpoints = _settings.AsteroidHitpoints.Evaluate(beltData.Asteroids[i].Size); + var asteroidHitpoints = Settings.AsteroidHitpoints.Evaluate(beltData.Asteroids[i].Size); var damage = (asteroidHitpoints - belt.Damage[i]) / asteroidHitpoints; - size = _settings.AsteroidSize.Evaluate(damage * beltData.Asteroids[i].Size); + size = Settings.AsteroidSize.Evaluate(damage * beltData.Asteroids[i].Size); } - else size = _settings.AsteroidSize.Evaluate(beltData.Asteroids[i].Size); + else size = Settings.AsteroidSize.Evaluate(beltData.Asteroids[i].Size); belt.Transforms[i] = float4( - OrbitData.Evaluate((float) frac(_time / _settings.OrbitPeriod.Evaluate(beltData.Asteroids[i].Distance) + + OrbitData.Evaluate((float) frac(_time / Settings.OrbitPeriod.Evaluate(beltData.Asteroids[i].Distance) + beltData.Asteroids[i].Phase)) * beltData.Asteroids[i].Distance + orbitPosition, (float) (_time * beltData.Asteroids[i].RotationSpeed % (PI * 2)), size); } @@ -212,7 +212,7 @@ public class Zone var parentPosition = GetOrbitPosition(parent); var delta = position - parentPosition; var distance = length(delta); - var period = _settings.OrbitPeriod.Evaluate(distance); + var period = Settings.OrbitPeriod.Evaluate(distance); var phase = atan2(delta.y, delta.x) / (PI * 2); var currentPhase = frac(_time / period); var storedPhase = (float) frac(phase - currentPhase); @@ -224,7 +224,7 @@ public class Zone Parent = parent, Phase = storedPhase }; - Orbits.Add(orbit.ID, new Orbit(_settings, orbit)); + Orbits.Add(orbit.ID, new Orbit(Settings, orbit)); return orbit; } @@ -235,7 +235,7 @@ public class Zone var asteroidTransform = belt.Transforms[asteroid]; var size = beltData.Asteroids[asteroid].Size; - var asteroidHitpoints = _settings.AsteroidHitpoints.Evaluate(size); + var asteroidHitpoints = Settings.AsteroidHitpoints.Evaluate(size); if (!belt.Damage.ContainsKey(asteroid)) belt.Damage[asteroid] = 0; @@ -247,7 +247,7 @@ public class Zone if (belt.Damage[asteroid] > asteroidHitpoints) { - belt.RespawnTimers[asteroid] = _settings.AsteroidRespawnTime.Evaluate(size); + belt.RespawnTimers[asteroid] = Settings.AsteroidRespawnTime.Evaluate(size); belt.Damage.Remove(asteroid); belt.MiningAccumulator.Remove((miner, asteroid)); return; @@ -255,7 +255,7 @@ public class Zone var resourceCount = beltData.Resources.Sum(x => x.Value); var resource = beltData.Resources.MaxBy(x => pow(x.Value, 1f / penetration) * _random.NextFloat()); - if (efficiency * _random.NextFloat() * belt.MiningAccumulator[(miner, asteroid)] * resourceCount / _settings.MiningDifficulty > 1) + if (efficiency * _random.NextFloat() * belt.MiningAccumulator[(miner, asteroid)] * resourceCount / Settings.MiningDifficulty > 1) { belt.MiningAccumulator.Remove((miner, asteroid)); // var newSimpleCommodity = new SimpleCommodity @@ -269,7 +269,7 @@ public class Zone } public float GetHeight(float2 position) { - float result = -PowerPulse(length(position)/(Data.Radius*2), _settings.ZoneDepthExponent) * _settings.ZoneDepth; + float result = -PowerPulse(length(position)/(Data.Radius*2), Settings.ZoneDepthExponent) * Settings.ZoneDepth; foreach (var body in PlanetInstances.Values) { var p = (position - body.Orbit.Position); //GetOrbitPosition(body.BodyData.Orbit) @@ -287,7 +287,7 @@ public class Zone if(distSqr < waveRadius*waveRadius) { var depth = gas.GravityWavesDepth.Value; - var frequency = _settings.WaveFrequency.Evaluate(body.BodyData.Mass.Value); + var frequency = Settings.WaveFrequency.Evaluate(body.BodyData.Mass.Value); var speed = gas.GravityWavesSpeed.Value; result -= RadialWaves(sqrt(distSqr) / waveRadius, 8, 1.25f, frequency, _time * speed) * depth; } @@ -301,7 +301,7 @@ public class Zone { var normal = GetNormal(position); var f = new float2(normal.x, normal.z); - return f * _settings.GravityStrength * lengthsq(f);// * Mathf.Abs(GetHeight(position)); + return f * Settings.GravityStrength * lengthsq(f);// * Mathf.Abs(GetHeight(position)); } public static float PowerPulse(float x, float exponent) diff --git a/Assets/Scripts/UI/ConfirmationDialog.cs b/Assets/Scripts/UI/ConfirmationDialog.cs index e1be40796..098644eeb 100644 --- a/Assets/Scripts/UI/ConfirmationDialog.cs +++ b/Assets/Scripts/UI/ConfirmationDialog.cs @@ -12,6 +12,7 @@ using UnityEngine.UI; public class ConfirmationDialog : PropertiesPanel { public ClickCatcher CancelClickCatcher; + public GameObject ButtonGroup; public Button Cancel; public Button Confirm; @@ -42,6 +43,7 @@ public class ConfirmationDialog : PropertiesPanel go.SetActive(true); go.transform.SetSiblingIndex(Title.transform.GetSiblingIndex() + 1); }; + gameObject.SetActive(false); } private void End() @@ -52,10 +54,16 @@ public class ConfirmationDialog : PropertiesPanel public void Show(Action onConfirm = null, Action onCancel = null) { + gameObject.SetActive(true); + _onConfirm = onConfirm; Confirm.gameObject.SetActive(onConfirm!=null); + _onCancel = onCancel; Cancel.gameObject.SetActive(onCancel!=null); + + ButtonGroup.SetActive(onConfirm!=null && onCancel!=null); + transform.position = Mouse.current.position.ReadValue(); CancelClickCatcher.gameObject.SetActive(true); } diff --git a/Assets/Scripts/UI/InventoryPanel.cs b/Assets/Scripts/UI/InventoryPanel.cs index 4b7ec5b31..0f4914de5 100644 --- a/Assets/Scripts/UI/InventoryPanel.cs +++ b/Assets/Scripts/UI/InventoryPanel.cs @@ -388,16 +388,19 @@ public class InventoryPanel : MonoBehaviour } } - public void DropItem(ItemInstance item, int2 position) + public bool DropItem(ItemInstance item, int2 position) { if (_displayedEntity != null && item is EquippableItem equippableItem) { - _displayedEntity.TryEquip(equippableItem, position); + return _displayedEntity.TryEquip(equippableItem, position); } - else + + if(_displayedCargo != null) { - _displayedCargo?.TryStore(item, position); + return _displayedCargo.TryStore(item, position); } + + return false; } public UniRx.IObservable OnClickAsObservable() => _onClick ?? (_onClick = new Subject()); diff --git a/Economy.Shared.Unity.csproj b/Economy.Shared.Unity.csproj index 1dadc9416..07cec762c 100644 --- a/Economy.Shared.Unity.csproj +++ b/Economy.Shared.Unity.csproj @@ -201,6 +201,7 @@ + @@ -300,7 +301,6 @@ - @@ -326,6 +326,7 @@ + @@ -383,6 +384,7 @@ + @@ -512,8 +514,6 @@ - -