GUNS GUNS GUNS

GUESS WHAT
This commit is contained in:
Reinier Vens 2021-01-05 02:56:17 +00:00
commit 8aaccac2b5
83 changed files with 15291 additions and 1291 deletions

View file

@ -24,6 +24,7 @@
</e>
</e>
</e>
<e p="ArticulationPoint.cs" t="Include" />
<e p="com.unity.uiextensions" t="Include">
<e p="Editor" t="Include">
<e p="BezierLineRendererEditor.cs" t="Include" />
@ -65,9 +66,13 @@
</e>
</e>
</e>
<e p="EntityPrefab.cs" t="Include" />
<e p="FilterTest.cs" t="Include" />
<e p="FitToCamera.cs" t="Include" />
<e p="GaussianBlurFilter.shader" t="Include" />
<e p="GuidedProjectile.cs" t="Include" />
<e p="GuidedProjectileManager.cs" t="Include" />
<e p="HullCollider.cs" t="Include" />
<e p="InventoryCell.cs" t="Include" />
<e p="InventoryMenu.cs" t="Include" />
<e p="MapMenuInput.cs" t="Include" />
@ -211,6 +216,8 @@
</e>
</e>
</e>
<e p="Projectile.cs" t="Include" />
<e p="ProjectileManager.cs" t="Include" />
<e p="Resources" t="Include">
<e p="Sprites" t="Include">
<e p="Attribution.txt" t="Include" />
@ -1451,6 +1458,7 @@
<e p="Behaviors.cs" t="Include" />
<e p="Capacitor.cs" t="Include" />
<e p="Cockpit.cs" t="Include" />
<e p="ConstantWeapon.cs" t="Include" />
<e p="Controller.cs" t="Include" />
<e p="Cooldown.cs" t="Include" />
<e p="EnergyDraw.cs" t="Include" />
@ -2065,7 +2073,9 @@
<e p="EmojiOne Attribution.txt" t="Include" />
</e>
</e>
<e p="ThrusterHardpoint.cs" t="Include" />
<e p="UnityHelpers.cs" t="Include" />
<e p="WeaponHardpoint.cs" t="Include" />
</e>
<e p="Economy.Shared.Unity.csproj" t="IncludeRecursive" />
<e p="MessagePack.csproj" t="IncludeRecursive" />

View file

@ -696,6 +696,15 @@
<Compile Include="Assets\Scripts\NIH\MSAGL\Layout\Layered\IntEdge.cs" />
<Compile Include="Assets\Scripts\NIH\MSAGL\Routing\Spline\Bundling\PointPairOrder.cs" />
<Compile Include="Assets\SchematicTriggerGroupElement.cs" />
<Compile Include="Assets\ArticulationPoint.cs" />
<Compile Include="Assets\WeaponHardpoint.cs" />
<Compile Include="Assets\ThrusterHardpoint.cs" />
<Compile Include="Assets\EntityPrefab.cs" />
<Compile Include="Assets\HullCollider.cs" />
<Compile Include="Assets\GuidedProjectile.cs" />
<Compile Include="Assets\GuidedProjectileManager.cs" />
<Compile Include="Assets\ProjectileManager.cs" />
<Compile Include="Assets\Projectile.cs" />
<None Include="Assets\com.unity.uiextensions\Runtime\Resources\Shaders\UIAdditive.shader" />
<None Include="Assets\TextMesh Pro\Resources\Shaders\TMPro.cginc" />
<None Include="Assets\TextMesh Pro\Resources\Shaders\TMP_SDF-Mobile Overlay.shader" />

View file

@ -0,0 +1,27 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.Mathematics;
using static Unity.Mathematics.math;
public class ArticulationPoint : MonoBehaviour
{
public Transform Target;
public float YawMin;
public float YawMax;
public float PitchMin;
public float PitchMax;
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);
}
}
}

View file

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

13
Assets/EntityPrefab.cs Normal file
View file

@ -0,0 +1,13 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EntityPrefab : MonoBehaviour
{
public HullCollider[] HullColliders;
public ThrusterHardpoint[] ThrusterHardpoints;
public WeaponHardpoint[] WeaponHardpoints;
public ArticulationPoint[] ArticulationPoints;
}

View file

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

119
Assets/GuidedProjectile.cs Normal file
View file

@ -0,0 +1,119 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Unity.Mathematics;
using UnityEngine;
using static Unity.Mathematics.math;
using static Unity.Mathematics.noise;
using Random = UnityEngine.Random;
public class GuidedProjectile : MonoBehaviour
{
public ParticleSystem Particles;
public float FadeOutTime;
public AnimationCurve ThrustCurve;
public AnimationCurve GuidanceCurve;
public AnimationCurve LiftCurve;
public float Frequency;
public float Thrust;
public float TopSpeed;
public Transform Source;
public Transform Target;
private float _phase;
private float _prevDist;
private bool _active;
private bool _alive;
public Vector3 Velocity { get; set; }
public float Damage { get; set; }
public DamageType DamageType { get; set; }
public Entity SourceEntity { get; set; }
void Awake()
{
}
void OnEnable()
{
_active = _alive = true;
_phase = Random.value * 100;
_prevDist = Single.MaxValue;
var main = Particles.main;
main.startColor = Color.white;
Particles.Clear(true);
Particles.Play(true);
}
void Update ()
{
if (SourceEntity == null) return;
var diff = Target.position - transform.position;
var targetDist = diff.magnitude;
if (_prevDist < targetDist)
{
StartCoroutine(FadeOut());
}
_prevDist = targetDist;
var t = transform;
if (_active)
{
var position = (float3) t.position;
var sourceDist = length((float3) Source.position - position);
var curveLerp = 1 - targetDist / (sourceDist + targetDist);
var dir = diff.normalized;
var right = cross(dir, float3(0, 1, 0));
var up = cross(dir, right);
var dodge = normalize(lerp(
normalize(right * snoise(position * Frequency + float3(1) * _phase) +
up * snoise(position * Frequency + float3(1) * (100 + _phase))),
Vector3.up, LiftCurve.Evaluate(curveLerp)));
var desired = Vector3.Slerp(dodge, dir, GuidanceCurve.Evaluate(curveLerp)).normalized * TopSpeed;
var thrust = Thrust * ThrustCurve.Evaluate(curveLerp);
Velocity += (desired-Velocity) * (thrust * Time.deltaTime);
}
var ray = new Ray(t.position, Velocity);
if (Physics.Raycast(ray, out var hit, Velocity.magnitude, LayerMask.NameToLayer("Combat")))
{
var hull = hit.collider.GetComponent<HullCollider>();
if (hull)
{
hull.SendHit(Damage, DamageType, SourceEntity, hit);
}
StartCoroutine(Kill());
}
if(_alive)
t.position += Velocity;
}
IEnumerator FadeOut()
{
_active = false;
var startTime = Time.time;
while (Time.time - startTime < FadeOutTime)
{
var lerp = 1 - (Time.time - startTime) / FadeOutTime;
var main = Particles.main;
main.startColor = Color.white * lerp;
yield return null;
}
StartCoroutine(Kill());
}
IEnumerator Kill()
{
_alive = false;
Particles.Stop(true, ParticleSystemStopBehavior.StopEmitting);
var startTime = Time.time;
var lifetime = Particles.main.startLifetime.constant;
while (Time.time - startTime < lifetime)
yield return null;
GetComponent<Prototype>().ReturnToPool();
}
}

View file

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

View file

@ -0,0 +1,29 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GuidedProjectileManager : MonoBehaviour
{
public Prototype ProjectilePrototype;
public void Launch(LauncherData data, EquippedItem item, EntityInstance source, EntityInstance target)
{
var p = ProjectilePrototype.Instantiate<GuidedProjectile>();
p.Source = source.Transform;
p.SourceEntity = source.Entity;
p.Target = target.Transform;
p.Frequency = data.DodgeFrequency;
p.Thrust = source.Entity.ItemManager.Evaluate(data.Thrust, item.EquippableItem, source.Entity);
var hp = source.Entity.Hardpoints[item.Position.x, item.Position.y];
var barrel = source.GetBarrel(hp);
p.transform.position = barrel.position;
p.Velocity = barrel.forward * source.Entity.ItemManager.Evaluate(data.LaunchSpeed, item.EquippableItem, source.Entity);
p.Damage = source.Entity.ItemManager.Evaluate(data.Damage, item.EquippableItem, source.Entity);
p.DamageType = data.DamageType;
p.GuidanceCurve = data.GuidanceCurve.ToCurve();
p.LiftCurve = data.LiftCurve.ToCurve();
p.ThrustCurve = data.ThrustCurve.ToCurve();
p.Thrust = source.Entity.ItemManager.Evaluate(data.Thrust, item.EquippableItem, source.Entity);
p.TopSpeed = source.Entity.ItemManager.Evaluate(data.MissileSpeed, item.EquippableItem, source.Entity);
}
}

View file

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

33
Assets/HullCollider.cs Normal file
View file

@ -0,0 +1,33 @@
using System.Collections;
using System.Collections.Generic;
using UniRx;
using Unity.Mathematics;
using static Unity.Mathematics.math;
using UnityEngine;
using float2 = Unity.Mathematics.float2;
public class HullCollider : MonoBehaviour
{
public Subject<HullHitEventArgs> Hit = new Subject<HullHitEventArgs>();
public Entity Entity { get; set; }
public void SendHit(float damage, DamageType damageType, Entity source, RaycastHit hit)
{
Hit.OnNext(new HullHitEventArgs
{
Damage = damage,
DamageType = damageType,
Source = source,
Hit = hit
});
}
public class HullHitEventArgs
{
public float Damage;
public DamageType DamageType;
public Entity Source;
public RaycastHit Hit;
}
}

View file

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

View file

@ -0,0 +1,78 @@
%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: Black
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0
- _GlossyReflections: 1
- _Metallic: 1
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0, g: 0, b: 0, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 55857aff163e94e458c46d2a778ff5f5
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

View file

@ -64,7 +64,7 @@ Material:
- _GlossMapScale: 1
- _Glossiness: 1
- _GlossyReflections: 1
- _Metallic: 0.47
- _Metallic: 0.9
- _Mode: 3
- _OcclusionStrength: 1
- _Parallax: 0.02

View file

@ -61,7 +61,7 @@ Material:
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _Emission: 50
- _Emission: 150
- _EmissionFresnel: 0.46
- _EmissionRoughnessFresnelPower: 1
- _GlossMapScale: 1

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3c273e5359c44274ea45cb8ff069dca8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,78 @@
%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: Smoke Trail
m_Shader: {fileID: 4800000, guid: 46776b9fa35a437448f683f31b04d68d, type: 3}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 014f8223958fab24583f73350dca0c8c, type: 3}
m_Scale: {x: 0.5, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 4, g: 4, b: 4, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 483c8decd432d5e49ac166734cdd9d37
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Materials/Substance/Metal/metal_car_paint 2.sbsar (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,381 @@
fileFormatVersion: 2
guid: a1d39ea984432bf44b4a0686afe2bf1a
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: " <sbspreset pkgurl=\"pkg://metal_car_paint\" label=\"\" >\n <presetinput
identifier=\"$outputsize\" uid=\"2092133592\" type=\"8\" value=\"11,11\" />\n
<presetinput identifier=\"normal_intensity\" uid=\"2045651458\" type=\"0\"
value=\"0.25\" />\n <presetinput identifier=\"age\" uid=\"2038752334\" type=\"0\"
value=\"1\" />\n <presetinput identifier=\"flakes\" uid=\"20245147\" type=\"4\"
value=\"1\" />\n <presetinput identifier=\"flakes_scale\" uid=\"20192266\"
type=\"0\" value=\"1\" />\n <presetinput identifier=\"paint_scratches\" uid=\"22509202\"
type=\"0\" value=\"1\" />\n <presetinput identifier=\"paint_peeling\" uid=\"103560714\"
type=\"0\" value=\"0.246\" />\n <presetinput identifier=\"metal_roughness\"
uid=\"22504787\" type=\"0\" value=\"0.39\" />\n <presetinput identifier=\"paint_color\"
uid=\"105341618\" type=\"2\" value=\"0.5,0,0.228113\" />\n <presetinput identifier=\"paint_roughness\"
uid=\"22504606\" type=\"0\" value=\"0\" />\n <presetinput identifier=\"paint_metallic\"
uid=\"22503567\" type=\"0\" value=\"1\" />\n </sbspreset>\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: a1d39ea984432bf44b4a0686afe2bf1a,
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: a1d39ea984432bf44b4a0686afe2bf1a,
type: 3}
scale: {x: 2, y: 2}
offset: {x: 0, y: 0}
- name: _MetallicGlossMap
texture: {fileID: -3552914696322007609, guid: a1d39ea984432bf44b4a0686afe2bf1a,
type: 3}
scale: {x: 1, y: 1}
offset: {x: 0, y: 0}
- name: _OcclusionMap
texture: {fileID: -1242281561028671816, guid: a1d39ea984432bf44b4a0686afe2bf1a,
type: 3}
scale: {x: 1, y: 1}
offset: {x: 0, y: 0}
- name: _ParallaxMap
texture: {fileID: -1652887728991447519, guid: a1d39ea984432bf44b4a0686afe2bf1a,
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: a1d39ea984432bf44b4a0686afe2bf1a,
type: 3}
generatedTextures:
- {fileID: 5917659159057834157, guid: a1d39ea984432bf44b4a0686afe2bf1a, type: 3}
- {fileID: 3068890721646206586, guid: a1d39ea984432bf44b4a0686afe2bf1a, type: 3}
- {fileID: -3552914696322007609, guid: a1d39ea984432bf44b4a0686afe2bf1a, type: 3}
- {fileID: -1242281561028671816, guid: a1d39ea984432bf44b4a0686afe2bf1a, type: 3}
- {fileID: -1652887728991447519, guid: a1d39ea984432bf44b4a0686afe2bf1a, type: 3}

View file

@ -59,16 +59,19 @@ ScriptedImporter:
generateAllOutputs: 0
generateMipMaps: 1
preset: " <sbspreset pkgurl=\"pkg://metal_car_paint\" label=\"\" >\n <presetinput
identifier=\"$outputsize\" uid=\"2092133592\" type=\"8\" value=\"10,10\" />\n
<presetinput identifier=\"age\" uid=\"2038752334\" type=\"0\" value=\"0.66\"
/>\n <presetinput identifier=\"flakes\" uid=\"20245147\" type=\"4\" value=\"1\"
/>\n <presetinput identifier=\"flakes_scale\" uid=\"20192266\" type=\"0\"
value=\"0.225\" />\n <presetinput identifier=\"paint_scratches\" uid=\"22509202\"
identifier=\"$outputsize\" uid=\"2092133592\" type=\"8\" value=\"11,11\" />\n
<presetinput identifier=\"normal_intensity\" uid=\"2045651458\" type=\"0\"
value=\"0.25\" />\n <presetinput identifier=\"age\" uid=\"2038752334\" type=\"0\"
value=\"1\" />\n <presetinput identifier=\"flakes\" uid=\"20245147\" type=\"4\"
value=\"1\" />\n <presetinput identifier=\"flakes_scale\" uid=\"20192266\"
type=\"0\" value=\"0\" />\n <presetinput identifier=\"paint_scratches\" uid=\"22509202\"
type=\"0\" value=\"1\" />\n <presetinput identifier=\"paint_peeling\" uid=\"103560714\"
type=\"0\" value=\"0.14\" />\n <presetinput identifier=\"paint_color\" uid=\"105341618\"
type=\"2\" value=\"1,0.891509,0.946396\" />\n <presetinput identifier=\"paint_roughness\"
uid=\"22504606\" type=\"0\" value=\"0.15\" />\n <presetinput identifier=\"paint_metallic\"
uid=\"22503567\" type=\"0\" value=\"0.67\" />\n </sbspreset>\n"
type=\"0\" value=\"0.089\" />\n <presetinput identifier=\"metal_roughness\"
uid=\"22504787\" type=\"0\" value=\"0.33\" />\n <presetinput identifier=\"paint_color\"
uid=\"105341618\" type=\"2\" value=\"1,0.891509,0.946396\" />\n <presetinput
identifier=\"paint_roughness\" uid=\"22504606\" type=\"0\" value=\"0\" />\n
<presetinput identifier=\"paint_metallic\" uid=\"22503567\" type=\"0\" value=\"0\"
/>\n </sbspreset>\n"
shaderName: Standard
materialProperties:
shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
@ -364,8 +367,8 @@ ScriptedImporter:
- label: Default
bOverride: 0
bLockRatio: 1
textureWidth: 1024
textureHeight: 1024
textureWidth: 2048
textureHeight: 2048
textureFormatMode: 0
normalCompressed: 0
bGenerateOnLoad: 1

View file

@ -58,7 +58,11 @@ ScriptedImporter:
graphDescIndex: 0
generateAllOutputs: 0
generateMipMaps: 1
preset: " <sbspreset pkgurl=\"pkg://metal_gold\" label=\"\" >\n </sbspreset>\n"
preset: " <sbspreset pkgurl=\"pkg://metal_gold\" label=\"\" >\n <presetinput
identifier=\"$outputsize\" uid=\"2862216590\" type=\"8\" value=\"9,9\" />\n
<presetinput identifier=\"dirt\" uid=\"2947448088\" type=\"0\" value=\"0.766\"
/>\n <presetinput identifier=\"scratches\" uid=\"3615194042\" type=\"0\" value=\"1\"
/>\n </sbspreset>\n"
shaderName: Standard
materialProperties:
shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
@ -87,12 +91,12 @@ ScriptedImporter:
offset: {x: 0, y: 0}
- name: _EmissionMap
texture: {instanceID: 0}
scale: {x: 1, y: 1}
scale: {x: 4, y: 4}
offset: {x: 0, y: 0}
- name: _MainTex
texture: {fileID: 2039085267362074300, guid: a74970be876d3554ea0f279f39314c9c,
type: 3}
scale: {x: 1, y: 1}
scale: {x: 4, y: 4}
offset: {x: 0, y: 0}
- name: _MetallicGlossMap
texture: {fileID: -8783136193678078058, guid: a74970be876d3554ea0f279f39314c9c,
@ -354,8 +358,8 @@ ScriptedImporter:
- label: Default
bOverride: 0
bLockRatio: 1
textureWidth: 256
textureHeight: 256
textureWidth: 512
textureHeight: 512
textureFormatMode: 0
normalCompressed: 0
bGenerateOnLoad: 1

View file

@ -87,12 +87,12 @@ ScriptedImporter:
offset: {x: 0, y: 0}
- name: _EmissionMap
texture: {instanceID: 0}
scale: {x: 1, y: 1}
scale: {x: 4, y: 4}
offset: {x: 0, y: 0}
- name: _MainTex
texture: {fileID: 108215966750249586, guid: cbc61995a46604441ab9de4f1c68e290,
type: 3}
scale: {x: 1, y: 1}
scale: {x: 4, y: 4}
offset: {x: 0, y: 0}
- name: _MetallicGlossMap
texture: {fileID: 4793252353645218242, guid: cbc61995a46604441ab9de4f1c68e290,

BIN
Assets/Models/Djinni.fbx (Stored with Git LFS)

Binary file not shown.

View file

@ -39,16 +39,16 @@ ModelImporter:
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
importVisibility: 0
importBlendShapes: 0
importCameras: 0
importLights: 0
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
weldVertices: 0
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
@ -66,12 +66,12 @@ ModelImporter:
useFileScale: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 1
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
normalSmoothingSource: 3
referencedClips: []
importAnimation: 1
humanDescription:

62
Assets/Projectile.cs Normal file
View file

@ -0,0 +1,62 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Unity.Mathematics;
using static Unity.Mathematics.math;
using UnityEngine;
public class Projectile : MonoBehaviour
{
public TrailRenderer Trail;
public float Gravity;
private bool _alive;
public Zone Zone { get; set; }
public Vector3 Velocity { get; set; }
public float Damage { get; set; }
public DamageType DamageType { get; set; }
public Entity SourceEntity { get; set; }
// Start is called before the first frame update
void Start()
{
}
private void OnEnable()
{
_alive = true;
}
// Update is called once per frame
void Update()
{
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<HullCollider>();
if (hull)
{
hull.SendHit(Damage, DamageType, SourceEntity, hit);
}
StartCoroutine(Kill());
}
if(_alive)
transform.position += Velocity;
}
IEnumerator Kill()
{
_alive = false;
var startTime = Time.time;
var lifetime = Trail.time;
while (Time.time - startTime < lifetime)
yield return null;
GetComponent<Prototype>().ReturnToPool();
}
}

11
Assets/Projectile.cs.meta Normal file
View file

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

View file

@ -0,0 +1,22 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ProjectileManager : MonoBehaviour
{
public Prototype ProjectilePrototype;
public void Launch(ProjectileWeaponData data, EquippedItem item, EntityInstance source)
{
var p = ProjectilePrototype.Instantiate<Projectile>();
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.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;
p.Zone = source.Entity.Zone;
p.Trail.Clear();
}
}

View file

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

View file

@ -22,13 +22,53 @@
"interactions": ""
},
{
"name": "Fire",
"name": "Fire Group 1",
"type": "Button",
"id": "575943b0-4866-4be0-a289-3253973523b1",
"expectedControlType": "Button",
"processors": "",
"interactions": ""
},
{
"name": "Fire Group 2",
"type": "Button",
"id": "b9bdfa1f-db61-4ec3-883a-fc3f9e88c5f5",
"expectedControlType": "Button",
"processors": "",
"interactions": ""
},
{
"name": "Fire Group 3",
"type": "Button",
"id": "d79871a2-8565-4cf3-809f-9c979adfcd81",
"expectedControlType": "Button",
"processors": "",
"interactions": ""
},
{
"name": "Fire Group 4",
"type": "Button",
"id": "59902e9e-1dfb-4624-9599-72ff763ef327",
"expectedControlType": "Button",
"processors": "",
"interactions": ""
},
{
"name": "Fire Group 5",
"type": "Button",
"id": "80b549c1-7378-48c5-8da2-ce95b9c92913",
"expectedControlType": "Button",
"processors": "",
"interactions": ""
},
{
"name": "Fire Group 6",
"type": "Button",
"id": "4ba5091e-051a-41df-9985-6c0e082b20a5",
"expectedControlType": "Button",
"processors": "",
"interactions": ""
},
{
"name": "Minimap Zoom",
"type": "Button",
@ -36,6 +76,46 @@
"expectedControlType": "Button",
"processors": "",
"interactions": ""
},
{
"name": "Next Weapon Group",
"type": "Button",
"id": "8ed69fe0-d934-44ea-94c0-d5d69cc33b32",
"expectedControlType": "Button",
"processors": "",
"interactions": ""
},
{
"name": "Previous Weapon Group",
"type": "Button",
"id": "93f19768-6c19-4bab-8b53-4e3e5ba764fc",
"expectedControlType": "Button",
"processors": "",
"interactions": ""
},
{
"name": "Next Weapon",
"type": "Button",
"id": "09a5e315-6290-4ab5-9e7c-55b7523562b7",
"expectedControlType": "Button",
"processors": "",
"interactions": ""
},
{
"name": "Previous Weapon",
"type": "Button",
"id": "ed923265-545f-4475-ba7c-885371612325",
"expectedControlType": "Button",
"processors": "",
"interactions": ""
},
{
"name": "Toggle Weapon Group",
"type": "Button",
"id": "c61da4ef-e0bc-4d17-aab0-8e2979c3de3c",
"expectedControlType": "Button",
"processors": "",
"interactions": ""
}
],
"bindings": [
@ -200,7 +280,7 @@
"interactions": "",
"processors": "",
"groups": ";Gamepad",
"action": "Fire",
"action": "Fire Group 1",
"isComposite": false,
"isPartOfComposite": false
},
@ -211,18 +291,7 @@
"interactions": "",
"processors": "",
"groups": ";Keyboard&Mouse",
"action": "Fire",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "886e731e-7071-4ae4-95c0-e61739dad6fd",
"path": "<Touchscreen>/primaryTouch/tap",
"interactions": "",
"processors": "",
"groups": "",
"action": "Fire",
"action": "Fire Group 1",
"isComposite": false,
"isPartOfComposite": false
},
@ -233,7 +302,18 @@
"interactions": "",
"processors": "",
"groups": "Joystick",
"action": "Fire",
"action": "Fire Group 1",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "8c676533-8c53-4b6a-9368-d194b8a997f8",
"path": "<Keyboard>/1",
"interactions": "",
"processors": "",
"groups": "Keyboard&Mouse",
"action": "Fire Group 1",
"isComposite": false,
"isPartOfComposite": false
},
@ -247,6 +327,138 @@
"action": "Minimap Zoom",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "444b4049-a11e-4bef-8a57-345c3d1a7545",
"path": "<Keyboard>/rightArrow",
"interactions": "",
"processors": "",
"groups": "Keyboard&Mouse",
"action": "Next Weapon Group",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "fb6c0d4c-dae6-406b-b35a-c35b5d25022c",
"path": "<Keyboard>/leftArrow",
"interactions": "",
"processors": "",
"groups": "Keyboard&Mouse",
"action": "Previous Weapon Group",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "bac8c902-3cad-4a7f-8773-35800a2ee3b9",
"path": "<Keyboard>/downArrow",
"interactions": "",
"processors": "",
"groups": "Keyboard&Mouse",
"action": "Next Weapon",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "969aff21-097a-4c35-9c46-2239e5f321f5",
"path": "<Keyboard>/upArrow",
"interactions": "",
"processors": "",
"groups": "Keyboard&Mouse",
"action": "Previous Weapon",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "a2bcbfda-f091-433f-8ac9-112396507408",
"path": "<Keyboard>/rightCtrl",
"interactions": "",
"processors": "",
"groups": "Keyboard&Mouse",
"action": "Toggle Weapon Group",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "48b8b6ee-8435-439a-96a1-c968254ff605",
"path": "<Mouse>/rightButton",
"interactions": "",
"processors": "",
"groups": ";Keyboard&Mouse",
"action": "Fire Group 2",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "8ae75721-10ab-4d83-8322-82cbb3fdcc44",
"path": "<Keyboard>/2",
"interactions": "",
"processors": "",
"groups": "Keyboard&Mouse",
"action": "Fire Group 2",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "7f89c9af-795b-4b1e-ad43-dac3350cfbe3",
"path": "<Mouse>/middleButton",
"interactions": "",
"processors": "",
"groups": ";Keyboard&Mouse",
"action": "Fire Group 3",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "c249f018-c10a-4c2c-a4ba-9fba54ed33e9",
"path": "<Keyboard>/3",
"interactions": "",
"processors": "",
"groups": "Keyboard&Mouse",
"action": "Fire Group 3",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "421e49a0-897e-4ea3-af8d-af96989d2957",
"path": "<Keyboard>/4",
"interactions": "",
"processors": "",
"groups": ";Keyboard&Mouse",
"action": "Fire Group 4",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "1c8a43b7-4200-43b9-925c-c1634554083c",
"path": "<Keyboard>/5",
"interactions": "",
"processors": "",
"groups": ";Keyboard&Mouse",
"action": "Fire Group 5",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "0680216e-b462-45a3-8050-2b89dcb615aa",
"path": "<Keyboard>/6",
"interactions": "",
"processors": "",
"groups": ";Keyboard&Mouse",
"action": "Fire Group 6",
"isComposite": false,
"isPartOfComposite": false
}
]
},

View file

@ -1,822 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &25961229
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 25961230}
m_Layer: 0
m_Name: Barrel R
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &25961230
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 25961229}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 4.84, y: 2.92, z: -1.64}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 9106854767781449910}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &667648200
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 667648201}
m_Layer: 0
m_Name: Thruster Port Fore
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &667648201
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 667648200}
m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068}
m_LocalPosition: {x: -2.02, y: -0.48, z: 3.39}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 9106854767781449910}
m_RootOrder: 13
m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0}
--- !u!1 &780806499
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 780806500}
m_Layer: 0
m_Name: Thruster Port Aft
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &780806500
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 780806499}
m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068}
m_LocalPosition: {x: -3.05, y: 0.89, z: -4.32}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 9106854767781449910}
m_RootOrder: 12
m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0}
--- !u!1 &805915458
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 805915459}
m_Layer: 0
m_Name: Thruster Starboard Fore
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &805915459
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 805915458}
m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068}
m_LocalPosition: {x: 2.02, y: -0.48, z: 3.39}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 9106854767781449910}
m_RootOrder: 11
m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0}
--- !u!1 &899813959
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 899813960}
m_Layer: 0
m_Name: Thruster Starboard Aft
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &899813960
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 899813959}
m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068}
m_LocalPosition: {x: 3.05, y: 0.89, z: -4.32}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 9106854767781449910}
m_RootOrder: 10
m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0}
--- !u!1 &904728024
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 904728025}
m_Layer: 0
m_Name: Barrel L
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &904728025
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 904728024}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -4.84, y: 2.92, z: -1.64}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 9106854767781449910}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1146951630
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1146951631}
m_Layer: 0
m_Name: Thruster Stern 1
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1146951631
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1146951630}
m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
m_LocalPosition: {x: 0, y: 4.3, z: -8.56}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 9106854767781449910}
m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
--- !u!1 &1229289401
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1229289402}
m_Layer: 0
m_Name: Thruster Bow
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1229289402
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1229289401}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: -0.48, z: 5.57}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 9106854767781449910}
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1438588954
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1438588955}
m_Layer: 0
m_Name: Nostril L
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1438588955
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1438588954}
m_LocalRotation: {x: -0.23534305, y: -0, z: -0, w: 0.9719124}
m_LocalPosition: {x: -1.39, y: 1.16, z: 2.69}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 9106854767781449910}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: -27.224, y: 0, z: 0}
--- !u!1 &1710933324
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1710933325}
m_Layer: 0
m_Name: Nostril R
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1710933325
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1710933324}
m_LocalRotation: {x: -0.23534305, y: -0, z: -0, w: 0.9719124}
m_LocalPosition: {x: 1.39, y: 1.16, z: 2.69}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 9106854767781449910}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: -27.224, y: 0, z: 0}
--- !u!1 &1988296487
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1988296488}
m_Layer: 0
m_Name: Thruster Stern 2
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1988296488
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1988296487}
m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
m_LocalPosition: {x: 0, y: 3.28, z: -8.56}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 9106854767781449910}
m_RootOrder: 8
m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
--- !u!1 &2130472298
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2130472299}
m_Layer: 0
m_Name: Thruster Stern 3
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2130472299
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2130472298}
m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
m_LocalPosition: {x: 0, y: 2.3, z: -8.56}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 9106854767781449910}
m_RootOrder: 9
m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
--- !u!1 &7930906210874266039
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4651778235258359919}
- component: {fileID: 5323651519293148283}
- component: {fileID: 6966798770617141827}
- component: {fileID: 4190126880558894361}
- component: {fileID: 1145083064420361239}
m_Layer: 14
m_Name: Icon
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4651778235258359919
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7930906210874266039}
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: 0, y: 723, z: 0}
m_LocalScale: {x: 5000, y: 5000, z: 5000}
m_Children: []
m_Father: {fileID: 9106854767781449910}
m_RootOrder: 30
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!33 &5323651519293148283
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7930906210874266039}
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &6966798770617141827
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7930906210874266039}
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: 658219dea0cf83049b6ab46c2f3436ed, 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 &4190126880558894361
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7930906210874266039}
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 &1145083064420361239
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7930906210874266039}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 52538a3309c36fc4583c964a1c0b705f, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &8784470446643017565
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: -8679921383154817045, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_RootOrder
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalScale.x
value: 0.01
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalScale.y
value: 0.01
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalScale.z
value: 0.01
objectReference: {fileID: 0}
- target: {fileID: -7872498167539782088, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: -7524481783092393800, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalPosition.z
value: -877.3
objectReference: {fileID: 0}
- target: {fileID: -7524481783092393800, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_RootOrder
value: 29
objectReference: {fileID: 0}
- target: {fileID: -6625146999956858958, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_RootOrder
value: 20
objectReference: {fileID: 0}
- target: {fileID: -5992302138083467718, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalPosition.x
value: -315.1107
objectReference: {fileID: 0}
- target: {fileID: -5992302138083467718, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_RootOrder
value: 26
objectReference: {fileID: 0}
- target: {fileID: -5603237755662813462, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: -5109641318820812241, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalPosition.x
value: 208
objectReference: {fileID: 0}
- target: {fileID: -5109641318820812241, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_RootOrder
value: 23
objectReference: {fileID: 0}
- target: {fileID: -4599178800458827326, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: -3773429692478549711, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: -3760179345625366292, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: -3660698809900281034, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_RootOrder
value: 18
objectReference: {fileID: 0}
- target: {fileID: -3189018373145680014, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: -2722337163479603264, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: -2433966980311775918, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: -1282338954517755048, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_RootOrder
value: 17
objectReference: {fileID: 0}
- target: {fileID: -932530484554465105, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_RootOrder
value: 16
objectReference: {fileID: 0}
- target: {fileID: 29156028926690448, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 484028901997670921, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalPosition.z
value: -877.2999
objectReference: {fileID: 0}
- target: {fileID: 484028901997670921, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_RootOrder
value: 28
objectReference: {fileID: 0}
- target: {fileID: 919132149155446097, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_Name
value: Djinni Variant
objectReference: {fileID: 0}
- target: {fileID: 1165945915133145555, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_RootOrder
value: 21
objectReference: {fileID: 0}
- target: {fileID: 1386762414290949414, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalPosition.x
value: -237.9511
objectReference: {fileID: 0}
- target: {fileID: 1386762414290949414, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_RootOrder
value: 25
objectReference: {fileID: 0}
- target: {fileID: 1425118031933698329, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1529174336690980893, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalPosition.z
value: -877.3001
objectReference: {fileID: 0}
- target: {fileID: 1529174336690980893, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_RootOrder
value: 27
objectReference: {fileID: 0}
- target: {fileID: 2115218557376454651, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 7852708265981260911, guid: ea7457b9a4f0bcb43becaa33de541cbd,
type: 3}
- target: {fileID: 2115218557376454651, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_Materials.Array.data[1]
value:
objectReference: {fileID: 3720744386649352057, guid: b2bec4b400153d745b2915f1c43e5c96,
type: 3}
- target: {fileID: 2115218557376454651, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_Materials.Array.data[5]
value:
objectReference: {fileID: -905690159841262435, guid: a74970be876d3554ea0f279f39314c9c,
type: 3}
- target: {fileID: 2115218557376454651, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_Materials.Array.data[2]
value:
objectReference: {fileID: 7852708265981260911, guid: ea7457b9a4f0bcb43becaa33de541cbd,
type: 3}
- target: {fileID: 2115218557376454651, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_Materials.Array.data[4]
value:
objectReference: {fileID: 2100000, guid: a76a85450aa271448a72b7dfeec9ff53, type: 2}
- target: {fileID: 2115218557376454651, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_Materials.Array.data[3]
value:
objectReference: {fileID: 2100000, guid: 616adaf59c64a444f8249cc7cf13c527, type: 2}
- target: {fileID: 2115218557376454651, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_Materials.Array.data[6]
value:
objectReference: {fileID: 2100000, guid: 761295ee40506ed489244e2dd3b73158, type: 2}
- target: {fileID: 2115218557376454651, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_Materials.Array.data[7]
value:
objectReference: {fileID: -741235592913766832, guid: 885e680924fc12c439a842a2142d4b78,
type: 3}
- target: {fileID: 2115218557376454651, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_Materials.Array.data[8]
value:
objectReference: {fileID: 2100000, guid: b9036e605cc538943a8c7bec97257e87, type: 2}
- target: {fileID: 3513264515266565276, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3530730053176866719, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5341322951705801481, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5520988019811293425, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_RootOrder
value: 19
objectReference: {fileID: 0}
- target: {fileID: 5810462305269633799, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalPosition.z
value: 554.7372
objectReference: {fileID: 0}
- target: {fileID: 5810462305269633799, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_RootOrder
value: 24
objectReference: {fileID: 0}
- target: {fileID: 6947464325843983966, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: -741235592913766832, guid: 885e680924fc12c439a842a2142d4b78,
type: 3}
- target: {fileID: 6947464325843983966, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_Materials.Array.data[1]
value:
objectReference: {fileID: 2100000, guid: 616adaf59c64a444f8249cc7cf13c527, type: 2}
- target: {fileID: 7420549073466142295, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7728892125702877259, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7996040519124296810, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_LocalPosition.x
value: 315
objectReference: {fileID: 0}
- target: {fileID: 7996040519124296810, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_RootOrder
value: 22
objectReference: {fileID: 0}
- target: {fileID: 8736633465395181397, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8984464628394765956, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_RootOrder
value: 15
objectReference: {fileID: 0}
- target: {fileID: 9104515542559788959, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
propertyPath: m_RootOrder
value: 14
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: caefaa8e0cbce524f97eb0db4be80a98, type: 3}
--- !u!4 &9106854767781449910 stripped
Transform:
m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: caefaa8e0cbce524f97eb0db4be80a98,
type: 3}
m_PrefabInstance: {fileID: 8784470446643017565}
m_PrefabAsset: {fileID: 0}

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 53dde11752f9276408c39e32d958afcd
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 56bc5c640c0bfb24eaed4a2b3dddf162
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -118,6 +118,7 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 7719100217559641643}
- component: {fileID: 7110546507900896745}
m_Layer: 0
m_Name: Zenith
m_TagString: Untagged
@ -141,6 +142,22 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &7110546507900896745
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5347824108838409208}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 170aefb3b5cd0e444826f3561d38a962, type: 3}
m_Name:
m_EditorClassIdentifier:
HullColliders: []
ThrusterHardpoints: []
WeaponHardpoints: []
ArticulationPoints: []
--- !u!1001 &2820167578821308726
PrefabInstance:
m_ObjectHideFlags: 0

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cba540ef9f0ca8746998daad96ac3cd9
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c524e9757e3fe4340bee43e431e2c72d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 95b6fc29ca438a247ab3b1aee71b1b61
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,213 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1038711833328602429
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7093708978518643867}
- component: {fileID: 4746410263980518329}
- component: {fileID: 277178765566372861}
- component: {fileID: 654273117314929370}
m_Layer: 0
m_Name: Bullet
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7093708978518643867
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1038711833328602429}
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: 7887646903913370668}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &4746410263980518329
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1038711833328602429}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1281fe44325f9b548aa42dc331b17266, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!96 &277178765566372861
TrailRenderer:
serializedVersion: 2
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1038711833328602429}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 0
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 9c20b9ccbbbb1b14cb5729e0c8460cd9, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_Time: 2
m_Parameters:
serializedVersion: 3
widthMultiplier: 1
widthCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: -1
tangentMode: 69
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: -1
outSlope: 0
tangentMode: 69
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
colorGradient:
serializedVersion: 2
key0: {r: 1, g: 0.99469995, b: 0.45098042, a: 1}
key1: {r: 1, g: 0.3910084, b: 0.049000025, a: 1}
key2: {r: 0, g: 0, b: 0, a: 0}
key3: {r: 0, g: 0, b: 0, a: 0}
key4: {r: 0, g: 0, b: 0, a: 0}
key5: {r: 0, g: 0, b: 0, a: 0}
key6: {r: 0, g: 0, b: 0, a: 0}
key7: {r: 0, g: 0, b: 0, a: 0}
ctime0: 0
ctime1: 31804
ctime2: 65535
ctime3: 65535
ctime4: 0
ctime5: 0
ctime6: 0
ctime7: 0
atime0: 0
atime1: 65535
atime2: 0
atime3: 0
atime4: 0
atime5: 0
atime6: 0
atime7: 0
m_Mode: 0
m_NumColorKeys: 3
m_NumAlphaKeys: 2
numCornerVertices: 0
numCapVertices: 0
alignment: 0
textureMode: 0
shadowBias: 0.5
generateLightingData: 0
m_MinVertexDistance: 1
m_Autodestruct: 0
m_Emitting: 1
--- !u!114 &654273117314929370
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1038711833328602429}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4528540a139424748a7b6c47bfecc7fd, type: 3}
m_Name:
m_EditorClassIdentifier:
Trail: {fileID: 277178765566372861}
Gravity: 1
--- !u!1 &6642079567538326943
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7887646903913370668}
- component: {fileID: 4191762351494344457}
m_Layer: 0
m_Name: Bullet Manager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7887646903913370668
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6642079567538326943}
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: 7093708978518643867}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &4191762351494344457
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6642079567538326943}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 49c173e3c2313ca4d9d04d0d87ec0f06, type: 3}
m_Name:
m_EditorClassIdentifier:
ProjectilePrototype: {fileID: 4746410263980518329}

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ef449f098500f044e83340f6abe87984
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 14fe34ff60351b84aad296874cdc3ea4
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -815,6 +815,36 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 133322211}
m_CullTransparentMesh: 0
--- !u!1 &134113270
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 134113271}
m_Layer: 0
m_Name: Weapon Effects
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &134113271
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 134113270}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &166261016
GameObject:
m_ObjectHideFlags: 0
@ -5554,81 +5584,6 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 697075015}
m_CullTransparentMesh: 0
--- !u!1 &711560803
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 711560804}
- component: {fileID: 711560806}
- component: {fileID: 711560805}
m_Layer: 5
m_Name: Middle
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!224 &711560804
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 711560803}
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: 1005272801}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 2}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &711560805
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 711560803}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0, g: 0, b: 0, a: 1}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 0
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: ea8a1213adadb5a4fba6b1785033a34b, type: 3}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 2
--- !u!222 &711560806
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 711560803}
m_CullTransparentMesh: 0
--- !u!1 &737569921
GameObject:
m_ObjectHideFlags: 0
@ -8073,9 +8028,6 @@ RectTransform:
m_Children:
- {fileID: 1833294217}
- {fileID: 2041542910}
- {fileID: 1848627100}
- {fileID: 1246864144}
- {fileID: 711560804}
m_Father: {fileID: 7628189704109037581}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -8144,9 +8096,10 @@ MonoBehaviour:
GameplayUI: {fileID: 346000246}
Menu: {fileID: 1726632268}
MenuMap: {fileID: 630131162}
SchematicDisplay: {fileID: 7628189704109037584}
Inventory: {fileID: 1997243495}
ShipPanel: {fileID: 7628189704109037582}
ConfirmationDialog: {fileID: 0}
ConfirmationDialog: {fileID: 620555924}
Sensitivity:
x: -0.005
y: 0.0025
@ -8176,6 +8129,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: bed3b49fe74863340b2a75f3d0517e86, type: 3}
m_Name:
m_EditorClassIdentifier:
EffectManagerParent: {fileID: 134113271}
FogCameraParent: {fileID: 1547889399}
Settings: {fileID: 11400000, guid: cd2344e2001a37544aab0960c164d4ff, type: 2}
ZoneRoot: {fileID: 2095699057}
@ -9321,81 +9275,6 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1187424823}
m_CullTransparentMesh: 0
--- !u!1 &1246864143
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1246864144}
- component: {fileID: 1246864146}
- component: {fileID: 1246864145}
m_Layer: 5
m_Name: Bottom
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!224 &1246864144
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1246864143}
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: 1005272801}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 2}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1246864145
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1246864143}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0, g: 0, b: 0, a: 1}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 0
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: ea8a1213adadb5a4fba6b1785033a34b, type: 3}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 2
--- !u!222 &1246864146
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1246864143}
m_CullTransparentMesh: 0
--- !u!1 &1273980438
GameObject:
m_ObjectHideFlags: 0
@ -12318,7 +12197,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 37.07837}
m_AnchoredPosition: {x: 0, y: 37.078125}
m_SizeDelta: {x: 0, y: 37.07843}
m_Pivot: {x: 0, y: 1}
--- !u!114 &1698810629
@ -13263,81 +13142,6 @@ RectTransform:
m_AnchoredPosition: {x: -0.5, y: 0}
m_SizeDelta: {x: -1, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &1848627099
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1848627100}
- component: {fileID: 1848627102}
- component: {fileID: 1848627101}
m_Layer: 5
m_Name: Divider
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!224 &1848627100
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1848627099}
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: 1005272801}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.45, y: 0}
m_AnchorMax: {x: 0.45, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 2, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1848627101
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1848627099}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0, g: 0, b: 0, a: 1}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 0
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 2
--- !u!222 &1848627102
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1848627099}
m_CullTransparentMesh: 0
--- !u!1 &1850578694
GameObject:
m_ObjectHideFlags: 0
@ -19757,8 +19561,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -80, y: 0}
m_SizeDelta: {x: -160, y: 0}
m_AnchoredPosition: {x: -93, y: 0}
m_SizeDelta: {x: -186, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &7628189704016736660
MonoBehaviour:
@ -20657,6 +20461,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 296faceaa1771414f8744840ecaa026c, type: 3}
m_Name:
m_EditorClassIdentifier:
Settings: {fileID: 11400000, guid: cd2344e2001a37544aab0960c164d4ff, type: 2}
ListElementPrototype: {fileID: 232470599}
TriggerGroupPrototype: {fileID: 1564656282}
EnergyLabel: {fileID: 804489113}

View file

@ -9,7 +9,7 @@ using static Unity.Mathematics.math;
public class SchematicDisplay : MonoBehaviour
{
private GameSettings Settings;
public GameSettings Settings;
public Prototype ListElementPrototype;
public Prototype TriggerGroupPrototype;
@ -129,6 +129,7 @@ public class SchematicDisplay : MonoBehaviour
foreach (var group in x.TriggerGroupElement.GroupBackgrounds)
group.color = TriggerGroupColor;
}
UpdateTriggerGroups();
}
public void UpdateTriggerGroups()
@ -219,6 +220,7 @@ public class SchematicDisplay : MonoBehaviour
HeatstrokeMeterFill.anchorMax = new Vector2(_cockpit.Heatstroke, 1);
HeatstrokeLimitFill.anchorMax = new Vector2(_cockpit.Item.Temperature / Settings.GameplaySettings.HeatstrokeTemperature, 1);
_hull = _ship.Hull;
var hullData = _ship.ItemManager.GetData(_hull);
var dur = _hull.Durability / hullData.Durability;
HullDurabilityFill.anchorMax = new Vector2(dur, 1);
@ -243,7 +245,7 @@ public class SchematicDisplay : MonoBehaviour
x.ListElement.HeatFill.anchorMax = new Vector2(unlerp(itemData.MinimumTemperature,itemData.MaximumTemperature, x.Item.Temperature), 0);
if(x.Cooldown!=null)
x.ListElement.CooldownFill.anchorMax = new Vector2(x.Cooldown.Progress,1);
x.ListElement.DurabilityLabel.text = $"{(x.Item.EquippableItem.Durability / itemData.Durability * 100).SignificantDigits()}%";
x.ListElement.DurabilityLabel.text = $"{(int)(x.Item.EquippableItem.Durability / itemData.Durability * 100)}%";
if (x.ItemUsage != null)
{
x.ListElement.AmmoLabel.text = _ship.CountItemsInCargo(((ItemUsageData) x.ItemUsage.Data).Item).ToString();

View file

@ -28,6 +28,7 @@ public class ActionGameManager : MonoBehaviour
public GameObject GameplayUI;
public MenuPanel Menu;
public MapRenderer MenuMap;
public SchematicDisplay SchematicDisplay;
public InventoryMenu Inventory;
public InventoryPanel ShipPanel;
public ConfirmationDialog ConfirmationDialog;
@ -43,10 +44,9 @@ public class ActionGameManager : MonoBehaviour
private AetheriaInput _input;
private int _zoomLevelIndex;
private Ship _currentShip;
private ShipInput _shipInput;
// private ShipInput _shipInput;
private float2 _shipYawPitch;
private float3 _viewDirection;
private Transform _lookAt;
public List<Ship> PlayerShips { get; } = new List<Ship>();
public DatabaseCache ItemData { get; private set; }
@ -58,7 +58,7 @@ public class ActionGameManager : MonoBehaviour
{
// _transposer = DockCamera.GetCinemachineComponent<CinemachineFramingTransposer>();
// _composer = DockCamera.GetCinemachineComponent<CinemachineComposer>();
_lookAt = new GameObject().transform;
//_lookAt = new GameObject().transform;
ConsoleController.MessageReceiver = this;
_filePath = new DirectoryInfo(Application.dataPath).Parent.CreateSubdirectory("GameData");
@ -143,6 +143,206 @@ public class ActionGameManager : MonoBehaviour
else Undock();
};
#region Trigger Groups
_input.Player.PreviousWeaponGroup.performed += context =>
{
if (_currentShip.Parent != null) return;
SchematicDisplay.SelectedGroupIndex--;
};
_input.Player.NextWeaponGroup.performed += context =>
{
if (_currentShip.Parent != null) return;
SchematicDisplay.SelectedGroupIndex++;
};
_input.Player.PreviousWeapon.performed += context =>
{
if (_currentShip.Parent != null) return;
SchematicDisplay.SelectedItemIndex--;
};
_input.Player.NextWeapon.performed += context =>
{
if (_currentShip.Parent != null) return;
SchematicDisplay.SelectedItemIndex++;
};
_input.Player.ToggleWeaponGroup.performed += context =>
{
if (_currentShip.Parent != null) return;
var item = SchematicDisplay.SchematicItems[SchematicDisplay.SelectedItemIndex];
if (_currentShip.TriggerGroups[SchematicDisplay.SelectedGroupIndex].Contains(item.Item))
_currentShip.TriggerGroups[SchematicDisplay.SelectedGroupIndex].Remove(item.Item);
else _currentShip.TriggerGroups[SchematicDisplay.SelectedGroupIndex].Add(item.Item);
SchematicDisplay.UpdateTriggerGroups();
};
_input.Player.FireGroup1.started += context =>
{
if (_currentShip.Parent != null) return;
foreach (var item in _currentShip.TriggerGroups[0])
{
foreach (var behaviors in item.BehaviorGroups)
{
if (behaviors.Switch != null)
behaviors.Switch.Activated = true;
behaviors.Trigger?.Pull();
}
}
};
_input.Player.FireGroup1.canceled += context =>
{
if (_currentShip.Parent != null) return;
foreach (var item in _currentShip.TriggerGroups[0])
{
foreach (var behaviors in item.BehaviorGroups)
{
if (behaviors.Switch != null)
behaviors.Switch.Activated = false;
}
}
};
_input.Player.FireGroup2.started += context =>
{
if (_currentShip.Parent != null) return;
foreach (var item in _currentShip.TriggerGroups[1])
{
foreach (var behaviors in item.BehaviorGroups)
{
if (behaviors.Switch != null)
behaviors.Switch.Activated = true;
behaviors.Trigger?.Pull();
}
}
};
_input.Player.FireGroup2.canceled += context =>
{
if (_currentShip.Parent != null) return;
foreach (var item in _currentShip.TriggerGroups[1])
{
foreach (var behaviors in item.BehaviorGroups)
{
if (behaviors.Switch != null)
behaviors.Switch.Activated = false;
}
}
};
_input.Player.FireGroup3.started += context =>
{
if (_currentShip.Parent != null) return;
foreach (var item in _currentShip.TriggerGroups[2])
{
foreach (var behaviors in item.BehaviorGroups)
{
if (behaviors.Switch != null)
behaviors.Switch.Activated = true;
behaviors.Trigger?.Pull();
}
}
};
_input.Player.FireGroup3.canceled += context =>
{
if (_currentShip.Parent != null) return;
foreach (var item in _currentShip.TriggerGroups[2])
{
foreach (var behaviors in item.BehaviorGroups)
{
if (behaviors.Switch != null)
behaviors.Switch.Activated = false;
}
}
};
_input.Player.FireGroup4.started += context =>
{
if (_currentShip.Parent != null) return;
foreach (var item in _currentShip.TriggerGroups[3])
{
foreach (var behaviors in item.BehaviorGroups)
{
if (behaviors.Switch != null)
behaviors.Switch.Activated = true;
behaviors.Trigger?.Pull();
}
}
};
_input.Player.FireGroup4.canceled += context =>
{
if (_currentShip.Parent != null) return;
foreach (var item in _currentShip.TriggerGroups[3])
{
foreach (var behaviors in item.BehaviorGroups)
{
if (behaviors.Switch != null)
behaviors.Switch.Activated = false;
}
}
};
_input.Player.FireGroup5.started += context =>
{
if (_currentShip.Parent != null) return;
foreach (var item in _currentShip.TriggerGroups[4])
{
foreach (var behaviors in item.BehaviorGroups)
{
if (behaviors.Switch != null)
behaviors.Switch.Activated = true;
behaviors.Trigger?.Pull();
}
}
};
_input.Player.FireGroup5.canceled += context =>
{
if (_currentShip.Parent != null) return;
foreach (var item in _currentShip.TriggerGroups[4])
{
foreach (var behaviors in item.BehaviorGroups)
{
if (behaviors.Switch != null)
behaviors.Switch.Activated = false;
}
}
};
_input.Player.FireGroup6.started += context =>
{
if (_currentShip.Parent != null) return;
foreach (var item in _currentShip.TriggerGroups[5])
{
foreach (var behaviors in item.BehaviorGroups)
{
if (behaviors.Switch != null)
behaviors.Switch.Activated = true;
behaviors.Trigger?.Pull();
}
}
};
_input.Player.FireGroup6.canceled += context =>
{
if (_currentShip.Parent != null) return;
foreach (var item in _currentShip.TriggerGroups[5])
{
foreach (var behaviors in item.BehaviorGroups)
{
if (behaviors.Switch != null)
behaviors.Switch.Activated = false;
}
}
};
#endregion
// ConsoleController.AddCommand("editmode", _ => ToggleEditMode());
ConsoleController.AddCommand("savezone", args =>
{
@ -183,6 +383,16 @@ public class ActionGameManager : MonoBehaviour
var cockpitData = ItemData.GetAll<GearData>().First(x => x.Behaviors.Any(b=>b is CockpitData));
ship.TryEquip(ItemManager.CreateInstance(cockpitData, .5f, 1) as EquippableItem);
var autocannonData = ItemData.GetAll<GearData>().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<CargoBayData>().First(x => x.Name == "Cargo Bay 4x4");
ship.TryEquip(ItemManager.CreateInstance(cargoData, .5f, 1) as EquippableItem);
var ammoData = ItemData.GetAll<SimpleCommodityData>().First(x => x.Name == "AC2 Ammo");
ship.CargoBays.First().TryStore(ItemManager.CreateInstance(ammoData, 100));
//dockingCargo.TryStore(ItemManager.CreateInstance(reactorData, .5f, 1));
Dock();
@ -213,14 +423,13 @@ public class ActionGameManager : MonoBehaviour
FollowCamera.enabled = false;
_currentShip.Active = false;
var orbital = (OrbitalEntity) entity;
DockCamera.Follow = SectorRenderer.Orbitals[orbital];
DockCamera.Follow = SectorRenderer.EntityInstances[orbital].Transform;
var parentOrbit = Zone.Orbits[orbital.OrbitData].Data.Parent;
var parentPlanet = SectorRenderer.Planets[Zone.Planets.FirstOrDefault(p => p.Value.Orbit == parentOrbit).Key];
DockCamera.LookAt = parentPlanet.Body.transform;
Menu.ShowTab(MenuTab.Inventory);
Inventory.GetPanel.Display(bay);
Inventory.GetPanel.Display(_currentShip);
_shipInput = null;
Cursor.lockState = CursorLockMode.None;
_input.Player.Disable();
GameplayUI.SetActive(false);
@ -251,15 +460,16 @@ public class ActionGameManager : MonoBehaviour
{
Menu.gameObject.SetActive(false);
_currentShip.Active = true;
_shipInput = new ShipInput(_input.Player, _currentShip);
//_shipInput = new ShipInput(_input.Player, _currentShip);
DockCamera.enabled = false;
FollowCamera.enabled = true;
FollowCamera.LookAt = _lookAt;
FollowCamera.Follow = SectorRenderer.Ships[_currentShip].Transform;
FollowCamera.LookAt = SectorRenderer.EntityInstances[_currentShip].LookAtPoint;
FollowCamera.Follow = SectorRenderer.EntityInstances[_currentShip].Transform;
Cursor.lockState = CursorLockMode.Locked;
GameplayUI.SetActive(true);
_input.Player.Enable();
ShipPanel.Display(_currentShip);
SchematicDisplay.ShowShip(_currentShip);
}
else
{
@ -308,64 +518,16 @@ public class ActionGameManager : MonoBehaviour
{
_time += Time.deltaTime;
ItemManager.Time = Time.time;
if(_shipInput!=null)
if(_currentShip.Parent==null)
{
var look = _input.Player.Look.ReadValue<Vector2>();
_shipYawPitch = float2(_shipYawPitch.x + look.x * Sensitivity.x, clamp(_shipYawPitch.y + look.y * Sensitivity.y, -.45f * PI, .45f * PI));
_viewDirection = mul(float3(0, 0, 1), Unity.Mathematics.float3x3.Euler(float3(_shipYawPitch.yx, 0), RotationOrder.YXZ));
_lookAt.position = SectorRenderer.Ships[_currentShip].Transform.position + (Vector3) _viewDirection * 100;
_shipInput.DesiredOrientation = _viewDirection.xz;
_shipInput.Update();
_currentShip.LookDirection = _viewDirection;
_currentShip.MovementDirection = _input.Player.Move.ReadValue<Vector2>();
}
}
Zone.Update(_time, Time.deltaTime);
SectorRenderer.Time = _time;
}
}
public class ShipInput
{
private AetheriaInput.PlayerActions _input;
private Ship _ship;
private Thruster[] _allThrusters;
private Thruster[] _forwardThrusters;
private Thruster[] _reverseThrusters;
private Thruster[] _rightThrusters;
private Thruster[] _leftThrusters;
private Thruster[] _clockwiseThrusters;
private Thruster[] _counterClockwiseThrusters;
public float2 DesiredOrientation { get; set; }
public float DesiredPitch { get; set; }
public ShipInput(AetheriaInput.PlayerActions input, Ship ship)
{
_input = input;
_ship = ship;
_allThrusters = ship.GetBehaviors<Thruster>().ToArray();
_forwardThrusters = _allThrusters.Where(x => x.Item.EquippableItem.Rotation == ItemRotation.Reversed).ToArray();
_reverseThrusters = _allThrusters.Where(x => x.Item.EquippableItem.Rotation == ItemRotation.None).ToArray();
_rightThrusters = _allThrusters.Where(x => x.Item.EquippableItem.Rotation == ItemRotation.CounterClockwise).ToArray();
_leftThrusters = _allThrusters.Where(x => x.Item.EquippableItem.Rotation == ItemRotation.Clockwise).ToArray();
_counterClockwiseThrusters = _allThrusters.Where(x => x.Torque < -.05f).ToArray();
_clockwiseThrusters = _allThrusters.Where(x => x.Torque > .05f).ToArray();
}
public void Update()
{
var move = _input.Move.ReadValue<Vector2>();
foreach (var thruster in _allThrusters) thruster.Axis = 0;
foreach (var thruster in _rightThrusters) thruster.Axis += move.x;
foreach (var thruster in _leftThrusters) thruster.Axis += -move.x;
foreach (var thruster in _forwardThrusters) thruster.Axis += move.y;
foreach (var thruster in _reverseThrusters) thruster.Axis += -move.y;
var deltaRot = dot(normalize(DesiredOrientation), normalize(_ship.Direction).Rotate(ItemRotation.Clockwise));
if (abs(deltaRot) < .01) deltaRot = 0;
deltaRot = pow(abs(deltaRot), .5f) * sign(deltaRot);
foreach (var thruster in _clockwiseThrusters) thruster.Axis += deltaRot;
foreach (var thruster in _counterClockwiseThrusters) thruster.Axis += -deltaRot;
}
}

View file

@ -35,13 +35,53 @@ public class @AetheriaInput : IInputActionCollection, IDisposable
""interactions"": """"
},
{
""name"": ""Fire"",
""name"": ""Fire Group 1"",
""type"": ""Button"",
""id"": ""575943b0-4866-4be0-a289-3253973523b1"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """"
},
{
""name"": ""Fire Group 2"",
""type"": ""Button"",
""id"": ""b9bdfa1f-db61-4ec3-883a-fc3f9e88c5f5"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """"
},
{
""name"": ""Fire Group 3"",
""type"": ""Button"",
""id"": ""d79871a2-8565-4cf3-809f-9c979adfcd81"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """"
},
{
""name"": ""Fire Group 4"",
""type"": ""Button"",
""id"": ""59902e9e-1dfb-4624-9599-72ff763ef327"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """"
},
{
""name"": ""Fire Group 5"",
""type"": ""Button"",
""id"": ""80b549c1-7378-48c5-8da2-ce95b9c92913"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """"
},
{
""name"": ""Fire Group 6"",
""type"": ""Button"",
""id"": ""4ba5091e-051a-41df-9985-6c0e082b20a5"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """"
},
{
""name"": ""Minimap Zoom"",
""type"": ""Button"",
@ -49,6 +89,46 @@ public class @AetheriaInput : IInputActionCollection, IDisposable
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """"
},
{
""name"": ""Next Weapon Group"",
""type"": ""Button"",
""id"": ""8ed69fe0-d934-44ea-94c0-d5d69cc33b32"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """"
},
{
""name"": ""Previous Weapon Group"",
""type"": ""Button"",
""id"": ""93f19768-6c19-4bab-8b53-4e3e5ba764fc"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """"
},
{
""name"": ""Next Weapon"",
""type"": ""Button"",
""id"": ""09a5e315-6290-4ab5-9e7c-55b7523562b7"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """"
},
{
""name"": ""Previous Weapon"",
""type"": ""Button"",
""id"": ""ed923265-545f-4475-ba7c-885371612325"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """"
},
{
""name"": ""Toggle Weapon Group"",
""type"": ""Button"",
""id"": ""c61da4ef-e0bc-4d17-aab0-8e2979c3de3c"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """"
}
],
""bindings"": [
@ -213,7 +293,7 @@ public class @AetheriaInput : IInputActionCollection, IDisposable
""interactions"": """",
""processors"": """",
""groups"": "";Gamepad"",
""action"": ""Fire"",
""action"": ""Fire Group 1"",
""isComposite"": false,
""isPartOfComposite"": false
},
@ -224,18 +304,7 @@ public class @AetheriaInput : IInputActionCollection, IDisposable
""interactions"": """",
""processors"": """",
""groups"": "";Keyboard&Mouse"",
""action"": ""Fire"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""886e731e-7071-4ae4-95c0-e61739dad6fd"",
""path"": ""<Touchscreen>/primaryTouch/tap"",
""interactions"": """",
""processors"": """",
""groups"": """",
""action"": ""Fire"",
""action"": ""Fire Group 1"",
""isComposite"": false,
""isPartOfComposite"": false
},
@ -246,7 +315,18 @@ public class @AetheriaInput : IInputActionCollection, IDisposable
""interactions"": """",
""processors"": """",
""groups"": ""Joystick"",
""action"": ""Fire"",
""action"": ""Fire Group 1"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""8c676533-8c53-4b6a-9368-d194b8a997f8"",
""path"": ""<Keyboard>/1"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard&Mouse"",
""action"": ""Fire Group 1"",
""isComposite"": false,
""isPartOfComposite"": false
},
@ -260,6 +340,138 @@ public class @AetheriaInput : IInputActionCollection, IDisposable
""action"": ""Minimap Zoom"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""444b4049-a11e-4bef-8a57-345c3d1a7545"",
""path"": ""<Keyboard>/rightArrow"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard&Mouse"",
""action"": ""Next Weapon Group"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""fb6c0d4c-dae6-406b-b35a-c35b5d25022c"",
""path"": ""<Keyboard>/leftArrow"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard&Mouse"",
""action"": ""Previous Weapon Group"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""bac8c902-3cad-4a7f-8773-35800a2ee3b9"",
""path"": ""<Keyboard>/downArrow"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard&Mouse"",
""action"": ""Next Weapon"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""969aff21-097a-4c35-9c46-2239e5f321f5"",
""path"": ""<Keyboard>/upArrow"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard&Mouse"",
""action"": ""Previous Weapon"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""a2bcbfda-f091-433f-8ac9-112396507408"",
""path"": ""<Keyboard>/rightCtrl"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard&Mouse"",
""action"": ""Toggle Weapon Group"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""48b8b6ee-8435-439a-96a1-c968254ff605"",
""path"": ""<Mouse>/rightButton"",
""interactions"": """",
""processors"": """",
""groups"": "";Keyboard&Mouse"",
""action"": ""Fire Group 2"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""8ae75721-10ab-4d83-8322-82cbb3fdcc44"",
""path"": ""<Keyboard>/2"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard&Mouse"",
""action"": ""Fire Group 2"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""7f89c9af-795b-4b1e-ad43-dac3350cfbe3"",
""path"": ""<Mouse>/middleButton"",
""interactions"": """",
""processors"": """",
""groups"": "";Keyboard&Mouse"",
""action"": ""Fire Group 3"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""c249f018-c10a-4c2c-a4ba-9fba54ed33e9"",
""path"": ""<Keyboard>/3"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard&Mouse"",
""action"": ""Fire Group 3"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""421e49a0-897e-4ea3-af8d-af96989d2957"",
""path"": ""<Keyboard>/4"",
""interactions"": """",
""processors"": """",
""groups"": "";Keyboard&Mouse"",
""action"": ""Fire Group 4"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""1c8a43b7-4200-43b9-925c-c1634554083c"",
""path"": ""<Keyboard>/5"",
""interactions"": """",
""processors"": """",
""groups"": "";Keyboard&Mouse"",
""action"": ""Fire Group 5"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""0680216e-b462-45a3-8050-2b89dcb615aa"",
""path"": ""<Keyboard>/6"",
""interactions"": """",
""processors"": """",
""groups"": "";Keyboard&Mouse"",
""action"": ""Fire Group 6"",
""isComposite"": false,
""isPartOfComposite"": false
}
]
},
@ -828,8 +1040,18 @@ public class @AetheriaInput : IInputActionCollection, IDisposable
m_Player = asset.FindActionMap("Player", throwIfNotFound: true);
m_Player_Move = m_Player.FindAction("Move", throwIfNotFound: true);
m_Player_Look = m_Player.FindAction("Look", throwIfNotFound: true);
m_Player_Fire = m_Player.FindAction("Fire", throwIfNotFound: true);
m_Player_FireGroup1 = m_Player.FindAction("Fire Group 1", throwIfNotFound: true);
m_Player_FireGroup2 = m_Player.FindAction("Fire Group 2", throwIfNotFound: true);
m_Player_FireGroup3 = m_Player.FindAction("Fire Group 3", throwIfNotFound: true);
m_Player_FireGroup4 = m_Player.FindAction("Fire Group 4", throwIfNotFound: true);
m_Player_FireGroup5 = m_Player.FindAction("Fire Group 5", throwIfNotFound: true);
m_Player_FireGroup6 = m_Player.FindAction("Fire Group 6", throwIfNotFound: true);
m_Player_MinimapZoom = m_Player.FindAction("Minimap Zoom", throwIfNotFound: true);
m_Player_NextWeaponGroup = m_Player.FindAction("Next Weapon Group", throwIfNotFound: true);
m_Player_PreviousWeaponGroup = m_Player.FindAction("Previous Weapon Group", throwIfNotFound: true);
m_Player_NextWeapon = m_Player.FindAction("Next Weapon", throwIfNotFound: true);
m_Player_PreviousWeapon = m_Player.FindAction("Previous Weapon", throwIfNotFound: true);
m_Player_ToggleWeaponGroup = m_Player.FindAction("Toggle Weapon Group", throwIfNotFound: true);
// UI
m_UI = asset.FindActionMap("UI", throwIfNotFound: true);
m_UI_Navigate = m_UI.FindAction("Navigate", throwIfNotFound: true);
@ -897,16 +1119,36 @@ public class @AetheriaInput : IInputActionCollection, IDisposable
private IPlayerActions m_PlayerActionsCallbackInterface;
private readonly InputAction m_Player_Move;
private readonly InputAction m_Player_Look;
private readonly InputAction m_Player_Fire;
private readonly InputAction m_Player_FireGroup1;
private readonly InputAction m_Player_FireGroup2;
private readonly InputAction m_Player_FireGroup3;
private readonly InputAction m_Player_FireGroup4;
private readonly InputAction m_Player_FireGroup5;
private readonly InputAction m_Player_FireGroup6;
private readonly InputAction m_Player_MinimapZoom;
private readonly InputAction m_Player_NextWeaponGroup;
private readonly InputAction m_Player_PreviousWeaponGroup;
private readonly InputAction m_Player_NextWeapon;
private readonly InputAction m_Player_PreviousWeapon;
private readonly InputAction m_Player_ToggleWeaponGroup;
public struct PlayerActions
{
private @AetheriaInput m_Wrapper;
public PlayerActions(@AetheriaInput wrapper) { m_Wrapper = wrapper; }
public InputAction @Move => m_Wrapper.m_Player_Move;
public InputAction @Look => m_Wrapper.m_Player_Look;
public InputAction @Fire => m_Wrapper.m_Player_Fire;
public InputAction @FireGroup1 => m_Wrapper.m_Player_FireGroup1;
public InputAction @FireGroup2 => m_Wrapper.m_Player_FireGroup2;
public InputAction @FireGroup3 => m_Wrapper.m_Player_FireGroup3;
public InputAction @FireGroup4 => m_Wrapper.m_Player_FireGroup4;
public InputAction @FireGroup5 => m_Wrapper.m_Player_FireGroup5;
public InputAction @FireGroup6 => m_Wrapper.m_Player_FireGroup6;
public InputAction @MinimapZoom => m_Wrapper.m_Player_MinimapZoom;
public InputAction @NextWeaponGroup => m_Wrapper.m_Player_NextWeaponGroup;
public InputAction @PreviousWeaponGroup => m_Wrapper.m_Player_PreviousWeaponGroup;
public InputAction @NextWeapon => m_Wrapper.m_Player_NextWeapon;
public InputAction @PreviousWeapon => m_Wrapper.m_Player_PreviousWeapon;
public InputAction @ToggleWeaponGroup => m_Wrapper.m_Player_ToggleWeaponGroup;
public InputActionMap Get() { return m_Wrapper.m_Player; }
public void Enable() { Get().Enable(); }
public void Disable() { Get().Disable(); }
@ -922,12 +1164,42 @@ public class @AetheriaInput : IInputActionCollection, IDisposable
@Look.started -= m_Wrapper.m_PlayerActionsCallbackInterface.OnLook;
@Look.performed -= m_Wrapper.m_PlayerActionsCallbackInterface.OnLook;
@Look.canceled -= m_Wrapper.m_PlayerActionsCallbackInterface.OnLook;
@Fire.started -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFire;
@Fire.performed -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFire;
@Fire.canceled -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFire;
@FireGroup1.started -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFireGroup1;
@FireGroup1.performed -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFireGroup1;
@FireGroup1.canceled -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFireGroup1;
@FireGroup2.started -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFireGroup2;
@FireGroup2.performed -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFireGroup2;
@FireGroup2.canceled -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFireGroup2;
@FireGroup3.started -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFireGroup3;
@FireGroup3.performed -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFireGroup3;
@FireGroup3.canceled -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFireGroup3;
@FireGroup4.started -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFireGroup4;
@FireGroup4.performed -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFireGroup4;
@FireGroup4.canceled -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFireGroup4;
@FireGroup5.started -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFireGroup5;
@FireGroup5.performed -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFireGroup5;
@FireGroup5.canceled -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFireGroup5;
@FireGroup6.started -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFireGroup6;
@FireGroup6.performed -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFireGroup6;
@FireGroup6.canceled -= m_Wrapper.m_PlayerActionsCallbackInterface.OnFireGroup6;
@MinimapZoom.started -= m_Wrapper.m_PlayerActionsCallbackInterface.OnMinimapZoom;
@MinimapZoom.performed -= m_Wrapper.m_PlayerActionsCallbackInterface.OnMinimapZoom;
@MinimapZoom.canceled -= m_Wrapper.m_PlayerActionsCallbackInterface.OnMinimapZoom;
@NextWeaponGroup.started -= m_Wrapper.m_PlayerActionsCallbackInterface.OnNextWeaponGroup;
@NextWeaponGroup.performed -= m_Wrapper.m_PlayerActionsCallbackInterface.OnNextWeaponGroup;
@NextWeaponGroup.canceled -= m_Wrapper.m_PlayerActionsCallbackInterface.OnNextWeaponGroup;
@PreviousWeaponGroup.started -= m_Wrapper.m_PlayerActionsCallbackInterface.OnPreviousWeaponGroup;
@PreviousWeaponGroup.performed -= m_Wrapper.m_PlayerActionsCallbackInterface.OnPreviousWeaponGroup;
@PreviousWeaponGroup.canceled -= m_Wrapper.m_PlayerActionsCallbackInterface.OnPreviousWeaponGroup;
@NextWeapon.started -= m_Wrapper.m_PlayerActionsCallbackInterface.OnNextWeapon;
@NextWeapon.performed -= m_Wrapper.m_PlayerActionsCallbackInterface.OnNextWeapon;
@NextWeapon.canceled -= m_Wrapper.m_PlayerActionsCallbackInterface.OnNextWeapon;
@PreviousWeapon.started -= m_Wrapper.m_PlayerActionsCallbackInterface.OnPreviousWeapon;
@PreviousWeapon.performed -= m_Wrapper.m_PlayerActionsCallbackInterface.OnPreviousWeapon;
@PreviousWeapon.canceled -= m_Wrapper.m_PlayerActionsCallbackInterface.OnPreviousWeapon;
@ToggleWeaponGroup.started -= m_Wrapper.m_PlayerActionsCallbackInterface.OnToggleWeaponGroup;
@ToggleWeaponGroup.performed -= m_Wrapper.m_PlayerActionsCallbackInterface.OnToggleWeaponGroup;
@ToggleWeaponGroup.canceled -= m_Wrapper.m_PlayerActionsCallbackInterface.OnToggleWeaponGroup;
}
m_Wrapper.m_PlayerActionsCallbackInterface = instance;
if (instance != null)
@ -938,12 +1210,42 @@ public class @AetheriaInput : IInputActionCollection, IDisposable
@Look.started += instance.OnLook;
@Look.performed += instance.OnLook;
@Look.canceled += instance.OnLook;
@Fire.started += instance.OnFire;
@Fire.performed += instance.OnFire;
@Fire.canceled += instance.OnFire;
@FireGroup1.started += instance.OnFireGroup1;
@FireGroup1.performed += instance.OnFireGroup1;
@FireGroup1.canceled += instance.OnFireGroup1;
@FireGroup2.started += instance.OnFireGroup2;
@FireGroup2.performed += instance.OnFireGroup2;
@FireGroup2.canceled += instance.OnFireGroup2;
@FireGroup3.started += instance.OnFireGroup3;
@FireGroup3.performed += instance.OnFireGroup3;
@FireGroup3.canceled += instance.OnFireGroup3;
@FireGroup4.started += instance.OnFireGroup4;
@FireGroup4.performed += instance.OnFireGroup4;
@FireGroup4.canceled += instance.OnFireGroup4;
@FireGroup5.started += instance.OnFireGroup5;
@FireGroup5.performed += instance.OnFireGroup5;
@FireGroup5.canceled += instance.OnFireGroup5;
@FireGroup6.started += instance.OnFireGroup6;
@FireGroup6.performed += instance.OnFireGroup6;
@FireGroup6.canceled += instance.OnFireGroup6;
@MinimapZoom.started += instance.OnMinimapZoom;
@MinimapZoom.performed += instance.OnMinimapZoom;
@MinimapZoom.canceled += instance.OnMinimapZoom;
@NextWeaponGroup.started += instance.OnNextWeaponGroup;
@NextWeaponGroup.performed += instance.OnNextWeaponGroup;
@NextWeaponGroup.canceled += instance.OnNextWeaponGroup;
@PreviousWeaponGroup.started += instance.OnPreviousWeaponGroup;
@PreviousWeaponGroup.performed += instance.OnPreviousWeaponGroup;
@PreviousWeaponGroup.canceled += instance.OnPreviousWeaponGroup;
@NextWeapon.started += instance.OnNextWeapon;
@NextWeapon.performed += instance.OnNextWeapon;
@NextWeapon.canceled += instance.OnNextWeapon;
@PreviousWeapon.started += instance.OnPreviousWeapon;
@PreviousWeapon.performed += instance.OnPreviousWeapon;
@PreviousWeapon.canceled += instance.OnPreviousWeapon;
@ToggleWeaponGroup.started += instance.OnToggleWeaponGroup;
@ToggleWeaponGroup.performed += instance.OnToggleWeaponGroup;
@ToggleWeaponGroup.canceled += instance.OnToggleWeaponGroup;
}
}
}
@ -1125,8 +1427,18 @@ public class @AetheriaInput : IInputActionCollection, IDisposable
{
void OnMove(InputAction.CallbackContext context);
void OnLook(InputAction.CallbackContext context);
void OnFire(InputAction.CallbackContext context);
void OnFireGroup1(InputAction.CallbackContext context);
void OnFireGroup2(InputAction.CallbackContext context);
void OnFireGroup3(InputAction.CallbackContext context);
void OnFireGroup4(InputAction.CallbackContext context);
void OnFireGroup5(InputAction.CallbackContext context);
void OnFireGroup6(InputAction.CallbackContext context);
void OnMinimapZoom(InputAction.CallbackContext context);
void OnNextWeaponGroup(InputAction.CallbackContext context);
void OnPreviousWeaponGroup(InputAction.CallbackContext context);
void OnNextWeapon(InputAction.CallbackContext context);
void OnPreviousWeapon(InputAction.CallbackContext context);
void OnToggleWeaponGroup(InputAction.CallbackContext context);
}
public interface IUIActions
{

View file

@ -691,7 +691,7 @@ public class DatabaseInspector : EditorWindow
public float4[] InspectAnimationCurve(string label, float4[] value)
{
var val = value != null && value.Length > 0
? new AnimationCurve(value.Select(v => new Keyframe(v.x, v.y, v.z, v.w)).ToArray())
? value.ToCurve()
: new AnimationCurve();
using (var h = new HorizontalScope())
{

View file

@ -17,6 +17,7 @@ using Random = UnityEngine.Random;
public class SectorRenderer : MonoBehaviour
{
public Transform EffectManagerParent;
public Transform FogCameraParent;
public GameSettings Settings;
public Transform ZoneRoot;
@ -54,9 +55,7 @@ public class SectorRenderer : MonoBehaviour
public Texture2D PlanetIcon;
[HideInInspector]
public Dictionary<OrbitalEntity, Transform> Orbitals = new Dictionary<OrbitalEntity, Transform>();
[HideInInspector]
public Dictionary<Ship, ShipInstance> Ships = new Dictionary<Ship, ShipInstance>();
public Dictionary<Entity, EntityInstance> EntityInstances = new Dictionary<Entity, EntityInstance>();
[HideInInspector]
public Dictionary<Guid, PlanetObject> Planets = new Dictionary<Guid, PlanetObject>();
@ -64,6 +63,8 @@ public class SectorRenderer : MonoBehaviour
private Dictionary<Guid, InstancedMesh[]> _beltMeshes = new Dictionary<Guid, InstancedMesh[]>();
private Dictionary<Guid, Matrix4x4[][]> _beltMatrices = new Dictionary<Guid, Matrix4x4[][]>();
private Dictionary<Guid, float3[]> _beltAsteroidPositions = new Dictionary<Guid, float3[]>();
private Dictionary<ProjectileWeaponData, ProjectileManager> _projectileManagers = new Dictionary<ProjectileWeaponData, ProjectileManager>();
private Dictionary<LauncherData, GuidedProjectileManager> _guidedProjectileManagers = new Dictionary<LauncherData, GuidedProjectileManager>();
private Zone _zone;
private float _viewDistance;
private float _maxDepth;
@ -172,45 +173,99 @@ public class SectorRenderer : MonoBehaviour
void LoadEntity(Entity entity)
{
var hullData = ItemManager.GetData(entity.Hull) as HullData;
EntityInstance instance;
if (entity is Ship ship)
{
var shipInstance = new ShipInstance();
shipInstance.Ship = ship;
shipInstance.Transform = Instantiate(UnityHelpers.LoadAsset<GameObject>(hullData.Prefab), ZoneRoot).transform;
instance = new ShipInstance();
instance.Transform = Instantiate(UnityHelpers.LoadAsset<GameObject>(hullData.Prefab), ZoneRoot).transform;
instance.Prefab = instance.Transform.GetComponent<EntityPrefab>();
var shipInstance = (ShipInstance) instance;
shipInstance.Thrusters = ship.GetBehaviors<Thruster>().ToArray();
shipInstance.ThrusterParticles = shipInstance.Thrusters
.Select(x =>
{
var particles = Instantiate(UnityHelpers.LoadAsset<ParticleSystem>(((ThrusterData) x.Data).ParticlesPrefab), shipInstance.Transform, false);
var particlesShape = particles.shape;
particlesShape.meshRenderer = shipInstance.Transform.Find(x.Entity.Hardpoints[x.Item.Position.x, x.Item.Position.y].Transform)
.GetComponent<MeshRenderer>();
particlesShape.meshRenderer = shipInstance.Prefab.ThrusterHardpoints
.FirstOrDefault(t => t.name == x.Entity.Hardpoints[x.Item.Position.x, x.Item.Position.y].Transform)
?.Emitter;
return particles;
})
.ToArray();
shipInstance.ThrusterBaseEmission = shipInstance.ThrusterParticles.Select(x => x.emission.rateOverTimeMultiplier).ToArray();
Ships.Add(ship, shipInstance);
}
else if (entity is OrbitalEntity orbital)
else
{
Orbitals.Add(orbital,Instantiate(UnityHelpers.LoadAsset<GameObject>(hullData.Prefab)).transform);
instance = new EntityInstance();
instance.Transform = Instantiate(UnityHelpers.LoadAsset<GameObject>(hullData.Prefab), ZoneRoot).transform;
instance.Prefab = instance.Transform.GetComponent<EntityPrefab>();
}
instance.Entity = entity;
foreach (var item in entity.Equipment)
{
foreach (var behavior in item.Behaviors)
{
if (behavior is InstantWeapon instantWeapon)
{
if (behavior.Data is ProjectileWeaponData projectileWeaponData)
{
if (!_projectileManagers.ContainsKey(projectileWeaponData))
{
var managerPrefab = UnityHelpers.LoadAsset<ProjectileManager>(projectileWeaponData.EffectPrefab);
if(managerPrefab)
{
_projectileManagers.Add(projectileWeaponData, Instantiate(managerPrefab, EffectManagerParent));
}
else Debug.LogError($"No ProjectileManager prefab found at path {projectileWeaponData.EffectPrefab}");
}
instantWeapon.OnFire += () => _projectileManagers[projectileWeaponData].Launch(projectileWeaponData, item, instance);
}
else if (behavior.Data is LauncherData launcherData)
{
if (!_guidedProjectileManagers.ContainsKey(launcherData))
{
var managerPrefab = UnityHelpers.LoadAsset<GuidedProjectileManager>(launcherData.EffectPrefab);
if(managerPrefab)
{
_guidedProjectileManagers.Add(launcherData, Instantiate(managerPrefab, EffectManagerParent));
}
else Debug.LogError($"No ProjectileManager prefab found at path {launcherData.EffectPrefab}");
}
instantWeapon.OnFire += () =>
_guidedProjectileManagers[launcherData].Launch(launcherData, item, instance, EntityInstances[entity.Target]);
}
}
}
}
instance.Barrels = new Dictionary<HardpointData, Transform[]>();
instance.BarrelIndices = new Dictionary<HardpointData, int>();
foreach (var hp in hullData.Hardpoints)
{
var whp = instance.Prefab.WeaponHardpoints.FirstOrDefault(x => x.name == hp.Transform);
if(whp)
{
instance.Barrels.Add(hp, whp.FiringPoint);
instance.BarrelIndices.Add(hp, 0);
}
}
instance.LookAtPoint = new GameObject().transform;
foreach (var articulationPoint in instance.Prefab.ArticulationPoints)
{
articulationPoint.Target = instance.LookAtPoint;
}
EntityInstances.Add(entity, instance);
}
void UnloadEntity(Entity entity)
{
if (entity is Ship ship)
{
Destroy(Ships[ship].Transform.gameObject);
foreach(var p in Ships[ship].ThrusterParticles)
Destroy(p.gameObject);
Ships.Remove(ship);
}
else if (entity is OrbitalEntity orbital)
{
Destroy(Orbitals[orbital].gameObject);
Orbitals.Remove(orbital);
}
Destroy(EntityInstances[entity].Transform.gameObject);
EntityInstances.Remove(entity);
}
void LoadPlanet(BodyData planetData)
@ -369,35 +424,36 @@ public class SectorRenderer : MonoBehaviour
else planet.Value.Body.transform.rotation *= Quaternion.AngleAxis(Settings.PlanetRotationSpeed, Vector3.up);
}
foreach (var ship in Ships)
foreach (var entity in EntityInstances)
{
var hullData = ItemManager.GetData(ship.Key.Hull) as HullData;
var h = _zone.GetHeight(ship.Key.Position);
ship.Value.Transform.position = new Vector3(ship.Key.Position.x,h + hullData.GridOffset,ship.Key.Position.y);
var normal = _zone.GetNormal(ship.Key.Position);
var f = new float2(normal.x, normal.z);
var fl = lengthsq(f);
if(fl > .001)
var hullData = ItemManager.GetData(entity.Key.Hull) as HullData;
if(entity.Key is Ship ship)
{
var fa = 1 / (1 - fl) - 1;
ship.Key.Velocity += normalize(f) * Settings.PlanetSettings.GravityStrength * fa;
}
//Debug.Log($"Normal: {normal}");
var shipRight = ship.Key.Direction.Rotate(ItemRotation.Clockwise);
var forward = Vector3.Cross(new Vector3(shipRight.x,0,shipRight.y), normal);
ship.Value.Transform.rotation = Quaternion.LookRotation(forward, normal);
for (int i = 0; i < ship.Value.Thrusters.Length; i++)
{
var emissionModule = ship.Value.ThrusterParticles[i].emission;
emissionModule.rateOverTimeMultiplier = ship.Value.ThrusterBaseEmission[i] * ship.Value.Thrusters[i].Axis;
}
}
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;
}
foreach (var orbital in Orbitals)
{
var hullData = ItemManager.GetData(orbital.Key.Hull) as HullData;
var h = _zone.GetHeight(orbital.Key.Position);
orbital.Value.position = new Vector3(orbital.Key.Position.x,h + hullData.GridOffset,orbital.Key.Position.y);
//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.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);
}
var fogPos = FogCameraParent.position;
@ -416,13 +472,32 @@ public class SectorRenderer : MonoBehaviour
}
}
public class ShipInstance
public class EntityInstance
{
public Entity Entity;
public Transform Transform;
public EntityPrefab Prefab;
public Dictionary<HardpointData, Transform[]> Barrels;
public Dictionary<HardpointData, int> BarrelIndices;
public Transform LookAtPoint;
public Transform GetBarrel(HardpointData hardpoint)
{
if (Barrels.ContainsKey(hardpoint))
{
var barrel = Barrels[hardpoint][BarrelIndices[hardpoint]];
BarrelIndices[hardpoint] = (BarrelIndices[hardpoint] + 1) % Barrels[hardpoint].Length;
return barrel;
}
return Transform;
}
}
public class ShipInstance : EntityInstance
{
public ParticleSystem[] ThrusterParticles;
public Thruster[] Thrusters;
public float[] ThrusterBaseEmission;
public Ship Ship;
public Transform Transform;
}
[Serializable]

View file

@ -0,0 +1,74 @@
/* 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;
using MessagePack;
using Newtonsoft.Json;
[InspectableField, MessagePackObject, JsonObject(MemberSerialization.OptIn)]
public class ConstantWeaponData : WeaponData
{
public override IBehavior CreateInstance(ItemManager context, Entity entity, EquippedItem item)
{
return new ConstantWeapon(context, this, entity, item);
}
}
public class ConstantWeapon : IBehavior, IAlwaysUpdatedBehavior
{
private ConstantWeaponData _data;
public int _burstCount;
public float _burstTimer;
private Entity Entity { get; }
private EquippedItem Item { get; }
private ItemManager Context { get; }
public BehaviorData Data => _data;
public event Action OnStartFiring;
public event Action OnStopFiring;
private bool _firing;
private bool _stoppedFiring;
public ConstantWeapon(ItemManager context, ConstantWeaponData c, Entity entity, EquippedItem item)
{
Context = context;
_data = c;
Entity = entity;
Item = item;
}
public bool Update(float delta)
{
if (!_firing)
{
_firing = true;
OnStartFiring?.Invoke();
}
_stoppedFiring = false;
return true;
}
public void AlwaysUpdate(float delta)
{
// Update executes after AlwaysUpdate,
// so if the stop flag didn't get disabled previous frame,
// we know the weapon has stopped firing
if (_firing)
{
if (_stoppedFiring)
{
_firing = false;
_stoppedFiring = false;
OnStopFiring?.Invoke();
}
else
_stoppedFiring = true;
}
}
}

View file

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

View file

@ -7,11 +7,8 @@ using Newtonsoft.Json;
using Unity.Mathematics;
[InspectableField, MessagePackObject, JsonObject(MemberSerialization.OptIn)]
public class LauncherData : WeaponData
public class LauncherData : InstantWeaponData
{
[InspectablePrefab, JsonProperty("missile"), Key(6)]
public string MissilePrefab;
[InspectableAnimationCurve, JsonProperty("guidance"), Key(7)]
public float4[] GuidanceCurve;
@ -41,7 +38,7 @@ public class LauncherData : WeaponData
public override IBehavior CreateInstance(ItemManager context, Entity entity, EquippedItem item)
{
return new Launcher(context, this, entity, item);
return new InstantWeapon(context, this, entity, item);
}
}

View file

@ -2,15 +2,13 @@
* 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;
using MessagePack;
using Newtonsoft.Json;
[InspectableField, MessagePackObject, JsonObject(MemberSerialization.OptIn)]
public class ProjectileWeaponData : WeaponData
public class ProjectileWeaponData : InstantWeaponData
{
[InspectablePrefab, JsonProperty("bullet"), Key(6)]
public string BulletPrefab;
[InspectableField, JsonProperty("spread"), Key(7)]
public PerformanceStat Spread = new PerformanceStat();
@ -22,46 +20,6 @@ public class ProjectileWeaponData : WeaponData
public override IBehavior CreateInstance(ItemManager context, Entity entity, EquippedItem item)
{
return new ProjectileWeapon(context, this, entity, item);
}
}
public class ProjectileWeapon : IBehavior
{
private ProjectileWeaponData _data;
private Entity Entity { get; }
private EquippedItem Item { get; }
private ItemManager Context { get; }
public BehaviorData Data => _data;
public ProjectileWeapon(ItemManager context, ProjectileWeaponData c, Entity entity, EquippedItem item)
{
Context = context;
_data = c;
Entity = entity;
Item = item;
}
// private void Fire()
// {
// Hardpoint.Temperature += _projectileWeapon.Heat.Evaluate(Hardpoint) / Hardpoint.HeatCapacity;
// var inst = GameObject.Instantiate(_projectileWeapon.BulletPrefab).transform;
// Physics.IgnoreCollision(Hardpoint.Ship.Ship.GetComponent<Collider>(), inst.GetComponent<Collider>());
// var bullet = inst.GetComponent<Bullet>();
// bullet.Target = Hardpoint.Ship.Ship.Target;
// bullet.Source = Hardpoint.Ship.Ship.Hitpoints;
// bullet.Lifetime = _projectileWeapon.Range.Evaluate(Hardpoint) / _projectileWeapon.Velocity.Evaluate(Hardpoint);
// bullet.Damage = _projectileWeapon.Damage.Evaluate(Hardpoint);
// inst.position = Hardpoint.Proxy.position;
// inst.rotation = Hardpoint.Proxy.rotation;
// inst.GetComponent<Rigidbody>().velocity = _projectileWeapon.Velocity.Evaluate(Hardpoint) * Vector3.RotateTowards(-inst.forward, Hardpoint.Ship.Ship.Direction, _projectileWeapon.Deflection * Mathf.Deg2Rad, 1);
// Hardpoint.Ship.Ship.AudioSource.PlayOneShot(_projectileWeapon.Sounds.RandomElement());
// Debug.Log($"Firing bullet {b}");
// }
public bool Update(float delta)
{
return true;
return new InstantWeapon(context, this, entity, item);
}
}

View file

@ -51,8 +51,11 @@ public class Visibility : IBehavior, IAlwaysUpdatedBehavior
public void AlwaysUpdate(float delta)
{
// TODO: Time independent decay?
Entity.VisibilitySources[this] *= Context.Evaluate(_data.VisibilityDecay, Item.EquippableItem, Entity);
if (Entity.VisibilitySources[this] < 0.01f) Entity.VisibilitySources.Remove(this);
if(Entity.VisibilitySources.ContainsKey(this))
{
Entity.VisibilitySources[this] *= Context.Evaluate(_data.VisibilityDecay, Item.EquippableItem, Entity);
if (Entity.VisibilitySources[this] < 0.01f) Entity.VisibilitySources.Remove(this);
}
}
}

View file

@ -2,11 +2,13 @@
* 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;
using MessagePack;
using Newtonsoft.Json;
[Union(0, typeof(ProjectileWeaponData)),
Union(1, typeof(LauncherData))]
Union(1, typeof(LauncherData)),
Union(2, typeof(ConstantWeaponData))]
public abstract class WeaponData : BehaviorData
{
[InspectableField, JsonProperty("damageType"), Key(1)]
@ -17,10 +19,93 @@ public abstract class WeaponData : BehaviorData
[InspectableField, JsonProperty("range"), Key(3)]
public PerformanceStat Range = new PerformanceStat();
[InspectablePrefab, JsonProperty("effect"), Key(4)]
public string EffectPrefab;
}
[InspectableField, JsonProperty("burstCount"), Key(4)]
[InspectableField, MessagePackObject, JsonObject(MemberSerialization.OptIn)]
public abstract class InstantWeaponData : WeaponData
{
[InspectableField, JsonProperty("burstCount"), Key(5)]
public int BurstCount;
[InspectableField, JsonProperty("burstTime"), Key(5)]
[InspectableField, JsonProperty("burstTime"), Key(6)]
public PerformanceStat BurstTime = new PerformanceStat();
}
public class InstantWeapon : IBehavior, IAlwaysUpdatedBehavior
{
private InstantWeaponData _data;
public int _burstCount;
public float _burstTimer;
private Entity Entity { get; }
private EquippedItem Item { get; }
private ItemManager Context { get; }
public BehaviorData Data => _data;
public event Action OnFire;
private float _burstTime;
public InstantWeapon(ItemManager context, InstantWeaponData c, Entity entity, EquippedItem item)
{
Context = context;
_data = c;
Entity = entity;
Item = item;
}
// private void Fire()
// {
// Hardpoint.Temperature += _projectileWeapon.Heat.Evaluate(Hardpoint) / Hardpoint.HeatCapacity;
// var inst = GameObject.Instantiate(_projectileWeapon.BulletPrefab).transform;
// Physics.IgnoreCollision(Hardpoint.Ship.Ship.GetComponent<Collider>(), inst.GetComponent<Collider>());
// var bullet = inst.GetComponent<Bullet>();
// bullet.Target = Hardpoint.Ship.Ship.Target;
// bullet.Source = Hardpoint.Ship.Ship.Hitpoints;
// bullet.Lifetime = _projectileWeapon.Range.Evaluate(Hardpoint) / _projectileWeapon.Velocity.Evaluate(Hardpoint);
// bullet.Damage = _projectileWeapon.Damage.Evaluate(Hardpoint);
// inst.position = Hardpoint.Proxy.position;
// inst.rotation = Hardpoint.Proxy.rotation;
// inst.GetComponent<Rigidbody>().velocity = _projectileWeapon.Velocity.Evaluate(Hardpoint) * Vector3.RotateTowards(-inst.forward, Hardpoint.Ship.Ship.Direction, _projectileWeapon.Deflection * Mathf.Deg2Rad, 1);
// Hardpoint.Ship.Ship.AudioSource.PlayOneShot(_projectileWeapon.Sounds.RandomElement());
// Debug.Log($"Firing bullet {b}");
// }
public bool Update(float delta)
{
_burstTime = Context.Evaluate(_data.BurstTime, Item.EquippableItem, Entity) / _burstCount;
if (_burstTime < .01f)
{
for(int i=0; i<_data.BurstCount; i++)
OnFire?.Invoke();
}
else
{
_burstCount = _data.BurstCount;
Fire();
}
return true;
}
private void Fire()
{
_burstCount--;
_burstTimer = _burstTime;
OnFire?.Invoke();
}
public void AlwaysUpdate(float delta)
{
if(_burstCount > 0)
{
_burstTimer -= delta;
if(_burstTimer < 0)
Fire();
}
}
}

View file

@ -38,6 +38,9 @@ public abstract class Entity
public Entity Parent;
public List<Entity> Children = new List<Entity>();
public Entity Target;
public float3 LookDirection;
public string Name;
@ -56,7 +59,7 @@ public abstract class Entity
public HardpointData[,] Hardpoints;
private EquippedItem[] _orderedEquipment;
private bool _active;
protected bool _active;
public ItemManager ItemManager { get; }
public int AssignedPopulation => PopulationAssignments.Sum(pa => pa.AssignedPopulation);
@ -77,10 +80,13 @@ public abstract class Entity
if(behavior is IInitializableBehavior initializableBehavior)
initializableBehavior.Initialize();
}
OnActivate();
}
}
}
protected virtual void OnActivate(){}
public Entity(ItemManager itemManager, Zone zone, EquippableItem hull)
{
ItemManager = itemManager;
@ -231,9 +237,10 @@ public abstract class Entity
foreach (var i in itemData.Shape.Coordinates)
{
// If there is any gear already occupying that space, it won't fit
// If there's a hardpoint there, it won't fit
// Thermal items have their own layer and do not collide with gear
var itemCoord = hullCoord + itemData.Shape.Rotate(i, item.Rotation);
if (!hullData.InteriorCells[itemCoord] || (itemData.HardpointType == HardpointType.Thermal ? ThermalOccupancy : GearOccupancy)[itemCoord.x, itemCoord.y] != null) return false;
if (!hullData.InteriorCells[itemCoord] || (itemData.HardpointType == HardpointType.Tool && Hardpoints[itemCoord.x, itemCoord.y] != null) || (itemData.HardpointType == HardpointType.Thermal ? ThermalOccupancy : GearOccupancy)[itemCoord.x, itemCoord.y] != null) return false;
}
}
else
@ -661,6 +668,9 @@ public class EquippedItem
// EquippableItem.Durability -= delta;
// return;
// }
foreach (var behavior in Behaviors.Where(b => b is IAlwaysUpdatedBehavior).Cast<IAlwaysUpdatedBehavior>())
behavior.AlwaysUpdate(delta);
foreach (var group in BehaviorGroups)
{
@ -670,9 +680,6 @@ public class EquippedItem
break;
}
}
foreach (var behavior in Behaviors.Where(b => b is IAlwaysUpdatedBehavior).Cast<IAlwaysUpdatedBehavior>())
behavior.AlwaysUpdate(delta);
}
}

View file

@ -22,7 +22,27 @@ public class Ship : Entity
// [IgnoreMember] public Dictionary<Targetable, float> Contacts = new Dictionary<Targetable, float>();
// [IgnoreMember] public Targetable Target;
public Entity HomeEntity;
public float2 MovementDirection;
private Thruster[] _allThrusters;
private Thruster[] _forwardThrusters;
private Thruster[] _reverseThrusters;
private Thruster[] _rightThrusters;
private Thruster[] _leftThrusters;
private Thruster[] _clockwiseThrusters;
private Thruster[] _counterClockwiseThrusters;
protected override void OnActivate()
{
_allThrusters = GetBehaviors<Thruster>().ToArray();
_forwardThrusters = _allThrusters.Where(x => x.Item.EquippableItem.Rotation == ItemRotation.Reversed).ToArray();
_reverseThrusters = _allThrusters.Where(x => x.Item.EquippableItem.Rotation == ItemRotation.None).ToArray();
_rightThrusters = _allThrusters.Where(x => x.Item.EquippableItem.Rotation == ItemRotation.CounterClockwise).ToArray();
_leftThrusters = _allThrusters.Where(x => x.Item.EquippableItem.Rotation == ItemRotation.Clockwise).ToArray();
_counterClockwiseThrusters = _allThrusters.Where(x => x.Torque < -.05f).ToArray();
_clockwiseThrusters = _allThrusters.Where(x => x.Torque > .05f).ToArray();
}
public Ship(ItemManager itemManager, Zone zone, EquippableItem hull) : base(itemManager, zone, hull)
{
}
@ -30,6 +50,21 @@ public class Ship : Entity
public override void Update(float delta)
{
Position += Velocity * delta;
if (_active)
{
foreach (var thruster in _allThrusters) thruster.Axis = 0;
foreach (var thruster in _rightThrusters) thruster.Axis += MovementDirection.x;
foreach (var thruster in _leftThrusters) thruster.Axis += -MovementDirection.x;
foreach (var thruster in _forwardThrusters) thruster.Axis += MovementDirection.y;
foreach (var thruster in _reverseThrusters) thruster.Axis += -MovementDirection.y;
var deltaRot = dot(normalize(LookDirection.xz), normalize(Direction).Rotate(ItemRotation.Clockwise));
if (abs(deltaRot) < .01) deltaRot = 0;
deltaRot = pow(abs(deltaRot), .5f) * sign(deltaRot);
foreach (var thruster in _clockwiseThrusters) thruster.Axis += deltaRot;
foreach (var thruster in _counterClockwiseThrusters) thruster.Axis += -deltaRot;
}
base.Update(delta);
}
}

View file

@ -6,6 +6,7 @@ using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.UI;
public class ConfirmationDialog : PropertiesPanel
@ -55,7 +56,7 @@ public class ConfirmationDialog : PropertiesPanel
Confirm.gameObject.SetActive(onConfirm!=null);
_onCancel = onCancel;
Cancel.gameObject.SetActive(onCancel!=null);
transform.position = Input.mousePosition;
transform.position = Mouse.current.position.ReadValue();
CancelClickCatcher.gameObject.SetActive(true);
}
}

View file

@ -104,6 +104,11 @@ public static class UnityExtensions
grad.colorKeys = keys.Select(k => new GradientColorKey(k.xyz.ToColor(), k.w)).ToArray();
return grad;
}
public static AnimationCurve ToCurve(this float4[] keys)
{
return new AnimationCurve(keys.Select(v => new Keyframe(v.x, v.y, v.z, v.w)).ToArray());
}
public static Color ToColor(this float3 v) => new Color(v.x,v.y,v.z);

BIN
Assets/Textures/Clouds.tif (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,118 @@
fileFormatVersion: 2
guid: 03439e9aaf6fde147b3180cc862cc0d9
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 1
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: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
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: 2
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
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: 2048
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: 2048
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:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Textures/SmokePuff04.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,118 @@
fileFormatVersion: 2
guid: 00c20b20ba76f4c48a789cbe75464292
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 1
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: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
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: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
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: 2048
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: 2048
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:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Textures/SplatAlbedo.tif (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,118 @@
fileFormatVersion: 2
guid: 014f8223958fab24583f73350dca0c8c
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 1
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: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
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: 2
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
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: 2048
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: 2048
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:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Textures/wispySmoke.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,118 @@
fileFormatVersion: 2
guid: fa06303e8ff368c4ab4e9e8c1353f8ea
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 1
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: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
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: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 4096
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: 4096
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: 4096
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:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Textures/wispySmoke.tif (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,118 @@
fileFormatVersion: 2
guid: 94b1ede4b08b71f479951e0ed9d27867
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 1
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: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
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: 2
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 4096
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: 4096
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: 4096
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:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,8 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ThrusterHardpoint : MonoBehaviour
{
public MeshRenderer Emitter;
}

View file

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

View file

@ -0,0 +1,8 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WeaponHardpoint : MonoBehaviour
{
public Transform[] FiringPoint;
}

View file

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

View file

@ -513,6 +513,7 @@
<Compile Include="Assets\Scripts\ServerShared\ZoneData.cs" />
<Compile Include="Assets\Scripts\ServerShared\NIH\LinqFaster\Max.cs" />
<Compile Include="Assets\Scripts\ServerShared\Behaviors\Heatsink.cs" />
<Compile Include="Assets\Scripts\ServerShared\Behaviors\ConstantWeapon.cs" />
<None Include="Assets\Scripts\ServerShared\NIH\LinqFaster\readme.txt" />
<None Include="Assets\Scripts\ServerShared\Economy.Shared.Unity.asmdef" />
<Reference Include="Unity.Mathematics">

BIN
ProjectSettings/TagManager.asset (Stored with Git LFS)

Binary file not shown.