List of commits:
Subject Hash Author Date (UTC)
Add scoreboard, bump version to 0.0.4 39acd8a4fceae35b5a40a437f02aa9bec193fb27 fluffrabbit 2017-04-13 06:57:15
Add button panel, save VR preference, improve vignette, box player in 5355a1cfcb49dfb676394a932a9ae58bd5c7b942 fluffrabbit 2017-04-06 03:42:14
Initial commit 8112cb088917c705bda9e291d3d15aacf003dce4 fluffrabbit 2017-03-28 15:44:04
Commit 39acd8a4fceae35b5a40a437f02aa9bec193fb27 - Add scoreboard, bump version to 0.0.4
Author: fluffrabbit
Author date (UTC): 2017-04-13 06:57
Committer name: fluffrabbit
Committer date (UTC): 2017-04-13 06:57
Parent(s): 5355a1cfcb49dfb676394a932a9ae58bd5c7b942
Signing key:
Tree: 40afef672089a1a1426d3283bc559f272e568e1d
File Lines added Lines deleted
DEVELOPING.md 4 2
README.md 4 6
TODO.txt 0 1
data/audio/saucer.wav 0 0
data/gdscript/scoreboard.gd 97 0
data/gdscript/turret.gd 28 1
data/menu/ChicagoItalic.ttf 0 0
data/menu/ChicagoMono.ttf 0 0
data/menu/menu.tscn 71 12
data/scenes/ship.mtl 0 0
data/scenes/skyhammer.tscn 50 51
export.cfg 6 6
File DEVELOPING.md changed (mode: 100644) (index eb8c545..bb3598f)
2 2
3 3 Recommended specs for development: Linux or Mac desktop with working Android build chain (Android/Replicant SDK, OpenJDK, Godot, all good software to have). Windows should work as well but Linux is the easiest platform for development when dealing with Android. Recommended specs for development: Linux or Mac desktop with working Android build chain (Android/Replicant SDK, OpenJDK, Godot, all good software to have). Windows should work as well but Linux is the easiest platform for development when dealing with Android.
4 4
5 Sky Hammer introduces new VR features to the Godot engine at the game level, compiling in unmodified Godot 2.1.x. The lead developer pioneered the techniques now being used to bring VR to Godot before it is even an official feature, and as one can imagine there are no known Godot games in an even semi-stable state featuring VR. This is one such unstable masterpiece.
5 Sky Hammer introduces new VR features to the Godot engine at the game level, compiling in unmodified Godot 2.1.x.
6 6
7 Download the repository (either by downloading the archive, cloning the repo, or downloading only the git-pull script and running that) and import the project into Godot. When you want to push changes to the repository, an easy way to do it is with the script. Run ./git-upload on *nix or git-upload.bat on Windows.
7 There are no known Godot games in an even semi-stable state featuring VR, so this unstable game pioneers some of the techniques. Those techniques may not be officially supported until Godot 3. The focal point of the game's instability is the VR player prefab player.tscn, and its accompanying script file hybrid-control.gd. Aside from those two files, the majority of Sky Hammer is like any standard indie game.
8
9 Download the repository (either by downloading the archive, cloning the repo, or downloading only the git-pull script and running that) and import the project into Godot. When you want to push changes to the repository, an easy way to do it is with the script. Run ./git-upload on *nix or git-upload.bat on Windows. If you are not a member of the main Sky Hammer repository, you can set up your own and change the Git URL in the scripts accordingly.
8 10
9 11 ### FAQ ### FAQ
10 12
File README.md changed (mode: 100644) (index 8c8cb2b..dc2aafe)
1 1 # Sky Hammer # Sky Hammer
2 2
3 WARNING: Pre-pre-alpha. Binary builds not currently available.
3 Aliens came. Everything was blown up. But then one day when you were scavenging for food, you found the ultimate weapon. The Sky Hammer is a twin barrel turret that fires 1800 caseless 7mm rounds per minute, designed for one purpose: sending aliens love letters. You are the postmaster.
4 4
5 The Sky Hammer is a twin barrel turret that fires 1800 caseless 7mm rounds per minute, designed for one purpose: sending aliens love letters. You are the postmaster.
5 You can't walk around (yet!) because joystick movement unfortunately crashes Godot engine, but you can shoot.
6 6
7 Recommended specs for gameplay: Android 4.0+ or iOS device with 4.5" - 6" screen OR dedicated Android VR headset. Device must have a magnetometer. Bluetooth controller highly recommended.
8
9 Alternatively, game can be played on PC/Mac, but support for getting lens distortion and orientation off of PC VR headsets is not currently present.
7 Recommended specs for gameplay: Android 4.0+ device with 4.5" - 6" screen OR dedicated Android VR headset. Device must have a magnetometer. Bluetooth controller highly recommended.
10 8
11 9 ### Features ### Features
12 10
13 * Inworld menu
11 * Inworld scoreboard
14 12 * Graphical effects including sparks and cubemap reflections * Graphical effects including sparks and cubemap reflections
15 13 * 3D sound * 3D sound
16 14 * Extensive use of 3D physics * Extensive use of 3D physics
File TODO.txt changed (mode: 100644) (index 1eb95d7..6faa016)
1 0.0.4 - scoreboard
2 1 0.0.5 - add buildings, ships shoot back, variety in gameplay 0.0.5 - add buildings, ships shoot back, variety in gameplay
3 2 0.0.6 - add hominids 0.0.6 - add hominids
4 3 0.0.7 - implement Godot's newest innovations 0.0.7 - implement Godot's newest innovations
File data/audio/saucer.wav added (mode: 100644) (index 0000000..825c4de)
File data/gdscript/scoreboard.gd added (mode: 100644) (index 0000000..79c7aa9)
1 extends RichTextLabel
2
3
4 export var ScoreboardFile = 'scoreboard.json'
5 var filename = 'user://' + ScoreboardFile
6
7 export var PlayerName = 'me'
8
9 export var ThisTab = 1
10
11 var scoreboard = [
12 [ 'V@RTEX', 9001 ],
13 [ 'Sonichu', 5150 ],
14 [ 'Killsbury', 2001 ],
15 [ 'ImaPC', 2000 ],
16 [ 'W@RL@R', 1337 ],
17 [ 'HUFFYUV', 420 ],
18 [ 'Snackable', 404 ],
19 [ 'Ballin', 360 ],
20 [ 'Killhouse', 86 ],
21 [ 'Sublime', 69 ]
22 ]
23
24
25 func _ready():
26 var s = 'meta_clicked'
27 if !is_connected( s, self, s ): connect( s, self, s )
28 var f = File.new()
29 if f.file_exists( filename ):
30 var d = {}
31 f.open( filename, File.READ )
32 var r = d.parse_json( f.get_as_text() )
33 f.close()
34 if r == OK and d.has( 'scoreboard' ): scoreboard = d.scoreboard
35 draw_scoreboard()
36
37
38 func meta_clicked( meta ):
39 pass
40
41
42 func draw_scoreboard():
43 var w = 15
44 var bb = []
45 for line in scoreboard:
46 var color = color_seed( line[ 0 ].hash() ).linear_interpolate( Color( 1, 1, 1), 0.5 ).to_html( false )
47 if line[ 0 ] == PlayerName: color = "FFFF00"
48 bb.push_back( '[color=#' + color + ']' + line[ 0 ] + '[/color]' + space( w - ( line[ 0 ].length() + str( line[ 1 ] ).length() ) ) + str( line[ 1 ] ) )
49 set_bbcode( '[code]' + join( bb, '\n' ) + '[/code]' )
50
51
52 func player_score( s ):
53 get_node( 'sfx' ).play( 'click' )
54 var i = 0
55 for line in scoreboard:
56 if s > line[ 1 ]:
57 get_parent().set_current_tab( ThisTab )
58 scoreboard.insert( i, [ PlayerName, s ] )
59 scoreboard.resize( 10 )
60 var d = {}
61 d.scoreboard = scoreboard
62 var f = File.new()
63 f.open( filename, File.WRITE )
64 f.store_string( d.to_json() )
65 f.close()
66 draw_scoreboard()
67 return
68 i += 1
69
70
71 # Helper functions
72
73 func join( array, connector = ',' ):
74 var string = str( array[ 0 ] )
75 if array.size() >= 2:
76 for i in range( 1, array.size() ):
77 string = string + connector + str( array[ i ] )
78 return string
79
80
81 func space( count = 1, item = ' ' ):
82 var string = ''
83 for i in range( count ):
84 string = string + item
85 return string
86
87
88 func color_seed( s ):
89 var r = rand_seed( s )
90 var g = rand_seed( r[ 1 ] )
91 var b = rand_seed( g[ 1 ] )
92 var a = rand_seed( b[ 1 ] )
93 return Color( ( r[ 0 ] % 256 ) / 255.0, ( g[ 0 ] % 256 ) / 255.0, ( b[ 0 ] % 256 ) / 255.0, ( a[ 0 ] % 256 ) / 255.0 )
94
95
96 func hash_color( color ):
97 return Array( [ color.r, color.g, color.b, color.a ] ).hash()
File data/gdscript/turret.gd changed (mode: 100644) (index b9a7dda..ba964ae)
... ... onready var ray_l = shot_l.get_node( 'RayCast' )
10 10 onready var ray_r = shot_r.get_node( 'RayCast' ) onready var ray_r = shot_r.get_node( 'RayCast' )
11 11 onready var sfx = head.get_node( 'sfx' ) onready var sfx = head.get_node( 'sfx' )
12 12 onready var impact = get_node( 'impact' ) onready var impact = get_node( 'impact' )
13 onready var player = get_tree().get_nodes_in_group( 'player' )[ 0 ]
14 onready var scoreboard = get_tree().get_nodes_in_group( 'scoreboard' )[ 0 ]
13 15
16 var alive = true
17
18 var score = 0
19
20 var commandRadius = 0.5
14 21
15 22 var rpm = 1800 var rpm = 1800
16 23
 
... ... func _fixed_process( d ):
68 75 firing_r = false firing_r = false
69 76 else: else:
70 77 shot_r.hide() shot_r.hide()
78
79 if alive and ( get_global_transform().origin.distance_to( player.get_global_transform().origin ) > commandRadius ):
80 die()
81 respawn()
71 82
72 83
73 84 func _pick( body, v, a, e, d ): func _pick( body, v, a, e, d ):
 
... ... func _pick( body, v, a, e, d ):
81 92 if rot.x < x_min: rot.x = x_min if rot.x < x_min: rot.x = x_min
82 93 if rot.x > x_max: rot.x = x_max if rot.x > x_max: rot.x = x_max
83 94
84 if is_mouse_pressed() or is_joy_pressed():
95 if alive and ( is_mouse_pressed() or is_joy_pressed() ):
85 96 rotate_turret( d ) rotate_turret( d )
86 97 if fire_timer <= 0: if fire_timer <= 0:
87 98 sfx.play( 'bang' ) sfx.play( 'bang' )
 
... ... func _pick( body, v, a, e, d ):
98 109 fire_side = 0 fire_side = 0
99 110
100 111
112 # Functions specific to this node
113
101 114 func fire( gun, shot, ray ): func fire( gun, shot, ray ):
102 115 yxz_rotation( gun, Vector3( recoil, 0, 0 ) ) yxz_rotation( gun, Vector3( recoil, 0, 0 ) )
103 116 yxz_rotation( shot, Vector3( recoil * randf(), recoil * randf() - recoil * 0.5, 0 ) ) yxz_rotation( shot, Vector3( recoil * randf(), recoil * randf() - recoil * 0.5, 0 ) )
 
... ... func fire( gun, shot, ray ):
112 125 if obj.has_method( 'apply_impulse' ): if obj.has_method( 'apply_impulse' ):
113 126 obj.apply_impulse( hitpoint, getlookat( ray ) * power ) obj.apply_impulse( hitpoint, getlookat( ray ) * power )
114 127 if obj.has_method( '_pick' ): if obj.has_method( '_pick' ):
128 score += 1
115 129 obj._pick( self, hitpoint, 10, null, 0.0 ) obj._pick( self, hitpoint, 10, null, 0.0 )
116 130 else: else:
117 131 impacting = false impacting = false
 
... ... func rotate_turret( d ):
124 138 yxz_rotation( head, turret_rot * Vector3( 1, 0, 0 ) ) yxz_rotation( head, turret_rot * Vector3( 1, 0, 0 ) )
125 139
126 140
141 func die():
142 if scoreboard != null and scoreboard.has_method( 'player_score' ):
143 scoreboard.player_score( score )
144 score = 0
145 alive = false
146
147
148 func respawn():
149 player.set_linear_velocity( Vector3( 0, 0, 0 ) )
150 player.set_global_transform( Transform( player.get_global_transform().basis, get_global_transform().origin ) )
151 alive = true
152
153
127 154 # Helper functions # Helper functions
128 155
129 156 func is_mouse_pressed(): func is_mouse_pressed():
File data/menu/ChicagoItalic.ttf added (mode: 100644) (index 0000000..a352fb2)
File data/menu/ChicagoMono.ttf added (mode: 100644) (index 0000000..1c6cd8d)
File data/menu/menu.tscn changed (mode: 100644) (index 1337823..747b65d)
1 [gd_scene load_steps=7 format=1]
1 [gd_scene load_steps=16 format=1]
2 2
3 3 [ext_resource path="res://data/menu/ChicagoFLF.ttf" type="DynamicFontData" id=1] [ext_resource path="res://data/menu/ChicagoFLF.ttf" type="DynamicFontData" id=1]
4 4 [ext_resource path="res://data/gdscript/button_vr.gd" type="Script" id=2] [ext_resource path="res://data/gdscript/button_vr.gd" type="Script" id=2]
5 5 [ext_resource path="res://data/gdscript/button_quit.gd" type="Script" id=3] [ext_resource path="res://data/gdscript/button_quit.gd" type="Script" id=3]
6 [ext_resource path="res://data/menu/ChicagoMono.ttf" type="DynamicFontData" id=4]
7 [ext_resource path="res://data/menu/ChicagoItalic.ttf" type="DynamicFontData" id=5]
8 [ext_resource path="res://data/gdscript/scoreboard.gd" type="Script" id=6]
9 [ext_resource path="res://data/audio/click.wav" type="Sample" id=7]
6 10
7 11 [sub_resource type="DynamicFont" id=1] [sub_resource type="DynamicFont" id=1]
8 12
 
... ... font/font = ExtResource( 1 )
20 24
21 25 [sub_resource type="DynamicFont" id=3] [sub_resource type="DynamicFont" id=3]
22 26
23 font/size = 18
27 font/size = 16
28 font/use_mipmaps = false
29 font/use_filter = false
30 font/font = ExtResource( 4 )
31
32 [sub_resource type="DynamicFont" id=4]
33
34 font/size = 16
35 font/use_mipmaps = false
36 font/use_filter = false
37 font/font = ExtResource( 5 )
38
39 [sub_resource type="DynamicFont" id=5]
40
41 font/size = 16
42 font/use_mipmaps = false
43 font/use_filter = false
44 font/font = ExtResource( 5 )
45
46 [sub_resource type="DynamicFont" id=6]
47
48 font/size = 16
24 49 font/use_mipmaps = false font/use_mipmaps = false
25 50 font/use_filter = false font/use_filter = false
26 51 font/font = ExtResource( 1 ) font/font = ExtResource( 1 )
27 52
53 [sub_resource type="DynamicFont" id=7]
54
55 font/size = 16
56 font/use_mipmaps = false
57 font/use_filter = false
58 font/font = ExtResource( 1 )
59
60 [sub_resource type="SampleLibrary" id=8]
61
62 samples/click = { "db":0.0, "pitch":1.0, "sample":ExtResource( 7 ) }
63
28 64 [node name="menu" type="Control"] [node name="menu" type="Control"]
29 65
30 66 anchor/left = 2 anchor/left = 2
 
... ... tabs_visible = true
60 96
61 97 [node name="options" type="Control" parent="TabContainer"] [node name="options" type="Control" parent="TabContainer"]
62 98
99 editor/display_folded = true
63 100 anchor/right = 1 anchor/right = 1
64 101 anchor/bottom = 1 anchor/bottom = 1
65 102 focus/ignore_mouse = false focus/ignore_mouse = false
 
... ... text = "quit"
118 155 flat = false flat = false
119 156 script/script = ExtResource( 3 ) script/script = ExtResource( 3 )
120 157
121 [node name="scoreboard" type="Label" parent="TabContainer"]
158 [node name="scoreboard" type="RichTextLabel" parent="TabContainer" groups=[ "scoreboard" ]]
122 159
123 160 visibility/visible = false visibility/visible = false
124 161 anchor/right = 1 anchor/right = 1
125 162 anchor/bottom = 1 anchor/bottom = 1
126 focus/ignore_mouse = true
163 focus/ignore_mouse = false
127 164 focus/stop_mouse = true focus/stop_mouse = true
128 165 size_flags/horizontal = 2 size_flags/horizontal = 2
129 size_flags/vertical = 0
166 size_flags/vertical = 2
130 167 margin/left = 4.0 margin/left = 4.0
131 168 margin/top = 40.0 margin/top = 40.0
132 169 margin/right = 4.0 margin/right = 4.0
133 170 margin/bottom = 4.0 margin/bottom = 4.0
134 custom_fonts/font = SubResource( 3 )
135 text = "Coming soon!"
136 align = 1
137 valign = 1
138 percent_visible = 1.0
139 lines_skipped = 0
140 max_lines_visible = -1
171 custom_fonts/mono_font = SubResource( 3 )
172 custom_fonts/bold_italics_font = SubResource( 4 )
173 custom_fonts/italics_font = SubResource( 5 )
174 custom_fonts/bold_font = SubResource( 6 )
175 custom_fonts/normal_font = SubResource( 7 )
176 bbcode/enabled = true
177 bbcode/bbcode = "[center]Coming soon![/center]"
178 visible_characters = -1
179 script/script = ExtResource( 6 )
180 ScoreboardFile = "scoreboard.txt"
181 PlayerName = "me"
182 ThisTab = 1
183
184 [node name="sfx" type="SamplePlayer" parent="TabContainer/scoreboard"]
185
186 config/polyphony = 1
187 config/samples = SubResource( 8 )
188 default/volume_db = 0.0
189 default/pitch_scale = 1.0
190 default/pan = 0.0
191 default/depth = 0.0
192 default/height = 0.0
193 default/filter/type = 0
194 default/filter/cutoff = 5000.0
195 default/filter/resonance = 1.0
196 default/filter/gain = 1.0
197 default/reverb_room = 2
198 default/reverb_send = 0.0
199 default/chorus_send = 0.0
141 200
142 201
File data/scenes/ship.mtl changed (mode: 100644) (index 942ef09..aff071a)
File data/scenes/skyhammer.tscn changed (mode: 100644) (index 5a4ddf2..885694d)
... ... extents = Vector3( 0.3, 0.4, 1.1 )
252 252
253 253 extents = Vector3( 0.3, 0.4, 1.1 ) extents = Vector3( 0.3, 0.4, 1.1 )
254 254
255 [sub_resource type="BoxShape" id=23]
255 [sub_resource type="BoxShape" id=16]
256 256
257 extents = Vector3( 1.1, 0.35, 0.3 )
257 extents = Vector3( 1.1, 0.34, 0.3 )
258 258
259 [sub_resource type="BoxShape" id=22]
259 [sub_resource type="BoxShape" id=17]
260 260
261 261 extents = Vector3( 0.45, 0.2, 0.2 ) extents = Vector3( 0.45, 0.2, 0.2 )
262 262
263 [sub_resource type="BoxShape" id=17]
263 [sub_resource type="BoxShape" id=18]
264 264
265 265 extents = Vector3( 0.28, 0.28, 0 ) extents = Vector3( 0.28, 0.28, 0 )
266 266
267 [sub_resource type="FixedMaterial" id=18]
267 [sub_resource type="FixedMaterial" id=19]
268 268
269 269 flags/visible = true flags/visible = true
270 270 flags/double_sided = false flags/double_sided = false
 
... ... textures/glow_tc = 0
301 301 textures/normal_tc = 0 textures/normal_tc = 0
302 302 textures/shade_param_tc = 0 textures/shade_param_tc = 0
303 303
304 [sub_resource type="BoxShape" id=19]
304 [sub_resource type="PlaneShape" id=20]
305 305
306 extents = Vector3( 64, 0, 64 )
306 plane = Plane( 0, 1, 0, 0 )
307 307
308 [sub_resource type="FixedMaterial" id=20]
308 [sub_resource type="FixedMaterial" id=21]
309 309
310 310 flags/visible = true flags/visible = true
311 311 flags/double_sided = false flags/double_sided = false
 
... ... textures/glow_tc = 0
343 343 textures/normal_tc = 0 textures/normal_tc = 0
344 344 textures/shade_param_tc = 0 textures/shade_param_tc = 0
345 345
346 [sub_resource type="BoxShape" id=21]
346 [sub_resource type="BoxShape" id=22]
347 347
348 348 extents = Vector3( 1, 1, 1 ) extents = Vector3( 1, 1, 1 )
349 349
 
... ... material/0 = SubResource( 13 )
782 782
783 783 [node name="StaticBody" type="StaticBody" parent="turret"] [node name="StaticBody" type="StaticBody" parent="turret"]
784 784
785 editor/display_folded = true
785 786 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
786 787 input/ray_pickable = true input/ray_pickable = true
787 788 input/capture_on_drag = false input/capture_on_drag = false
 
... ... shapes/0/trigger = false
792 793 shapes/1/shape = SubResource( 15 ) shapes/1/shape = SubResource( 15 )
793 794 shapes/1/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.8739, 0.4, 0 ) shapes/1/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.8739, 0.4, 0 )
794 795 shapes/1/trigger = false shapes/1/trigger = false
795 shapes/2/shape = SubResource( 23 )
796 shapes/2/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.35, 0.8739 )
796 shapes/2/shape = SubResource( 16 )
797 shapes/2/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.34, 0.8739 )
797 798 shapes/2/trigger = false shapes/2/trigger = false
798 shapes/3/shape = SubResource( 22 )
799 shapes/3/shape = SubResource( 17 )
799 800 shapes/3/transform = Transform( 1, 0, 0, 0, 0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 0, 0.45 ) shapes/3/transform = Transform( 1, 0, 0, 0, 0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 0, 0.45 )
800 801 shapes/3/trigger = false shapes/3/trigger = false
801 shapes/4/shape = SubResource( 22 )
802 shapes/4/shape = SubResource( 17 )
802 803 shapes/4/transform = Transform( -1.15202e-07, -0.707107, 0.707107, -2.78123e-07, -0.707107, -0.707107, 1, -2.78123e-07, -1.15202e-07, 0.45, 0, 0 ) shapes/4/transform = Transform( -1.15202e-07, -0.707107, 0.707107, -2.78123e-07, -0.707107, -0.707107, 1, -2.78123e-07, -1.15202e-07, 0.45, 0, 0 )
803 804 shapes/4/trigger = false shapes/4/trigger = false
804 shapes/5/shape = SubResource( 22 )
805 shapes/5/shape = SubResource( 17 )
805 806 shapes/5/transform = Transform( -1.15202e-07, -0.707107, 0.707107, -2.78123e-07, -0.707107, -0.707107, 1, -2.78123e-07, -1.15202e-07, -0.45, 0, 0 ) shapes/5/transform = Transform( -1.15202e-07, -0.707107, 0.707107, -2.78123e-07, -0.707107, -0.707107, 1, -2.78123e-07, -1.15202e-07, -0.45, 0, 0 )
806 807 shapes/5/trigger = false shapes/5/trigger = false
807 shapes/6/shape = SubResource( 22 )
808 shapes/6/shape = SubResource( 17 )
808 809 shapes/6/transform = Transform( 1, 0, 0, 0, 0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 0, -0.45 ) shapes/6/transform = Transform( 1, 0, 0, 0, 0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 0, -0.45 )
809 810 shapes/6/trigger = false shapes/6/trigger = false
810 811 collision/layers = 1 collision/layers = 1
 
... ... _update_shape_index = 1
833 834 [node name="CollisionShape3" type="CollisionShape" parent="turret/StaticBody"] [node name="CollisionShape3" type="CollisionShape" parent="turret/StaticBody"]
834 835
835 836 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
836 transform/local = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.35, 0.8739 )
837 shape = SubResource( 23 )
837 transform/local = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.34, 0.8739 )
838 shape = SubResource( 16 )
838 839 trigger = false trigger = false
839 840 _update_shape_index = 2 _update_shape_index = 2
840 841
 
... ... _update_shape_index = 2
842 843
843 844 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
844 845 transform/local = Transform( 1, 0, 0, 0, 0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 0, 0.45 ) transform/local = Transform( 1, 0, 0, 0, 0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 0, 0.45 )
845 shape = SubResource( 22 )
846 shape = SubResource( 17 )
846 847 trigger = false trigger = false
847 848 _update_shape_index = 3 _update_shape_index = 3
848 849
 
... ... _update_shape_index = 3
850 851
851 852 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
852 853 transform/local = Transform( -1.15202e-07, -0.707107, 0.707107, -2.78123e-07, -0.707107, -0.707107, 1, -2.78123e-07, -1.15202e-07, 0.45, 0, 0 ) transform/local = Transform( -1.15202e-07, -0.707107, 0.707107, -2.78123e-07, -0.707107, -0.707107, 1, -2.78123e-07, -1.15202e-07, 0.45, 0, 0 )
853 shape = SubResource( 22 )
854 shape = SubResource( 17 )
854 855 trigger = false trigger = false
855 856 _update_shape_index = 4 _update_shape_index = 4
856 857
 
... ... _update_shape_index = 4
858 859
859 860 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
860 861 transform/local = Transform( -1.15202e-07, -0.707107, 0.707107, -2.78123e-07, -0.707107, -0.707107, 1, -2.78123e-07, -1.15202e-07, -0.45, 0, 0 ) transform/local = Transform( -1.15202e-07, -0.707107, 0.707107, -2.78123e-07, -0.707107, -0.707107, 1, -2.78123e-07, -1.15202e-07, -0.45, 0, 0 )
861 shape = SubResource( 22 )
862 shape = SubResource( 17 )
862 863 trigger = false trigger = false
863 864 _update_shape_index = 5 _update_shape_index = 5
864 865
 
... ... _update_shape_index = 5
866 867
867 868 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
868 869 transform/local = Transform( 1, 0, 0, 0, 0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 0, -0.45 ) transform/local = Transform( 1, 0, 0, 0, 0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 0, -0.45 )
869 shape = SubResource( 22 )
870 shape = SubResource( 17 )
870 871 trigger = false trigger = false
871 872 _update_shape_index = 6 _update_shape_index = 6
872 873
873 874 [node name="screen" type="StaticBody" parent="turret"] [node name="screen" type="StaticBody" parent="turret"]
874 875
875 editor/display_folded = true
876 876 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
877 877 transform/local = Transform( -1, 3.89414e-07, 0, 2.75358e-07, 0.707107, 0.707107, 2.75358e-07, 0.707107, -0.707107, 0, 0.9, 0.9 ) transform/local = Transform( -1, 3.89414e-07, 0, 2.75358e-07, 0.707107, 0.707107, 2.75358e-07, 0.707107, -0.707107, 0, 0.9, 0.9 )
878 878 input/ray_pickable = true input/ray_pickable = true
879 879 input/capture_on_drag = false input/capture_on_drag = false
880 880 shape_count = 1 shape_count = 1
881 shapes/0/shape = SubResource( 17 )
881 shapes/0/shape = SubResource( 18 )
882 882 shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
883 883 shapes/0/trigger = false shapes/0/trigger = false
884 884 collision/layers = 2 collision/layers = 2
 
... ... SelectCursor = ExtResource( 8 )
893 893 [node name="CollisionShape" type="CollisionShape" parent="turret/screen"] [node name="CollisionShape" type="CollisionShape" parent="turret/screen"]
894 894
895 895 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
896 shape = SubResource( 17 )
896 shape = SubResource( 18 )
897 897 trigger = false trigger = false
898 898 _update_shape_index = 0 _update_shape_index = 0
899 899
 
... ... _update_shape_index = 0
902 902 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
903 903 layers = 1 layers = 1
904 904 geometry/visible = true geometry/visible = true
905 geometry/material_override = SubResource( 18 )
905 geometry/material_override = SubResource( 19 )
906 906 geometry/cast_shadow = 1 geometry/cast_shadow = 1
907 907 geometry/receive_shadows = true geometry/receive_shadows = true
908 908 geometry/range_begin = 0.0 geometry/range_begin = 0.0
 
... ... gui/disable_input = false
942 942
943 943 [node name="Ground" type="StaticBody" parent="."] [node name="Ground" type="StaticBody" parent="."]
944 944
945 editor/display_folded = true
946 945 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
947 946 input/ray_pickable = true input/ray_pickable = true
948 947 input/capture_on_drag = false input/capture_on_drag = false
949 948 shape_count = 1 shape_count = 1
950 shapes/0/shape = SubResource( 19 )
949 shapes/0/shape = SubResource( 20 )
951 950 shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
952 951 shapes/0/trigger = false shapes/0/trigger = false
953 952 collision/layers = 1 collision/layers = 1
 
... ... _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
963 962 transform/local = Transform( 1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0 ) transform/local = Transform( 1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0 )
964 963 layers = 1 layers = 1
965 964 geometry/visible = true geometry/visible = true
966 geometry/material_override = SubResource( 20 )
965 geometry/material_override = SubResource( 21 )
967 966 geometry/cast_shadow = 1 geometry/cast_shadow = 1
968 967 geometry/receive_shadows = true geometry/receive_shadows = true
969 968 geometry/range_begin = 0.0 geometry/range_begin = 0.0
 
... ... quad/centered = true
983 982 [node name="CollisionShape" type="CollisionShape" parent="Ground"] [node name="CollisionShape" type="CollisionShape" parent="Ground"]
984 983
985 984 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
986 shape = SubResource( 19 )
985 shape = SubResource( 20 )
987 986 trigger = false trigger = false
988 987 _update_shape_index = 0 _update_shape_index = 0
989 988
 
... ... transform/local = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.97637, 6.60166 )
1020 1019 input/ray_pickable = true input/ray_pickable = true
1021 1020 input/capture_on_drag = false input/capture_on_drag = false
1022 1021 shape_count = 1 shape_count = 1
1023 shapes/0/shape = SubResource( 21 )
1022 shapes/0/shape = SubResource( 22 )
1024 1023 shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1025 1024 shapes/0/trigger = false shapes/0/trigger = false
1026 1025 collision/layers = 1 collision/layers = 1
 
... ... geometry/baked_light_tex_id = 0
1063 1062 [node name="CollisionShape" type="CollisionShape" parent="RigidBody"] [node name="CollisionShape" type="CollisionShape" parent="RigidBody"]
1064 1063
1065 1064 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1066 shape = SubResource( 21 )
1065 shape = SubResource( 22 )
1067 1066 trigger = false trigger = false
1068 1067 _update_shape_index = 0 _update_shape_index = 0
1069 1068
 
... ... transform/local = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5.93106, 6.60166 )
1075 1074 input/ray_pickable = true input/ray_pickable = true
1076 1075 input/capture_on_drag = false input/capture_on_drag = false
1077 1076 shape_count = 1 shape_count = 1
1078 shapes/0/shape = SubResource( 21 )
1077 shapes/0/shape = SubResource( 22 )
1079 1078 shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1080 1079 shapes/0/trigger = false shapes/0/trigger = false
1081 1080 collision/layers = 1 collision/layers = 1
 
... ... geometry/baked_light_tex_id = 0
1118 1117 [node name="CollisionShape" type="CollisionShape" parent="RigidBody1"] [node name="CollisionShape" type="CollisionShape" parent="RigidBody1"]
1119 1118
1120 1119 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1121 shape = SubResource( 21 )
1120 shape = SubResource( 22 )
1122 1121 trigger = false trigger = false
1123 1122 _update_shape_index = 0 _update_shape_index = 0
1124 1123
 
... ... transform/local = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 9.09034, 6.60166 )
1130 1129 input/ray_pickable = true input/ray_pickable = true
1131 1130 input/capture_on_drag = false input/capture_on_drag = false
1132 1131 shape_count = 1 shape_count = 1
1133 shapes/0/shape = SubResource( 21 )
1132 shapes/0/shape = SubResource( 22 )
1134 1133 shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1135 1134 shapes/0/trigger = false shapes/0/trigger = false
1136 1135 collision/layers = 1 collision/layers = 1
 
... ... geometry/baked_light_tex_id = 0
1173 1172 [node name="CollisionShape" type="CollisionShape" parent="RigidBody2"] [node name="CollisionShape" type="CollisionShape" parent="RigidBody2"]
1174 1173
1175 1174 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1176 shape = SubResource( 21 )
1175 shape = SubResource( 22 )
1177 1176 trigger = false trigger = false
1178 1177 _update_shape_index = 0 _update_shape_index = 0
1179 1178
 
... ... transform/local = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 12.0129, 6.60166 )
1185 1184 input/ray_pickable = true input/ray_pickable = true
1186 1185 input/capture_on_drag = false input/capture_on_drag = false
1187 1186 shape_count = 1 shape_count = 1
1188 shapes/0/shape = SubResource( 21 )
1187 shapes/0/shape = SubResource( 22 )
1189 1188 shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1190 1189 shapes/0/trigger = false shapes/0/trigger = false
1191 1190 collision/layers = 1 collision/layers = 1
 
... ... geometry/baked_light_tex_id = 0
1228 1227 [node name="CollisionShape" type="CollisionShape" parent="RigidBody3"] [node name="CollisionShape" type="CollisionShape" parent="RigidBody3"]
1229 1228
1230 1229 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1231 shape = SubResource( 21 )
1230 shape = SubResource( 22 )
1232 1231 trigger = false trigger = false
1233 1232 _update_shape_index = 0 _update_shape_index = 0
1234 1233
 
... ... transform/local = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 16.2359, 1.42432, 6.6016
1240 1239 input/ray_pickable = true input/ray_pickable = true
1241 1240 input/capture_on_drag = false input/capture_on_drag = false
1242 1241 shape_count = 1 shape_count = 1
1243 shapes/0/shape = SubResource( 21 )
1242 shapes/0/shape = SubResource( 22 )
1244 1243 shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1245 1244 shapes/0/trigger = false shapes/0/trigger = false
1246 1245 collision/layers = 1 collision/layers = 1
 
... ... geometry/baked_light_tex_id = 0
1283 1282 [node name="CollisionShape" type="CollisionShape" parent="RigidBody8"] [node name="CollisionShape" type="CollisionShape" parent="RigidBody8"]
1284 1283
1285 1284 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1286 shape = SubResource( 21 )
1285 shape = SubResource( 22 )
1287 1286 trigger = false trigger = false
1288 1287 _update_shape_index = 0 _update_shape_index = 0
1289 1288
 
... ... transform/local = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 16.2359, 3.77197, 6.6016
1295 1294 input/ray_pickable = true input/ray_pickable = true
1296 1295 input/capture_on_drag = false input/capture_on_drag = false
1297 1296 shape_count = 1 shape_count = 1
1298 shapes/0/shape = SubResource( 21 )
1297 shapes/0/shape = SubResource( 22 )
1299 1298 shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1300 1299 shapes/0/trigger = false shapes/0/trigger = false
1301 1300 collision/layers = 1 collision/layers = 1
 
... ... geometry/baked_light_tex_id = 0
1338 1337 [node name="CollisionShape" type="CollisionShape" parent="RigidBody9"] [node name="CollisionShape" type="CollisionShape" parent="RigidBody9"]
1339 1338
1340 1339 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1341 shape = SubResource( 21 )
1340 shape = SubResource( 22 )
1342 1341 trigger = false trigger = false
1343 1342 _update_shape_index = 0 _update_shape_index = 0
1344 1343
 
... ... transform/local = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 16.2359, 6.41958, 6.6016
1350 1349 input/ray_pickable = true input/ray_pickable = true
1351 1350 input/capture_on_drag = false input/capture_on_drag = false
1352 1351 shape_count = 1 shape_count = 1
1353 shapes/0/shape = SubResource( 21 )
1352 shapes/0/shape = SubResource( 22 )
1354 1353 shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1355 1354 shapes/0/trigger = false shapes/0/trigger = false
1356 1355 collision/layers = 1 collision/layers = 1
 
... ... geometry/baked_light_tex_id = 0
1393 1392 [node name="CollisionShape" type="CollisionShape" parent="RigidBody10"] [node name="CollisionShape" type="CollisionShape" parent="RigidBody10"]
1394 1393
1395 1394 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1396 shape = SubResource( 21 )
1395 shape = SubResource( 22 )
1397 1396 trigger = false trigger = false
1398 1397 _update_shape_index = 0 _update_shape_index = 0
1399 1398
 
... ... transform/local = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 16.2359, 9.44403, 6.6016
1405 1404 input/ray_pickable = true input/ray_pickable = true
1406 1405 input/capture_on_drag = false input/capture_on_drag = false
1407 1406 shape_count = 1 shape_count = 1
1408 shapes/0/shape = SubResource( 21 )
1407 shapes/0/shape = SubResource( 22 )
1409 1408 shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1410 1409 shapes/0/trigger = false shapes/0/trigger = false
1411 1410 collision/layers = 1 collision/layers = 1
 
... ... geometry/baked_light_tex_id = 0
1448 1447 [node name="CollisionShape" type="CollisionShape" parent="RigidBody11"] [node name="CollisionShape" type="CollisionShape" parent="RigidBody11"]
1449 1448
1450 1449 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1451 shape = SubResource( 21 )
1450 shape = SubResource( 22 )
1452 1451 trigger = false trigger = false
1453 1452 _update_shape_index = 0 _update_shape_index = 0
1454 1453
 
... ... transform/local = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 16.2359, 12.045, 6.60166
1460 1459 input/ray_pickable = true input/ray_pickable = true
1461 1460 input/capture_on_drag = false input/capture_on_drag = false
1462 1461 shape_count = 1 shape_count = 1
1463 shapes/0/shape = SubResource( 21 )
1462 shapes/0/shape = SubResource( 22 )
1464 1463 shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1465 1464 shapes/0/trigger = false shapes/0/trigger = false
1466 1465 collision/layers = 1 collision/layers = 1
 
... ... geometry/baked_light_tex_id = 0
1503 1502 [node name="CollisionShape" type="CollisionShape" parent="RigidBody12"] [node name="CollisionShape" type="CollisionShape" parent="RigidBody12"]
1504 1503
1505 1504 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1506 shape = SubResource( 21 )
1505 shape = SubResource( 22 )
1507 1506 trigger = false trigger = false
1508 1507 _update_shape_index = 0 _update_shape_index = 0
1509 1508
 
... ... transform/local = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 16.2359, 15.0533, 6.6016
1515 1514 input/ray_pickable = true input/ray_pickable = true
1516 1515 input/capture_on_drag = false input/capture_on_drag = false
1517 1516 shape_count = 1 shape_count = 1
1518 shapes/0/shape = SubResource( 21 )
1517 shapes/0/shape = SubResource( 22 )
1519 1518 shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1520 1519 shapes/0/trigger = false shapes/0/trigger = false
1521 1520 collision/layers = 1 collision/layers = 1
 
... ... geometry/baked_light_tex_id = 0
1558 1557 [node name="CollisionShape" type="CollisionShape" parent="RigidBody13"] [node name="CollisionShape" type="CollisionShape" parent="RigidBody13"]
1559 1558
1560 1559 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1561 shape = SubResource( 21 )
1560 shape = SubResource( 22 )
1562 1561 trigger = false trigger = false
1563 1562 _update_shape_index = 0 _update_shape_index = 0
1564 1563
 
... ... transform/local = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 16.2359, 18.0287, 6.6016
1570 1569 input/ray_pickable = true input/ray_pickable = true
1571 1570 input/capture_on_drag = false input/capture_on_drag = false
1572 1571 shape_count = 1 shape_count = 1
1573 shapes/0/shape = SubResource( 21 )
1572 shapes/0/shape = SubResource( 22 )
1574 1573 shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) shapes/0/transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1575 1574 shapes/0/trigger = false shapes/0/trigger = false
1576 1575 collision/layers = 1 collision/layers = 1
 
... ... geometry/baked_light_tex_id = 0
1613 1612 [node name="CollisionShape" type="CollisionShape" parent="RigidBody14"] [node name="CollisionShape" type="CollisionShape" parent="RigidBody14"]
1614 1613
1615 1614 _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
1616 shape = SubResource( 21 )
1615 shape = SubResource( 22 )
1617 1616 trigger = false trigger = false
1618 1617 _update_shape_index = 0 _update_shape_index = 0
1619 1618
File export.cfg changed (mode: 100644) (index b6e0ac3..aa334a8)
... ... user_permissions/6=""
212 212 user_permissions/7="" user_permissions/7=""
213 213 user_permissions/8="" user_permissions/8=""
214 214 user_permissions/9="" user_permissions/9=""
215 version/code=3
216 version/name="0.0.3"
215 version/code=4
216 version/name="0.0.4"
217 217
218 218 [platform:BlackBerry 10] [platform:BlackBerry 10]
219 219
 
... ... package/name=""
226 226 package/unique_name="org.fluffrabbit.$genname" package/unique_name="org.fluffrabbit.$genname"
227 227 release/author="Cert. Name" release/author="Cert. Name"
228 228 release/author_id="Cert. ID" release/author_id="Cert. ID"
229 version/code=1
230 version/name="1.0"
229 version/code=4
230 version/name="0.0.4"
231 231
232 232 [platform:HTML5] [platform:HTML5]
233 233
 
... ... application/icon=""
259 259 application/identifier="org.fluffrabbit.$genname" application/identifier="org.fluffrabbit.$genname"
260 260 application/info="VR turret shooter" application/info="VR turret shooter"
261 261 application/name="" application/name=""
262 application/short_version="1.0"
262 application/short_version="0.0.4"
263 263 application/signature="godotmacgame" application/signature="godotmacgame"
264 application/version="1.0"
264 application/version="0.0.4"
265 265 custom_package/debug="" custom_package/debug=""
266 266 custom_package/release="" custom_package/release=""
267 267 debug/debugging_enabled=true debug/debugging_enabled=true
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/fluffrabbit/SkyHammer

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/fluffrabbit/SkyHammer

Clone this repository using git:
git clone git://git.rocketgit.com/user/fluffrabbit/SkyHammer

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main