Added visual objects and general improvements
|
@ -0,0 +1,15 @@
|
||||||
|
[gd_resource type="Environment" load_steps=3 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://Images/panorama_image.png" type="Texture" id=1]
|
||||||
|
|
||||||
|
[sub_resource type="PanoramaSky" id=1]
|
||||||
|
panorama = ExtResource( 1 )
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
background_mode = 2
|
||||||
|
background_sky = SubResource( 1 )
|
||||||
|
ambient_light_color = Color( 0.117647, 0.117647, 0.117647, 1 )
|
||||||
|
fog_sun_amount = 0.1
|
||||||
|
ss_reflections_enabled = true
|
||||||
|
glow_enabled = true
|
||||||
|
adjustment_enabled = true
|
After Width: | Height: | Size: 3.5 MiB |
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/SkyboxRenders0001.png-e90d5f0e63c7d1480412f2de6b949d06.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Images/SkyboxRenders0001.png"
|
||||||
|
dest_files=[ "res://.import/SkyboxRenders0001.png-e90d5f0e63c7d1480412f2de6b949d06.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=true
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=true
|
||||||
|
svg/scale=1.0
|
After Width: | Height: | Size: 3.5 MiB |
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/SkyboxRenders0002.png-4b870b253eb492764816d60b140de504.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Images/SkyboxRenders0002.png"
|
||||||
|
dest_files=[ "res://.import/SkyboxRenders0002.png-4b870b253eb492764816d60b140de504.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=true
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=true
|
||||||
|
svg/scale=1.0
|
After Width: | Height: | Size: 3.6 MiB |
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/SkyboxRenders0003.png-5bed2ac3068f6d85afdcb306db03373f.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Images/SkyboxRenders0003.png"
|
||||||
|
dest_files=[ "res://.import/SkyboxRenders0003.png-5bed2ac3068f6d85afdcb306db03373f.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=true
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=true
|
||||||
|
svg/scale=1.0
|
After Width: | Height: | Size: 3.6 MiB |
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/SkyboxRenders0004.png-5e5fbe1a5d82fa24e1b715deacded9a1.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Images/SkyboxRenders0004.png"
|
||||||
|
dest_files=[ "res://.import/SkyboxRenders0004.png-5e5fbe1a5d82fa24e1b715deacded9a1.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=true
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=true
|
||||||
|
svg/scale=1.0
|
After Width: | Height: | Size: 3.6 MiB |
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/SkyboxRenders0005.png-367c082d7cd1d522f620057b642f3fa8.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Images/SkyboxRenders0005.png"
|
||||||
|
dest_files=[ "res://.import/SkyboxRenders0005.png-367c082d7cd1d522f620057b642f3fa8.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=true
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=true
|
||||||
|
svg/scale=1.0
|
After Width: | Height: | Size: 3.6 MiB |
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/SkyboxRenders0006.png-eab2f649cc6c30c576ef73f086479c2a.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Images/SkyboxRenders0006.png"
|
||||||
|
dest_files=[ "res://.import/SkyboxRenders0006.png-eab2f649cc6c30c576ef73f086479c2a.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=true
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=true
|
||||||
|
svg/scale=1.0
|
After Width: | Height: | Size: 507 KiB |
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/TurnEndBanner.png-a90b9a4eed25ec1b1f123b58935ae15d.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Images/TurnEndBanner.png"
|
||||||
|
dest_files=[ "res://.import/TurnEndBanner.png-a90b9a4eed25ec1b1f123b58935ae15d.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=true
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=true
|
||||||
|
svg/scale=1.0
|
After Width: | Height: | Size: 5.9 MiB |
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/panorama_image.png-178bb12d9e039543725b0fef97a1b592.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Images/panorama_image.png"
|
||||||
|
dest_files=[ "res://.import/panorama_image.png-178bb12d9e039543725b0fef97a1b592.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=true
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=true
|
||||||
|
svg/scale=1.0
|
After Width: | Height: | Size: 6.6 MiB |
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/untitled.png-a0f1fc1860ecf9644cee4cc88bcd28e6.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Images/untitled.png"
|
||||||
|
dest_files=[ "res://.import/untitled.png-a0f1fc1860ecf9644cee4cc88bcd28e6.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=true
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=true
|
||||||
|
svg/scale=1.0
|
|
@ -0,0 +1,19 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wavefront_obj"
|
||||||
|
type="Mesh"
|
||||||
|
path="res://.import/Arrow.obj-f256cfacd791e4c2bd7755e5546b08ad.mesh"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
files=[ "res://.import/Arrow.obj-f256cfacd791e4c2bd7755e5546b08ad.mesh" ]
|
||||||
|
|
||||||
|
source_file="res://Models/Arrow.obj"
|
||||||
|
dest_files=[ "res://.import/Arrow.obj-f256cfacd791e4c2bd7755e5546b08ad.mesh", "res://.import/Arrow.obj-f256cfacd791e4c2bd7755e5546b08ad.mesh" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
generate_tangents=true
|
||||||
|
scale_mesh=Vector3( 1, 1, 1 )
|
||||||
|
offset_mesh=Vector3( 0, 0, 0 )
|
||||||
|
optimize_mesh=true
|
|
@ -0,0 +1,19 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wavefront_obj"
|
||||||
|
type="Mesh"
|
||||||
|
path="res://.import/RotateArrow.obj-449845451b89d81b4cb27588b1771bb7.mesh"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
files=[ "res://.import/RotateArrow.obj-449845451b89d81b4cb27588b1771bb7.mesh" ]
|
||||||
|
|
||||||
|
source_file="res://Models/RotateArrow.obj"
|
||||||
|
dest_files=[ "res://.import/RotateArrow.obj-449845451b89d81b4cb27588b1771bb7.mesh", "res://.import/RotateArrow.obj-449845451b89d81b4cb27588b1771bb7.mesh" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
generate_tangents=true
|
||||||
|
scale_mesh=Vector3( 1, 1, 1 )
|
||||||
|
offset_mesh=Vector3( 0, 0, 0 )
|
||||||
|
optimize_mesh=true
|
|
@ -0,0 +1,33 @@
|
||||||
|
[gd_scene load_steps=4 format=2]
|
||||||
|
|
||||||
|
[sub_resource type="ParticlesMaterial" id=1]
|
||||||
|
lifetime_randomness = 0.41
|
||||||
|
spread = 5.0
|
||||||
|
gravity = Vector3( 0, 0, 0 )
|
||||||
|
initial_velocity = 100.0
|
||||||
|
initial_velocity_random = 0.66
|
||||||
|
tangential_accel_random = 1.0
|
||||||
|
damping = 11.49
|
||||||
|
scale = 0.2
|
||||||
|
scale_random = 0.51
|
||||||
|
|
||||||
|
[sub_resource type="SpatialMaterial" id=2]
|
||||||
|
albedo_color = Color( 0, 0, 0, 1 )
|
||||||
|
emission_enabled = true
|
||||||
|
emission = Color( 0, 0.905882, 1, 1 )
|
||||||
|
emission_energy = 16.0
|
||||||
|
emission_operator = 0
|
||||||
|
emission_on_uv2 = false
|
||||||
|
|
||||||
|
[sub_resource type="SphereMesh" id=3]
|
||||||
|
material = SubResource( 2 )
|
||||||
|
radius = 0.2
|
||||||
|
height = 0.2
|
||||||
|
|
||||||
|
[node name="Particles" type="Particles"]
|
||||||
|
transform = Transform( -0.00766045, 0.00642787, 0, -0.00642787, -0.00766045, 0, 0, 0, 0.01, 0, 0, 0 )
|
||||||
|
emitting = false
|
||||||
|
amount = 50
|
||||||
|
lifetime = 0.4
|
||||||
|
process_material = SubResource( 1 )
|
||||||
|
draw_pass_1 = SubResource( 3 )
|
|
@ -1,17 +1,120 @@
|
||||||
[gd_scene load_steps=3 format=2]
|
[gd_scene load_steps=12 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://Scripts/Player.gd" type="Script" id=1]
|
[ext_resource path="res://Scripts/Player.gd" type="Script" id=1]
|
||||||
|
[ext_resource path="res://Models/Arrow.obj" type="ArrayMesh" id=2]
|
||||||
|
[ext_resource path="res://Models/RotateArrow.obj" type="ArrayMesh" id=3]
|
||||||
|
[ext_resource path="res://Shaders/ArrowMaterial.tres" type="Material" id=4]
|
||||||
|
[ext_resource path="res://Models/spaceship_model_modified.tscn" type="PackedScene" id=5]
|
||||||
|
[ext_resource path="res://Models/spaceship_engine_model_modified.tscn" type="PackedScene" id=6]
|
||||||
|
[ext_resource path="res://Scenes/EngineParticles.tscn" type="PackedScene" id=7]
|
||||||
|
[ext_resource path="res://Images/TurnEndBanner.png" type="Texture" id=8]
|
||||||
|
[ext_resource path="res://Animations/TurnEndBanner.anim" type="Animation" id=9]
|
||||||
|
|
||||||
[sub_resource type="CapsuleMesh" id=1]
|
[sub_resource type="CapsuleShape" id=1]
|
||||||
radius = 0.1
|
radius = 0.15
|
||||||
mid_height = 0.5
|
height = 0.6
|
||||||
|
|
||||||
[node name="Player" type="Spatial"]
|
[sub_resource type="CanvasItemMaterial" id=2]
|
||||||
|
light_mode = 1
|
||||||
|
|
||||||
|
[node name="Player" type="RigidBody"]
|
||||||
|
gravity_scale = -128.0
|
||||||
script = ExtResource( 1 )
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
[node name="MeshInstance" type="MeshInstance" parent="."]
|
[node name="EngineParticleContainer" type="Spatial" parent="."]
|
||||||
mesh = SubResource( 1 )
|
|
||||||
material/0 = null
|
[node name="S-X,R+Y" parent="EngineParticleContainer" instance=ExtResource( 7 )]
|
||||||
|
transform = Transform( 0.01, 0, 0, 0, 0.01, 0, 0, 0, 0.01, 0.170458, 0, 0.243815 )
|
||||||
|
|
||||||
|
[node name="S-X,R-Y" parent="EngineParticleContainer" instance=ExtResource( 7 )]
|
||||||
|
transform = Transform( 0.01, 0, 0, 0, 0.01, 0, 0, 0, 0.01, 0.21263, 0, -0.339794 )
|
||||||
|
|
||||||
|
[node name="S+X,R+Y" parent="EngineParticleContainer" instance=ExtResource( 7 )]
|
||||||
|
transform = Transform( -0.01, 0, 3.25841e-09, 0, 0.01, 0, -3.25841e-09, 0, -0.01, -0.214023, 0, -0.339794 )
|
||||||
|
|
||||||
|
[node name="S+X,R-Y" parent="EngineParticleContainer" instance=ExtResource( 7 )]
|
||||||
|
transform = Transform( -0.01, 0, 3.25841e-09, 0, 0.01, 0, -3.25841e-09, 0, -0.01, -0.176102, 0, 0.244114 )
|
||||||
|
|
||||||
|
[node name="S-Y,R+Z,R+X" parent="EngineParticleContainer" instance=ExtResource( 7 )]
|
||||||
|
transform = Transform( -1.62921e-09, -0.01, 0, 0.01, -1.62921e-09, 0, 0, 0, 0.01, -0.0497533, 0.0974464, 0.270828 )
|
||||||
|
|
||||||
|
[node name="S-Y,R-Z,R+X" parent="EngineParticleContainer" instance=ExtResource( 7 )]
|
||||||
|
transform = Transform( -1.62921e-09, -0.01, 0, 0.01, -1.62921e-09, 0, 0, 0, 0.01, 0.0501123, 0.0974464, 0.270828 )
|
||||||
|
|
||||||
|
[node name="S-Y,R-Z,R-X" parent="EngineParticleContainer" instance=ExtResource( 7 )]
|
||||||
|
transform = Transform( -1.62921e-09, -0.01, 0, 0.01, -1.62921e-09, 0, 0, 0, 0.01, 0.0697536, 0.127716, -0.354388 )
|
||||||
|
|
||||||
|
[node name="S-Y,R+Z,R-X" parent="EngineParticleContainer" instance=ExtResource( 7 )]
|
||||||
|
transform = Transform( -1.62921e-09, -0.01, 0, 0.01, -1.62921e-09, 0, 0, 0, 0.01, -0.0699186, 0.127716, -0.354388 )
|
||||||
|
|
||||||
|
[node name="S+Y,R-Z,R+X" parent="EngineParticleContainer" instance=ExtResource( 7 )]
|
||||||
|
transform = Transform( 1.19249e-10, 0.01, 0, -0.01, 1.19249e-10, 0, 0, 0, 0.01, -0.0699186, -0.128048, -0.354388 )
|
||||||
|
|
||||||
|
[node name="S+Y,R+Z,R+X" parent="EngineParticleContainer" instance=ExtResource( 7 )]
|
||||||
|
transform = Transform( 1.19249e-10, 0.01, 0, -0.01, 1.19249e-10, 0, 0, 0, 0.01, 0.0700162, -0.128048, -0.354388 )
|
||||||
|
|
||||||
|
[node name="S+Y,R-Z,R-X" parent="EngineParticleContainer" instance=ExtResource( 7 )]
|
||||||
|
transform = Transform( 1.19249e-10, 0.01, 0, -0.01, 1.19249e-10, 0, 0, 0, 0.01, -0.0497533, -0.126886, 0.270828 )
|
||||||
|
|
||||||
|
[node name="S+Y,R+Z,R-X" parent="EngineParticleContainer" instance=ExtResource( 7 )]
|
||||||
|
transform = Transform( 1.19249e-10, 0.01, 0, -0.01, 1.19249e-10, 0, 0, 0, 0.01, 0.0497652, -0.126886, 0.270828 )
|
||||||
|
|
||||||
|
[node name="SZ" parent="EngineParticleContainer" instance=ExtResource( 7 )]
|
||||||
|
transform = Transform( -3.25841e-09, 0, 0.02, 0, 0.02, 0, -0.02, 0, -3.25841e-09, 0.0588414, 0.000427529, -0.564202 )
|
||||||
|
|
||||||
|
[node name="SZ2" parent="EngineParticleContainer" instance=ExtResource( 7 )]
|
||||||
|
transform = Transform( -3.25841e-09, 0, 0.02, 0, 0.02, 0, -0.02, 0, -3.25841e-09, -0.0578827, 0.000427529, -0.564202 )
|
||||||
|
|
||||||
|
[node name="EngineContainer" type="Spatial" parent="."]
|
||||||
|
|
||||||
|
[node name="spaceship-engine" parent="EngineContainer" instance=ExtResource( 6 )]
|
||||||
|
transform = Transform( 0.05, 0, 0, 0, -2.18557e-09, 0.05, 0, -0.05, -2.18557e-09, -0.058048, 0, -0.499619 )
|
||||||
|
|
||||||
|
[node name="spaceship-engine2" parent="EngineContainer" instance=ExtResource( 6 )]
|
||||||
|
transform = Transform( 0.05, 0, 0, 0, -2.18557e-09, 0.05, 0, -0.05, -2.18557e-09, 0.058, 0, -0.5 )
|
||||||
|
|
||||||
|
[node name="spaceship-engine3" parent="EngineContainer" instance=ExtResource( 6 )]
|
||||||
|
transform = Transform( -3.25841e-09, -0.02, -3.25841e-09, 0, -3.25841e-09, 0.02, -0.02, 3.25841e-09, 5.30863e-16, -0.188586, 0, -0.340403 )
|
||||||
|
|
||||||
|
[node name="spaceship-engine5" parent="EngineContainer" instance=ExtResource( 6 )]
|
||||||
|
transform = Transform( -3.25841e-09, -0.02, -3.25841e-09, 0, -3.25841e-09, 0.02, -0.02, 3.25841e-09, 5.30863e-16, -0.15, 0, 0.244 )
|
||||||
|
|
||||||
|
[node name="spaceship-engine6" parent="EngineContainer" instance=ExtResource( 6 )]
|
||||||
|
transform = Transform( -3.25841e-09, 0.02, 3.25841e-09, 0, -3.25841e-09, 0.02, 0.02, 3.25841e-09, 5.30863e-16, 0.15, 0, 0.244 )
|
||||||
|
|
||||||
|
[node name="spaceship-engine4" parent="EngineContainer" instance=ExtResource( 6 )]
|
||||||
|
transform = Transform( -3.25841e-09, 0.02, 3.25841e-09, 0, -3.25841e-09, 0.02, 0.02, 3.25841e-09, 5.30863e-16, 0.189, 0, -0.34 )
|
||||||
|
|
||||||
|
[node name="spaceship-engine7" parent="EngineContainer" instance=ExtResource( 6 )]
|
||||||
|
transform = Transform( 0.02, 0, 0, 0, 0.02, 0, 0, 0, 0.02, 0.0697057, 0.102263, -0.354755 )
|
||||||
|
|
||||||
|
[node name="spaceship-engine11" parent="EngineContainer" instance=ExtResource( 6 )]
|
||||||
|
transform = Transform( 0.02, 0, 0, 0, 0.02, 0, 0, 0, 0.02, -0.07, 0.102, -0.355 )
|
||||||
|
|
||||||
|
[node name="spaceship-engine8" parent="EngineContainer" instance=ExtResource( 6 )]
|
||||||
|
transform = Transform( 0.02, 0, 0, 0, -0.02, 6.51683e-09, 0, -6.51683e-09, -0.02, 0.07, -0.102, -0.355 )
|
||||||
|
|
||||||
|
[node name="spaceship-engine12" parent="EngineContainer" instance=ExtResource( 6 )]
|
||||||
|
transform = Transform( 0.02, 0, 0, 0, -0.02, 6.51683e-09, 0, -6.51683e-09, -0.02, -0.07, -0.102, -0.355 )
|
||||||
|
|
||||||
|
[node name="spaceship-engine9" parent="EngineContainer" instance=ExtResource( 6 )]
|
||||||
|
transform = Transform( 0.02, 0, 0, 0, -0.02, 6.51683e-09, 0, -6.51683e-09, -0.02, 0.0497166, -0.102, 0.271 )
|
||||||
|
|
||||||
|
[node name="spaceship-engine13" parent="EngineContainer" instance=ExtResource( 6 )]
|
||||||
|
transform = Transform( 0.02, 0, 0, 0, -0.02, 6.51683e-09, 0, -6.51683e-09, -0.02, -0.05, -0.102, 0.271 )
|
||||||
|
|
||||||
|
[node name="spaceship-engine10" parent="EngineContainer" instance=ExtResource( 6 )]
|
||||||
|
transform = Transform( 0.02, 0, 0, 0, 0.02, 0, 0, 0, 0.02, 0.05, 0.073, 0.271 )
|
||||||
|
|
||||||
|
[node name="spaceship-engine14" parent="EngineContainer" instance=ExtResource( 6 )]
|
||||||
|
transform = Transform( 0.02, 0, 0, 0, 0.02, 0, 0, 0, 0.02, -0.05, 0.073, 0.271 )
|
||||||
|
|
||||||
|
[node name="spaceship" parent="." instance=ExtResource( 5 )]
|
||||||
|
transform = Transform( -2.44381e-08, 0, -0.15, 0, 0.15, 0, 0.15, 0, -2.44381e-08, 0, 0, 0 )
|
||||||
|
|
||||||
|
[node name="CollisionShape" type="CollisionShape" parent="."]
|
||||||
|
transform = Transform( 1, 0, 0, 0, 0.519, 0, 0, 0, 1, 0, 0, -0.034 )
|
||||||
|
shape = SubResource( 1 )
|
||||||
|
|
||||||
[node name="MainPanel" type="Panel" parent="."]
|
[node name="MainPanel" type="Panel" parent="."]
|
||||||
visible = false
|
visible = false
|
||||||
|
@ -28,7 +131,7 @@ __meta__ = {
|
||||||
|
|
||||||
[node name="TimeBar" type="HSlider" parent="MainPanel"]
|
[node name="TimeBar" type="HSlider" parent="MainPanel"]
|
||||||
anchor_top = 0.5
|
anchor_top = 0.5
|
||||||
anchor_right = 0.6
|
anchor_right = 0.5
|
||||||
anchor_bottom = 0.5
|
anchor_bottom = 0.5
|
||||||
margin_left = 10.0
|
margin_left = 10.0
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
@ -53,6 +156,19 @@ __meta__ = {
|
||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[node name="PlayButton" type="Button" parent="MainPanel"]
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 0.6
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
margin_left = 6.0
|
||||||
|
margin_right = -1.0
|
||||||
|
grow_vertical = 2
|
||||||
|
text = "Play"
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
[node name="RemoveButton" type="Button" parent="MainPanel"]
|
[node name="RemoveButton" type="Button" parent="MainPanel"]
|
||||||
anchor_left = 0.7
|
anchor_left = 0.7
|
||||||
anchor_top = 0.5
|
anchor_top = 0.5
|
||||||
|
@ -92,7 +208,28 @@ __meta__ = {
|
||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[node name="ArrowContainer" type="Spatial" parent="."]
|
||||||
|
|
||||||
|
[node name="ArrowScaleContainer" type="Spatial" parent="ArrowContainer"]
|
||||||
|
transform = Transform( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.478 )
|
||||||
|
|
||||||
|
[node name="Arrow" type="MeshInstance" parent="ArrowContainer/ArrowScaleContainer"]
|
||||||
|
transform = Transform( 0.15, 0, 0, 0, 0.15, 0, 0, 0, 0.215, -0.00275069, -0.00179684, -0.000424862 )
|
||||||
|
mesh = ExtResource( 2 )
|
||||||
|
material/0 = ExtResource( 4 )
|
||||||
|
|
||||||
|
[node name="RotateArrowContainer" type="Spatial" parent="."]
|
||||||
|
|
||||||
|
[node name="RotateArrowScaleContainer" type="Spatial" parent="RotateArrowContainer"]
|
||||||
|
transform = Transform( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )
|
||||||
|
|
||||||
|
[node name="RotateArrow" type="MeshInstance" parent="RotateArrowContainer/RotateArrowScaleContainer"]
|
||||||
|
transform = Transform( 0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0 )
|
||||||
|
mesh = ExtResource( 3 )
|
||||||
|
material/0 = ExtResource( 4 )
|
||||||
|
|
||||||
[node name="ThrustPanel" type="Panel" parent="."]
|
[node name="ThrustPanel" type="Panel" parent="."]
|
||||||
|
visible = false
|
||||||
anchor_left = 1.0
|
anchor_left = 1.0
|
||||||
anchor_top = 1.0
|
anchor_top = 1.0
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
|
@ -269,8 +406,29 @@ max_value = 1.0
|
||||||
step = 0.001
|
step = 0.001
|
||||||
tick_count = 3
|
tick_count = 3
|
||||||
ticks_on_borders = true
|
ticks_on_borders = true
|
||||||
|
|
||||||
|
[node name="TurnEndBanner" type="TextureRect" parent="."]
|
||||||
|
visible = false
|
||||||
|
modulate = Color( 1, 1, 1, 0 )
|
||||||
|
material = SubResource( 2 )
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
margin_left = -20.0
|
||||||
|
margin_right = 20.0
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource( 8 )
|
||||||
|
expand = true
|
||||||
|
stretch_mode = 6
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="TurnEndBanner"]
|
||||||
|
autoplay = "ShowEndTurnBanner"
|
||||||
|
anims/ShowEndTurnBanner = ExtResource( 9 )
|
||||||
[connection signal="value_changed" from="MainPanel/TimeBar" to="." method="_on_TimeBar_value_changed"]
|
[connection signal="value_changed" from="MainPanel/TimeBar" to="." method="_on_TimeBar_value_changed"]
|
||||||
[connection signal="pressed" from="MainPanel/AddButton" to="." method="_on_AddButton_pressed"]
|
[connection signal="pressed" from="MainPanel/AddButton" to="." method="_on_AddButton_pressed"]
|
||||||
|
[connection signal="pressed" from="MainPanel/PlayButton" to="." method="_on_PlayButton_pressed"]
|
||||||
[connection signal="pressed" from="MainPanel/RemoveButton" to="." method="_on_RemoveButton_pressed"]
|
[connection signal="pressed" from="MainPanel/RemoveButton" to="." method="_on_RemoveButton_pressed"]
|
||||||
[connection signal="pressed" from="MainPanel/ClearButton" to="." method="_on_ClearButton_pressed"]
|
[connection signal="pressed" from="MainPanel/ClearButton" to="." method="_on_ClearButton_pressed"]
|
||||||
[connection signal="pressed" from="MainPanel/EndTurnButton" to="." method="_on_EndTurnButton_pressed"]
|
[connection signal="pressed" from="MainPanel/EndTurnButton" to="." method="_on_EndTurnButton_pressed"]
|
||||||
|
|
|
@ -1,12 +1,15 @@
|
||||||
[gd_scene load_steps=3 format=2]
|
[gd_scene load_steps=4 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://Scripts/RootNode.gd" type="Script" id=1]
|
[ext_resource path="res://Scripts/RootNode.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://Scenes/Lobby.tscn" type="PackedScene" id=2]
|
[ext_resource path="res://Scenes/Lobby.tscn" type="PackedScene" id=2]
|
||||||
|
[ext_resource path="res://Environment.tres" type="Environment" id=3]
|
||||||
|
|
||||||
[node name="RootNode" type="Node"]
|
[node name="RootNode" type="Node"]
|
||||||
script = ExtResource( 1 )
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
[node name="Lobby" parent="." instance=ExtResource( 2 )]
|
[node name="Lobby" parent="." instance=ExtResource( 2 )]
|
||||||
|
margin_top = 1.0
|
||||||
|
margin_bottom = 1.0
|
||||||
|
|
||||||
[node name="ConsoleOutput" type="TextEdit" parent="."]
|
[node name="ConsoleOutput" type="TextEdit" parent="."]
|
||||||
visible = false
|
visible = false
|
||||||
|
@ -18,3 +21,6 @@ caret_moving_by_right_click = false
|
||||||
__meta__ = {
|
__meta__ = {
|
||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||||
|
environment = ExtResource( 3 )
|
||||||
|
|
|
@ -7,9 +7,11 @@ const Player = preload("res://Scenes/Player.tscn")
|
||||||
remote func place_player(player_id : int, position : Vector3, rotation : Vector3) -> void:
|
remote func place_player(player_id : int, position : Vector3, rotation : Vector3) -> void:
|
||||||
get_parent().console_print('Placing player with id: ' + String(player_id))
|
get_parent().console_print('Placing player with id: ' + String(player_id))
|
||||||
var player = Player.instance()
|
var player = Player.instance()
|
||||||
player.translation = position
|
player.set_name('player' + String(player_id))
|
||||||
player.rotation = rotation
|
|
||||||
add_child(player)
|
add_child(player)
|
||||||
|
player.set_translation(position)
|
||||||
|
player.set_rotation(rotation)
|
||||||
|
get_parent().console_print('Player Coords: ' + String(player.translation) + String(player.rotation))
|
||||||
players[player_id] = player
|
players[player_id] = player
|
||||||
if player_id == get_tree().get_network_unique_id():
|
if player_id == get_tree().get_network_unique_id():
|
||||||
player.is_local = true
|
player.is_local = true
|
||||||
|
@ -18,3 +20,7 @@ remote func place_player(player_id : int, position : Vector3, rotation : Vector3
|
||||||
|
|
||||||
func init():
|
func init():
|
||||||
get_parent().arena_ready()
|
get_parent().arena_ready()
|
||||||
|
|
||||||
|
func play_full_plans():
|
||||||
|
for player in players.values():
|
||||||
|
player.play_full_plan()
|
||||||
|
|
|
@ -27,7 +27,7 @@ func remove_all_elements() -> void:
|
||||||
|
|
||||||
func new_turn() -> void:
|
func new_turn() -> void:
|
||||||
for current_element in current_elements:
|
for current_element in current_elements:
|
||||||
elements.push_back(current_elements.pop_back())
|
elements.push_back(current_elements.pop_front())
|
||||||
|
|
||||||
func sanity_check() -> bool:
|
func sanity_check() -> bool:
|
||||||
# Returns true if sane and false if insane
|
# Returns true if sane and false if insane
|
||||||
|
|
|
@ -1,92 +1,354 @@
|
||||||
extends Spatial
|
extends RigidBody
|
||||||
|
|
||||||
var plan : Plan = Plan.new()
|
var thrust_plan : Plan = Plan.new()
|
||||||
var is_local : bool = false
|
var is_local : bool = false
|
||||||
|
var running_plan : bool = false
|
||||||
|
var plan_time : float = 0.0
|
||||||
|
var last_translation : Vector3 = get_translation()
|
||||||
|
var last_rotation : Vector3 = get_rotation()
|
||||||
|
var initial_translation : Vector3 = get_translation()
|
||||||
|
var initial_rotation : Vector3 = get_rotation()
|
||||||
|
var initial_velocity : Vector3 = Vector3(0,0,0)
|
||||||
|
var initial_rotational_velocity : Vector3 = Vector3(0,0,0)
|
||||||
|
var enable_physics : bool = false
|
||||||
|
|
||||||
|
var round_time : float = 0.0
|
||||||
|
var end_of_round_translation : Vector3 = get_translation()
|
||||||
|
var end_of_round_rotation : Vector3 = get_rotation()
|
||||||
|
|
||||||
|
onready var arrow_obj : Spatial = $ArrowContainer
|
||||||
|
onready var arrow_scale_obj : Spatial = $ArrowContainer/ArrowScaleContainer
|
||||||
|
onready var rotate_arrow_obj : Spatial = $RotateArrowContainer
|
||||||
|
onready var rotate_arrow_scale_obj : Spatial = $RotateArrowContainer/RotateArrowScaleContainer
|
||||||
|
|
||||||
|
onready var turn_end_banner : TextureRect = $TurnEndBanner
|
||||||
|
|
||||||
|
const TIME_STEP : float = 0.01
|
||||||
|
const MAX_LIN_THRUST : float = 1.0
|
||||||
|
const MAX_ROT_THRUST : float = 1.0
|
||||||
|
|
||||||
func init() -> void:
|
func init() -> void:
|
||||||
|
last_rotation = get_rotation()
|
||||||
|
last_translation = get_translation()
|
||||||
|
initial_rotation = get_rotation()
|
||||||
|
initial_translation = get_translation()
|
||||||
|
enable_physics = true
|
||||||
get_parent().get_parent().console_print("Player is set to local? " + String(is_local))
|
get_parent().get_parent().console_print("Player is set to local? " + String(is_local))
|
||||||
if is_local:
|
if is_local:
|
||||||
$MainPanel.visible = true
|
$MainPanel.visible = true
|
||||||
$ThrustPanel.visible = true
|
$ThrustPanel.visible = true
|
||||||
|
|
||||||
|
func send_thrust_plan() -> void:
|
||||||
|
for element in thrust_plan.current_elements:
|
||||||
|
get_parent().get_parent().console_print('Sending data = ' + String(element.time) + String(element.linear_thrust) + String(element.rotational_thrust))
|
||||||
|
rpc_id(1, "add_thrust_element", element.time, element.linear_thrust, element.rotational_thrust)
|
||||||
|
|
||||||
|
remote func add_thrust_element(time: float, linear_thrust : Vector3, rotational_thrust : Vector3) -> void:
|
||||||
|
if is_local:
|
||||||
|
return
|
||||||
|
var element : ThrustElement = ThrustElement.new()
|
||||||
|
element.time = time
|
||||||
|
element.linear_thrust = linear_thrust
|
||||||
|
element.rotational_thrust = rotational_thrust
|
||||||
|
get_parent().get_parent().console_print(String(is_local) + ": Adding thrust element with the following params: time = " + String(time) + ", lin = " + String(linear_thrust) + ", rot = " + String(rotational_thrust) + ".")
|
||||||
|
thrust_plan.add_element(element)
|
||||||
|
|
||||||
|
remote func r_end_turn() -> void:
|
||||||
|
self._on_PlayButton_pressed()
|
||||||
|
if is_local:
|
||||||
|
$MainPanel/EndTurnButton.disabled = false
|
||||||
|
$MainPanel/TimeBar.value = 0
|
||||||
|
$TurnEndBanner.visible = true
|
||||||
|
$TurnEndBanner/AnimationPlayer.play()
|
||||||
|
return
|
||||||
|
thrust_plan.new_turn()
|
||||||
|
|
||||||
func _on_TimeBar_value_changed(value : float) -> void:
|
func _on_TimeBar_value_changed(value : float) -> void:
|
||||||
var min_time : float = plan.current_time()
|
var min_time : float = thrust_plan.current_time()
|
||||||
get_parent().get_parent().console_print("Current plan time is " + String(min_time))
|
get_parent().get_parent().console_print(String(is_local) + ": Current plan time is " + String(min_time))
|
||||||
if value <= min_time:
|
if value <= min_time:
|
||||||
$MainPanel/TimeBar.value = min_time
|
$MainPanel/TimeBar.value = min_time
|
||||||
|
|
||||||
|
|
||||||
func _on_AddButton_pressed() -> void:
|
func _on_AddButton_pressed() -> void:
|
||||||
var new_thrust_element : ThrustElement = ThrustElement.new()
|
var new_thrust_element : ThrustElement = ThrustElement.new()
|
||||||
new_thrust_element.linear_thrust = get_linear_vector()
|
new_thrust_element.linear_thrust = get_linear_vector()
|
||||||
new_thrust_element.rotational_thrust = get_rotational_vector()
|
new_thrust_element.rotational_thrust = get_rotational_vector()
|
||||||
new_thrust_element.time = $MainPanel/TimeBar.value - plan.current_time()
|
new_thrust_element.time = $MainPanel/TimeBar.value - thrust_plan.current_time()
|
||||||
if (plan.add_element(new_thrust_element)):
|
if (thrust_plan.add_element(new_thrust_element)):
|
||||||
get_parent().get_parent().console_print("Added thrust element")
|
get_parent().get_parent().console_print(String(is_local) + ": Added thrust element with " + String(new_thrust_element.time) + String(new_thrust_element.rotational_thrust) + String(new_thrust_element.linear_thrust))
|
||||||
else:
|
else:
|
||||||
get_parent().get_parent().console_print("Failed to add thrust element")
|
get_parent().get_parent().console_print(String(is_local) + ": Failed to add thrust element")
|
||||||
|
|
||||||
|
|
||||||
func _on_RemoveButton_pressed() -> void:
|
func _on_RemoveButton_pressed() -> void:
|
||||||
plan.remove_last_element()
|
thrust_plan.remove_last_element()
|
||||||
|
|
||||||
|
|
||||||
func _on_ClearButton_pressed() -> void:
|
func _on_ClearButton_pressed() -> void:
|
||||||
plan.remove_all_elements()
|
thrust_plan.remove_all_elements()
|
||||||
|
|
||||||
|
|
||||||
func _on_EndTurnButton_pressed() -> void:
|
func _on_EndTurnButton_pressed() -> void:
|
||||||
plan.new_turn()
|
$MainPanel/EndTurnButton.disabled = true
|
||||||
|
send_thrust_plan()
|
||||||
|
rpc_id(1, "end_turn")
|
||||||
|
thrust_plan.new_turn()
|
||||||
|
round_time += 5
|
||||||
# TODO: Add the rest functionality
|
# TODO: Add the rest functionality
|
||||||
|
|
||||||
|
func _update_arrow() -> void:
|
||||||
|
var linear_thrust : Vector3 = get_linear_vector()
|
||||||
|
var linear_thrust_normalized : Vector3 = linear_thrust.normalized()
|
||||||
|
var linear_thrust_magnitude : float = linear_thrust.length()
|
||||||
|
var phi : float
|
||||||
|
if linear_thrust_normalized.x == 0 and linear_thrust_normalized.z == 0:
|
||||||
|
phi = PI/2
|
||||||
|
else:
|
||||||
|
phi = asin(linear_thrust_normalized.x / sqrt(pow(linear_thrust_normalized.x, 2) + pow(linear_thrust_normalized.z,2)))
|
||||||
|
|
||||||
|
if linear_thrust_normalized.z < 0:
|
||||||
|
phi = PI - phi
|
||||||
|
var theta : float = -asin(linear_thrust_normalized.y)
|
||||||
|
arrow_obj.rotation = Vector3(0,0,0)
|
||||||
|
arrow_obj.rotate(Vector3(1,0,0), theta)
|
||||||
|
arrow_obj.rotate(Vector3(0,1,0), phi)
|
||||||
|
arrow_scale_obj.scale = Vector3(linear_thrust_magnitude, linear_thrust_magnitude, linear_thrust_magnitude)
|
||||||
|
|
||||||
|
func _update_rotate_arrow() -> void:
|
||||||
|
var rotational_thrust : Vector3 = get_rotational_vector()
|
||||||
|
var rotational_thrust_normalized : Vector3 = rotational_thrust.normalized()
|
||||||
|
var rotational_thrust_magnitude : float = rotational_thrust.length()
|
||||||
|
var phi : float
|
||||||
|
if rotational_thrust_normalized.x == 0 and rotational_thrust_normalized.z == 0:
|
||||||
|
phi = PI/2
|
||||||
|
else:
|
||||||
|
phi = asin(rotational_thrust_normalized.x / sqrt(pow(rotational_thrust_normalized.x, 2) + pow(rotational_thrust_normalized.z,2)))
|
||||||
|
|
||||||
|
if rotational_thrust_normalized.z < 0:
|
||||||
|
phi = PI - phi
|
||||||
|
var theta : float = -asin(rotational_thrust_normalized.y)
|
||||||
|
rotate_arrow_obj.rotation = Vector3(0,0,0)
|
||||||
|
rotate_arrow_obj.rotate(Vector3(1,0,0), theta)
|
||||||
|
rotate_arrow_obj.rotate(Vector3(0,1,0), phi)
|
||||||
|
rotate_arrow_scale_obj.scale = Vector3(rotational_thrust_magnitude, rotational_thrust_magnitude, rotational_thrust_magnitude)
|
||||||
|
|
||||||
func get_linear_vector() -> Vector3:
|
func get_linear_vector() -> Vector3:
|
||||||
return Vector3($ThrustPanel/XLin.value, $ThrustPanel/YLin.value, $ThrustPanel/ZLin.value)
|
return Vector3($ThrustPanel/XLin.value, $ThrustPanel/YLin.value, $ThrustPanel/ZLin.value) * MAX_LIN_THRUST
|
||||||
|
|
||||||
func get_rotational_vector() -> Vector3:
|
func get_rotational_vector() -> Vector3:
|
||||||
return Vector3($ThrustPanel/XRot.value, $ThrustPanel/YRot.value, $ThrustPanel/ZRot.value)
|
return Vector3($ThrustPanel/XRot.value, $ThrustPanel/YRot.value, $ThrustPanel/ZRot.value) * MAX_ROT_THRUST
|
||||||
|
|
||||||
func _on_XLin_value_changed(value : float) -> void:
|
func _on_XLin_value_changed(value : float) -> void:
|
||||||
get_parent().get_parent().console_print("Length of vector = " + String(get_linear_vector().length()))
|
self._update_arrow()
|
||||||
if get_linear_vector().length() < 1.0:
|
if get_linear_vector().length() < 1.0:
|
||||||
return
|
return
|
||||||
$ThrustPanel/XLin.value = sign($ThrustPanel/XLin.value) * \
|
$ThrustPanel/XLin.value = sign($ThrustPanel/XLin.value) * \
|
||||||
sqrt(1 - pow($ThrustPanel/YLin.value, 2) - pow($ThrustPanel/ZLin.value, 2))
|
sqrt(1 - pow($ThrustPanel/YLin.value, 2) - pow($ThrustPanel/ZLin.value, 2))
|
||||||
|
|
||||||
|
|
||||||
func _on_XRot_value_changed(value : float) -> void:
|
func _on_XRot_value_changed(value : float) -> void:
|
||||||
|
self._update_rotate_arrow()
|
||||||
if get_rotational_vector().length() < 1.0:
|
if get_rotational_vector().length() < 1.0:
|
||||||
return
|
return
|
||||||
$ThrustPanel/XRot.value = sign($ThrustPanel/XRot.value) * \
|
$ThrustPanel/XRot.value = sign($ThrustPanel/XRot.value) * \
|
||||||
sqrt(1 - pow($ThrustPanel/YRot.value, 2) - pow($ThrustPanel/ZRot.value, 2))
|
sqrt(1 - pow($ThrustPanel/YRot.value, 2) - pow($ThrustPanel/ZRot.value, 2))
|
||||||
|
|
||||||
|
|
||||||
func _on_YLin_value_changed(value : float) -> void:
|
func _on_YLin_value_changed(value : float) -> void:
|
||||||
|
self._update_arrow()
|
||||||
if get_linear_vector().length() < 1.0:
|
if get_linear_vector().length() < 1.0:
|
||||||
return
|
return
|
||||||
$ThrustPanel/YLin.value = sign($ThrustPanel/YLin.value) * \
|
$ThrustPanel/YLin.value = sign($ThrustPanel/YLin.value) * \
|
||||||
sqrt(1 - pow($ThrustPanel/XLin.value, 2) - pow($ThrustPanel/ZLin.value, 2))
|
sqrt(1 - pow($ThrustPanel/XLin.value, 2) - pow($ThrustPanel/ZLin.value, 2))
|
||||||
|
|
||||||
|
|
||||||
func _on_YRot_value_changed(value : float) -> void:
|
func _on_YRot_value_changed(value : float) -> void:
|
||||||
|
self._update_rotate_arrow()
|
||||||
if get_rotational_vector().length() < 1.0:
|
if get_rotational_vector().length() < 1.0:
|
||||||
return
|
return
|
||||||
$ThrustPanel/YRot.value = sign($ThrustPanel/YRot.value) * \
|
$ThrustPanel/YRot.value = sign($ThrustPanel/YRot.value) * \
|
||||||
sqrt(1 - pow($ThrustPanel/XRot.value, 2) - pow($ThrustPanel/ZRot.value, 2))
|
sqrt(1 - pow($ThrustPanel/XRot.value, 2) - pow($ThrustPanel/ZRot.value, 2))
|
||||||
|
|
||||||
|
|
||||||
func _on_ZLin_value_changed(value : float) -> void:
|
func _on_ZLin_value_changed(value : float) -> void:
|
||||||
|
self._update_arrow()
|
||||||
if get_linear_vector().length() < 1.0:
|
if get_linear_vector().length() < 1.0:
|
||||||
return
|
return
|
||||||
$ThrustPanel/ZLin.value = sign($ThrustPanel/ZLin.value) * \
|
$ThrustPanel/ZLin.value = sign($ThrustPanel/ZLin.value) * \
|
||||||
sqrt(1 - pow($ThrustPanel/YLin.value, 2) - pow($ThrustPanel/XLin.value, 2))
|
sqrt(1 - pow($ThrustPanel/YLin.value, 2) - pow($ThrustPanel/XLin.value, 2))
|
||||||
|
|
||||||
|
|
||||||
func _on_ZRot_value_changed(value : float) -> void:
|
func _on_ZRot_value_changed(value : float) -> void:
|
||||||
|
self._update_rotate_arrow()
|
||||||
if get_rotational_vector().length() < 1.0:
|
if get_rotational_vector().length() < 1.0:
|
||||||
return
|
return
|
||||||
$ThrustPanel/ZRot.value = sign($ThrustPanel/ZRot.value) * \
|
$ThrustPanel/ZRot.value = sign($ThrustPanel/ZRot.value) * \
|
||||||
sqrt(1 - pow($ThrustPanel/YRot.value, 2) - pow($ThrustPanel/XRot.value, 2))
|
sqrt(1 - pow($ThrustPanel/YRot.value, 2) - pow($ThrustPanel/XRot.value, 2))
|
||||||
|
|
||||||
|
func _get_current_plan_element(all_elements) -> PlanElement:
|
||||||
|
var summed_time : float = 0.0
|
||||||
|
for element in all_elements:
|
||||||
|
summed_time += element.time
|
||||||
|
if summed_time > plan_time:
|
||||||
|
return element
|
||||||
|
return null
|
||||||
|
|
||||||
|
func _get_all_thrust_elements():
|
||||||
|
var all_elements = []
|
||||||
|
for element in thrust_plan.elements:
|
||||||
|
all_elements.append(element)
|
||||||
|
for element in thrust_plan.current_elements:
|
||||||
|
all_elements.append(element)
|
||||||
|
return all_elements
|
||||||
|
|
||||||
|
func _physics_process(delta : float) -> void:
|
||||||
|
if !enable_physics:
|
||||||
|
return
|
||||||
|
if !running_plan:
|
||||||
|
arrow_obj.visible = true
|
||||||
|
rotate_arrow_obj.visible = true
|
||||||
|
disable_all_engine_particles()
|
||||||
|
set_translation(last_translation)
|
||||||
|
set_rotation(last_rotation)
|
||||||
|
return
|
||||||
|
var all_thrust_elements = _get_all_thrust_elements()
|
||||||
|
var current_thrust_element : ThrustElement = _get_current_plan_element(all_thrust_elements)
|
||||||
|
if current_thrust_element == null:
|
||||||
|
last_translation = get_translation()
|
||||||
|
last_rotation = get_rotation()
|
||||||
|
running_plan = false
|
||||||
|
return
|
||||||
|
arrow_obj.visible = false
|
||||||
|
rotate_arrow_obj.visible = false
|
||||||
|
add_central_force(self.transform.basis.xform(current_thrust_element.linear_thrust))
|
||||||
|
add_torque(self.transform.basis.xform(current_thrust_element.rotational_thrust))
|
||||||
|
update_engine_particles(current_thrust_element.linear_thrust, current_thrust_element.rotational_thrust)
|
||||||
|
plan_time += delta
|
||||||
|
|
||||||
|
func disable_all_engine_particles() -> void:
|
||||||
|
var engine_particles = [
|
||||||
|
$"EngineParticleContainer/S-X,R+Y",
|
||||||
|
$"EngineParticleContainer/S+X,R-Y",
|
||||||
|
$"EngineParticleContainer/S-X,R-Y",
|
||||||
|
$"EngineParticleContainer/S+X,R+Y",
|
||||||
|
$"EngineParticleContainer/S-Y,R+Z,R+X",
|
||||||
|
$"EngineParticleContainer/S-Y,R-Z,R+X",
|
||||||
|
$"EngineParticleContainer/S-Y,R-Z,R-X",
|
||||||
|
$"EngineParticleContainer/S-Y,R+Z,R-X",
|
||||||
|
$"EngineParticleContainer/S+Y,R-Z,R+X",
|
||||||
|
$"EngineParticleContainer/S+Y,R+Z,R+X",
|
||||||
|
$"EngineParticleContainer/S+Y,R-Z,R-X",
|
||||||
|
$"EngineParticleContainer/S+Y,R+Z,R-X",
|
||||||
|
$EngineParticleContainer/SZ,
|
||||||
|
$EngineParticleContainer/SZ2
|
||||||
|
]
|
||||||
|
for ep in engine_particles:
|
||||||
|
ep.emitting = false
|
||||||
|
|
||||||
|
func update_engine_particles(linear_thrust : Vector3, rotational_thrust : Vector3) -> void:
|
||||||
|
var engine_particles : Particles = $"EngineParticleContainer/S-X,R-Y"
|
||||||
|
if linear_thrust.x < 0 or rotational_thrust.y > 0:
|
||||||
|
engine_particles.emitting = true
|
||||||
|
engine_particles.scale = Vector3.ONE * (max(-linear_thrust.x / MAX_LIN_THRUST, 0)+max(rotational_thrust.y / MAX_ROT_THRUST, 0)) * 0.005
|
||||||
|
else:
|
||||||
|
engine_particles.emitting = false
|
||||||
|
|
||||||
|
engine_particles = $"EngineParticleContainer/S+X,R+Y"
|
||||||
|
if linear_thrust.x > 0 or rotational_thrust.y < 0:
|
||||||
|
engine_particles.emitting = true
|
||||||
|
engine_particles.scale = Vector3.ONE * (max(linear_thrust.x / MAX_LIN_THRUST, 0)+max(-rotational_thrust.y / MAX_ROT_THRUST, 0)) * 0.005
|
||||||
|
else:
|
||||||
|
engine_particles.emitting = false
|
||||||
|
|
||||||
|
engine_particles = $"EngineParticleContainer/S-X,R+Y"
|
||||||
|
if linear_thrust.x < 0 or rotational_thrust.y < 0:
|
||||||
|
engine_particles.emitting = true
|
||||||
|
engine_particles.scale = Vector3.ONE * (max(-linear_thrust.x / MAX_LIN_THRUST, 0)+max(-rotational_thrust.y / MAX_ROT_THRUST, 0)) * 0.005
|
||||||
|
else:
|
||||||
|
engine_particles.emitting = false
|
||||||
|
|
||||||
|
engine_particles = $"EngineParticleContainer/S+X,R-Y"
|
||||||
|
if linear_thrust.x > 0 or rotational_thrust.y > 0:
|
||||||
|
engine_particles.emitting = true
|
||||||
|
engine_particles.scale = Vector3.ONE * (max(linear_thrust.x / MAX_LIN_THRUST, 0)+max(rotational_thrust.y / MAX_ROT_THRUST, 0)) * 0.005
|
||||||
|
else:
|
||||||
|
engine_particles.emitting = false
|
||||||
|
|
||||||
|
engine_particles = $"EngineParticleContainer/S-Y,R+Z,R+X"
|
||||||
|
if linear_thrust.y < 0 or rotational_thrust.z > 0 or rotational_thrust.x > 0:
|
||||||
|
engine_particles.emitting = true
|
||||||
|
engine_particles.scale = Vector3.ONE * (max(-linear_thrust.y / MAX_LIN_THRUST, 0)+max(rotational_thrust.z / MAX_ROT_THRUST, 0)+max(rotational_thrust.x / MAX_ROT_THRUST, 0)) * 0.01/3
|
||||||
|
else:
|
||||||
|
engine_particles.emitting = false
|
||||||
|
|
||||||
|
engine_particles = $"EngineParticleContainer/S-Y,R-Z,R+X"
|
||||||
|
if linear_thrust.y < 0 or rotational_thrust.z < 0 or rotational_thrust.x > 0:
|
||||||
|
engine_particles.emitting = true
|
||||||
|
engine_particles.scale = Vector3.ONE * (max(-linear_thrust.y / MAX_LIN_THRUST, 0)+max(-rotational_thrust.z / MAX_ROT_THRUST, 0)+max(rotational_thrust.x / MAX_ROT_THRUST, 0)) * 0.01/3
|
||||||
|
else:
|
||||||
|
engine_particles.emitting = false
|
||||||
|
|
||||||
|
engine_particles = $"EngineParticleContainer/S-Y,R-Z,R-X"
|
||||||
|
if linear_thrust.y < 0 or rotational_thrust.z < 0 or rotational_thrust.x < 0:
|
||||||
|
engine_particles.emitting = true
|
||||||
|
engine_particles.scale = Vector3.ONE * (max(-linear_thrust.y / MAX_LIN_THRUST, 0)+max(-rotational_thrust.z / MAX_ROT_THRUST, 0)+max(-rotational_thrust.x / MAX_ROT_THRUST, 0)) * 0.01/3
|
||||||
|
else:
|
||||||
|
engine_particles.emitting = false
|
||||||
|
|
||||||
|
engine_particles = $"EngineParticleContainer/S-Y,R+Z,R-X"
|
||||||
|
if linear_thrust.y < 0 or rotational_thrust.z > 0 or rotational_thrust.x < 0:
|
||||||
|
engine_particles.emitting = true
|
||||||
|
engine_particles.scale = Vector3.ONE * (max(-linear_thrust.y / MAX_LIN_THRUST, 0)+max(rotational_thrust.z / MAX_ROT_THRUST, 0)+max(-rotational_thrust.x / MAX_ROT_THRUST, 0)) * 0.01/3
|
||||||
|
else:
|
||||||
|
engine_particles.emitting = false
|
||||||
|
|
||||||
|
engine_particles = $"EngineParticleContainer/S+Y,R-Z,R+X"
|
||||||
|
if linear_thrust.y > 0 or rotational_thrust.z < 0 or rotational_thrust.x > 0:
|
||||||
|
engine_particles.emitting = true
|
||||||
|
engine_particles.scale = Vector3.ONE * (max(linear_thrust.y / MAX_LIN_THRUST, 0)+max(-rotational_thrust.z / MAX_ROT_THRUST, 0)+max(rotational_thrust.x / MAX_ROT_THRUST, 0)) * 0.01/3
|
||||||
|
else:
|
||||||
|
engine_particles.emitting = false
|
||||||
|
|
||||||
|
engine_particles = $"EngineParticleContainer/S+Y,R+Z,R+X"
|
||||||
|
if linear_thrust.y > 0 or rotational_thrust.z > 0 or rotational_thrust.x > 0:
|
||||||
|
engine_particles.emitting = true
|
||||||
|
engine_particles.scale = Vector3.ONE * (max(linear_thrust.y / MAX_LIN_THRUST, 0)+max(rotational_thrust.z / MAX_ROT_THRUST, 0)+max(rotational_thrust.x / MAX_ROT_THRUST, 0)) * 0.01/3
|
||||||
|
else:
|
||||||
|
engine_particles.emitting = false
|
||||||
|
|
||||||
|
engine_particles = $"EngineParticleContainer/S+Y,R-Z,R-X"
|
||||||
|
if linear_thrust.y > 0 or rotational_thrust.z < 0 or rotational_thrust.x < 0:
|
||||||
|
engine_particles.emitting = true
|
||||||
|
engine_particles.scale = Vector3.ONE * (max(linear_thrust.y / MAX_LIN_THRUST, 0)+max(-rotational_thrust.z / MAX_ROT_THRUST, 0)+max(-rotational_thrust.x / MAX_ROT_THRUST, 0)) * 0.01/3
|
||||||
|
else:
|
||||||
|
engine_particles.emitting = false
|
||||||
|
|
||||||
|
engine_particles = $"EngineParticleContainer/S+Y,R+Z,R-X"
|
||||||
|
if linear_thrust.y > 0 or rotational_thrust.z > 0 or rotational_thrust.x < 0:
|
||||||
|
engine_particles.emitting = true
|
||||||
|
engine_particles.scale = Vector3.ONE * (max(linear_thrust.y / MAX_LIN_THRUST, 0)+max(rotational_thrust.z / MAX_ROT_THRUST, 0)+max(-rotational_thrust.x / MAX_ROT_THRUST, 0)) * 0.01/3
|
||||||
|
else:
|
||||||
|
engine_particles.emitting = false
|
||||||
|
|
||||||
|
engine_particles = $EngineParticleContainer/SZ
|
||||||
|
var engine_particles2 : Particles = $EngineParticleContainer/SZ2
|
||||||
|
if linear_thrust.z != 0:
|
||||||
|
engine_particles.emitting = true
|
||||||
|
engine_particles2.emitting = true
|
||||||
|
var modz : float = linear_thrust.z
|
||||||
|
if modz < 0:
|
||||||
|
modz = -modz
|
||||||
|
engine_particles.scale = Vector3.ONE * (modz / MAX_ROT_THRUST) * 0.02
|
||||||
|
engine_particles2.scale = Vector3.ONE * (modz / MAX_ROT_THRUST) * 0.02
|
||||||
|
else:
|
||||||
|
engine_particles.emitting = false
|
||||||
|
engine_particles2.emitting = false
|
||||||
|
|
||||||
|
func play_current_plan():
|
||||||
|
pass
|
||||||
|
|
||||||
|
func play_all_plans():
|
||||||
|
get_parent().play_full_plans()
|
||||||
|
|
||||||
|
func play_full_plan():
|
||||||
|
set_linear_velocity(initial_velocity)
|
||||||
|
set_angular_velocity(initial_rotational_velocity)
|
||||||
|
set_translation(initial_translation)
|
||||||
|
set_rotation(initial_rotation)
|
||||||
|
running_plan = true
|
||||||
|
plan_time = 0.0
|
||||||
|
|
||||||
|
func _on_PlayButton_pressed():
|
||||||
|
play_all_plans()
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
flags_transparent = true
|
||||||
|
params_diffuse_mode = 1
|
||||||
|
params_specular_mode = 2
|
||||||
|
params_cull_mode = 2
|
||||||
|
albedo_color = Color( 0.843137, 0.341176, 0.164706, 0.117647 )
|
||||||
|
metallic = 0.31
|
||||||
|
metallic_specular = 0.31
|
||||||
|
roughness = 0.0
|
||||||
|
emission_enabled = true
|
||||||
|
emission = Color( 0.309804, 0.776471, 0.905882, 1 )
|
||||||
|
emission_energy = 0.05
|
||||||
|
emission_operator = 0
|
||||||
|
emission_on_uv2 = false
|
||||||
|
clearcoat_enabled = true
|
||||||
|
clearcoat = 1.0
|
||||||
|
clearcoat_gloss = 0.5
|
||||||
|
ao_enabled = true
|
||||||
|
ao_light_affect = 0.0
|
||||||
|
ao_on_uv2 = false
|
||||||
|
ao_texture_channel = 0
|
||||||
|
transmission_enabled = true
|
||||||
|
transmission = Color( 0.843137, 0.341176, 0.164706, 1 )
|
||||||
|
refraction_enabled = true
|
||||||
|
refraction_scale = 0.54
|
||||||
|
refraction_texture_channel = 0
|
||||||
|
proximity_fade_enable = true
|
||||||
|
proximity_fade_distance = 5.0
|
||||||
|
distance_fade_mode = 1
|
||||||
|
distance_fade_min_distance = 100.0
|
||||||
|
distance_fade_max_distance = 10.0
|
|
@ -0,0 +1,25 @@
|
||||||
|
[preset.0]
|
||||||
|
|
||||||
|
name="Linux/X11"
|
||||||
|
platform="Linux/X11"
|
||||||
|
runnable=true
|
||||||
|
custom_features=""
|
||||||
|
export_filter="all_resources"
|
||||||
|
include_filter=""
|
||||||
|
exclude_filter=""
|
||||||
|
export_path="../Builds/Client.x86_64"
|
||||||
|
patch_list=PoolStringArray( )
|
||||||
|
script_export_mode=1
|
||||||
|
script_encryption_key=""
|
||||||
|
|
||||||
|
[preset.0.options]
|
||||||
|
|
||||||
|
texture_format/bptc=false
|
||||||
|
texture_format/s3tc=true
|
||||||
|
texture_format/etc=false
|
||||||
|
texture_format/etc2=false
|
||||||
|
texture_format/no_bptc_fallbacks=true
|
||||||
|
binary_format/64_bits=true
|
||||||
|
binary_format/embed_pck=false
|
||||||
|
custom_template/release=""
|
||||||
|
custom_template/debug=""
|
|
@ -157,6 +157,17 @@ camera_yaw_left={
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[locale]
|
||||||
|
|
||||||
|
fallback="en_GB"
|
||||||
|
|
||||||
|
[physics]
|
||||||
|
|
||||||
|
3d/default_gravity=0.0
|
||||||
|
|
||||||
[rendering]
|
[rendering]
|
||||||
|
|
||||||
|
threads/thread_model=2
|
||||||
|
quality/subsurface_scattering/quality=2
|
||||||
|
quality/filters/msaa=3
|
||||||
environment/default_environment="res://default_env.tres"
|
environment/default_environment="res://default_env.tres"
|
||||||
|
|