From 9e68af38d9f2712572ee079879d0a752990a36e7 Mon Sep 17 00:00:00 2001 From: M o t H <45972355+moth-boi@users.noreply.github.com> Date: Mon, 23 Jan 2023 18:24:56 +0100 Subject: [PATCH] Update projects to Godot 3.5 (#827) --- 2d/dodge_the_creeps/HUD.gd | 1 + 2d/dodge_the_creeps/Main.gd | 2 + 2d/dodge_the_creeps/Main.tscn | 3 - 2d/dodge_the_creeps/Mob.gd | 1 + 2d/dodge_the_creeps/Player.gd | 1 + 2d/dodge_the_creeps/art/gameover.wav.import | 4 +- .../debug/ControlsPanel.tscn | 3 - .../debug/states_stack_displayer.gd | 1 + .../player/bullet/bullet.gd | 1 + .../player/bullet/bullet_spawner.gd | 1 + .../player/player_controller.gd | 1 + .../player/player_state_machine.gd | 1 + .../player/states/combat/attack.gd | 1 + .../player/states/combat/stagger.gd | 1 + .../states/debug/state_name_displayer.gd | 1 + 2d/finite_state_machine/player/states/die.gd | 1 + .../player/states/motion/in_air/jump.gd | 1 + .../player/states/motion/motion.gd | 1 + .../player/states/motion/on_ground/idle.gd | 1 + .../player/states/motion/on_ground/move.gd | 6 +- .../states/motion/on_ground/on_ground.gd | 1 + .../player/weapon/sword.gd | 1 + .../player/weapon/weapon_pivot.gd | 1 + .../state_machine/state.gd | 1 + .../state_machine/state_machine.gd | 1 + 2d/gd_paint/paint_control.gd | 1 + 2d/gd_paint/paint_root.tscn | 3 +- 2d/gd_paint/tools_panel.gd | 1 + 2d/hdr/beach_cave.gd | 1 + 2d/hexagonal_map/troll.gd | 1 + 2d/instancing/ball_factory.gd | 1 + 2d/isometric/troll.gd | 1 + 2d/kinematic_character/level/princess.gd | 1 + 2d/kinematic_character/player/player.gd | 1 + 2d/navigation/level.tscn | 2 +- 2d/navigation/navigation.gd | 36 +++- 2d/navigation_astar/character.gd | 1 + 2d/navigation_astar/pathfind_astar.gd | 1 + .../audio/sound_coin.wav.import | 4 +- .../audio/sound_explode.wav.import | 4 +- .../audio/sound_hit.wav.import | 4 +- .../audio/sound_jump.wav.import | 4 +- .../audio/sound_shoot.wav.import | 4 +- 2d/physics_platformer/coin/coin.gd | 1 + 2d/physics_platformer/enemy/enemy.gd | 1 + .../platform/moving_platform.gd | 1 + 2d/physics_platformer/player/bullet.gd | 1 + 2d/physics_platformer/player/player.gd | 1 + .../tests/functional/test_character_pixels.gd | 1 + 2d/physics_tests/tests/test_options.tscn | 3 - .../assets/theme/user_interface.tres | 10 +- 2d/platformer/src/Actors/Actor.gd | 1 + 2d/platformer/src/Actors/Enemy.gd | 2 + 2d/platformer/src/Actors/Enemy.tscn | 95 ++++++---- 2d/platformer/src/Level/Level.gd | 2 + 2d/platformer/src/Level/Music.gd | 2 + 2d/platformer/src/Objects/Coin.gd | 1 + .../src/UserInterface/CoinsCounter.gd | 1 + .../src/UserInterface/CoinsCounter.tscn | 3 - 2d/pong/logic/ball.gd | 2 + 2d/pong/logic/ceiling_floor.gd | 2 + 2d/pong/logic/paddle.gd | 2 + 2d/pong/logic/wall.gd | 1 + 2d/role_playing_game/Game.gd | 6 +- 2d/role_playing_game/combat/Combat.gd | 2 + 2d/role_playing_game/combat/TurnQueue.gd | 4 +- .../combat/combatants/Combatant.gd | 10 +- .../combat/combatants/Health.gd | 2 + .../combat/combatants/Opponent.gd | 1 + .../combat/interface/Info.tscn | 3 - 2d/role_playing_game/combat/interface/UI.gd | 2 + .../dialogue_player/DialoguePlayer.gd | 6 +- .../dialogue/interface/Interface.gd | 2 + .../dialogue/interface/Interface.tscn | 3 - .../grid_movement/grid/Grid.gd | 2 + .../grid_movement/pawns/Actor.gd | 4 +- .../grid_movement/pawns/Opponent.gd | 2 + .../grid_movement/pawns/Pawn.gd | 2 + .../grid_movement/pawns/Walker.gd | 4 +- 2d/screen_space_shaders/screen_shaders.gd | 1 + 2d/skeleton/level/level.gd | 2 + 2d/skeleton/player/player.gd | 1 + 2d/skeleton/player/player.tscn | 16 +- 2d/tween/main.gd | 2 + 2d/tween/main.tscn | 20 +-- 3d/global_illumination/camera.gd | 1 + 3d/global_illumination/test.gd | 18 +- 3d/global_illumination/test.tscn | 10 +- 3d/ik/addons/sade/ik_look_at.gd | 1 + 3d/ik/addons/sade/plugin_main.gd | 1 + 3d/ik/button_change_scene.gd | 1 + 3d/ik/fabrik_ik.tscn | 2 + 3d/ik/fps/example_player.gd | 1 + 3d/ik/fps/fps_example.tscn | 5 +- 3d/ik/fps/simple_bullet.gd | 1 + 3d/ik/fps/weapon_pistol.dae.import | 1 + 3d/ik/look_at_ik.tscn | 3 + 3d/ik/model/godot_battle_bot.dae.import | 1 + 3d/ik/project.godot | 2 +- 3d/ik/skeleton_ik.tscn | 1 + 3d/ik/skeleton_ik_runner.gd | 1 + 3d/ik/target_from_mousepos.gd | 3 +- 3d/kinematic_character/level.tscn | 2 - 3d/kinematic_character/player/cubio.gd | 4 +- .../player/follow_camera.gd | 4 +- .../models/test_bed/test_bed.glb.import | 1 + 3d/material_testers/tester.gd | 2 + 3d/navmesh/navmesh.gd | 35 +++- 3d/navmesh/navmesh.tscn | 15 +- .../functional/test_moving_platform.tscn | 2 +- .../test_rigidbody_ground_check.tscn | 9 - .../test_perf_contact_islands.tscn | 2 +- 3d/physics_tests/tests/static_scene.tscn | 1 - .../tests/static_scene_plane.tscn | 1 - 3d/physics_tests/tests/test_options.tscn | 3 - .../utils/rigidbody_ground_check.gd | 8 +- 3d/physics_tests/utils/system_log.gd | 4 +- 3d/platformer/coin/coin.gd | 2 + 3d/platformer/coin/coin.tscn | 1 - 3d/platformer/coin/sound_coin.wav.import | 4 +- 3d/platformer/enemy/enemy.gd | 1 + 3d/platformer/enemy/enemy.tscn | 3 - 3d/platformer/enemy/robot_walk.wav.import | 4 +- 3d/platformer/enemy/sound_explode.wav.import | 4 +- 3d/platformer/enemy/sound_hit.wav.import | 4 +- 3d/platformer/player/bullet/bullet.gd | 1 + 3d/platformer/player/follow_camera.gd | 2 + 3d/platformer/player/player.gd | 1 + 3d/platformer/player/player.tscn | 4 +- 3d/platformer/player/sound_jump.wav.import | 4 +- 3d/platformer/player/sound_shoot.wav.import | 4 +- 3d/platformer/stage/stage.tscn | 10 +- 3d/platformer/stage/tiles.tres | 36 ++-- 3d/rigidbody_character/cube_rigidbody.tscn | 1 - 3d/rigidbody_character/level.gd | 1 + 3d/rigidbody_character/level.tscn | 2 - 3d/rigidbody_character/player/cubio.gd | 2 + .../player/follow_camera.gd | 3 +- 3d/truck_town/car_base.tscn | 7 - 3d/truck_town/car_select.gd | 2 + 3d/truck_town/car_select.tscn | 3 +- 3d/truck_town/follow_camera.gd | 4 +- 3d/truck_town/spedometer.gd | 2 + 3d/truck_town/tow_truck.tscn | 19 -- 3d/truck_town/town_mesh.tscn | 146 --------------- 3d/truck_town/trailer_truck.tscn | 14 -- 3d/truck_town/vehicle.gd | 4 +- 3d/voxel/menu/debug.gd | 1 + 3d/voxel/menu/ingame/pause_menu.gd | 1 + 3d/voxel/menu/main/main_menu.gd | 1 + 3d/voxel/menu/main/splash_text.gd | 1 + 3d/voxel/menu/options/option_buttons.gd | 1 + 3d/voxel/menu/options/options.gd | 1 + 3d/voxel/player/player.gd | 1 + 3d/voxel/player/player.tscn | 2 +- 3d/voxel/settings.gd | 1 + 3d/voxel/world/chunk.gd | 1 + 3d/voxel/world/environment.gd | 1 + 3d/voxel/world/terrain_generator.gd | 1 + 3d/voxel/world/voxel_world.gd | 1 + 3d/waypoints/camera.gd | 1 + 3d/waypoints/main.tscn | 6 - 3d/waypoints/waypoint.gd | 11 +- 3d/waypoints/waypoint.tscn | 3 - audio/bpm_sync/bpm_sync.gd | 18 +- audio/device_changer/Changer.gd | 1 + audio/generator/generator_demo.gd | 10 +- audio/mic_record/MicRecord.gd | 2 + audio/midi_piano/piano.gd | 2 + audio/midi_piano/piano_keys/A440.wav.import | 4 +- audio/midi_piano/piano_keys/piano_key.gd | 1 + .../midi_piano/piano_keys/piano_key_color.gd | 2 + audio/spectrum/show_spectrum.gd | 18 +- gui/drag_and_drop/drag_drop_script.gd | 1 + gui/input_mapping/ActionRemapButton.gd | 2 + gui/input_mapping/KeyPersistence.gd | 1 + gui/multiple_resolutions/main.gd | 1 + gui/regex/regex.gd | 2 + gui/rich_text_bbcode/rich_text_bbcode.gd | 1 + gui/theming_override/test.gd | 2 + gui/translation/hello_en.wav.import | 4 +- gui/translation/hello_es.wav.import | 4 +- gui/translation/hello_jp.wav.import | 4 +- gui/translation/translation_demo.gd | 1 + loading/autoload/global.gd | 1 + loading/autoload/scene_a.gd | 1 + loading/autoload/scene_b.gd | 1 + loading/background_load/background_load.gd | 3 + loading/background_load/background_load.tscn | 3 - loading/background_load/paintings.gd | 1 + loading/background_load/sculptures.gd | 1 + .../multiple_threads_loading/link_button.gd | 1 + .../resource_queue.gd | 1 + loading/scene_changer/scene_a.gd | 1 + loading/scene_changer/scene_b.gd | 1 + loading/serialization/enemy.gd | 1 + loading/serialization/player.gd | 2 + loading/serialization/save_load.tscn | 12 +- .../serialization/save_load_config_file.gd | 5 +- loading/serialization/save_load_json.gd | 5 +- loading/threads/thread.gd | 2 + .../node25d/.broken-gdscripts/Basis25D.gd | 10 ++ .../node25d/.broken-gdscripts/Transform25D.gd | 4 + .../addons/node25d/main_screen/gizmo_25d.gd | 2 + .../node25d/main_screen/main_screen_25d.tscn | 3 - .../node25d/main_screen/viewport_25d.gd | 2 + misc/2.5d/addons/node25d/node25d_plugin.gd | 2 + misc/2.5d/addons/node25d/node_25d.gd | 1 + misc/2.5d/addons/node25d/shadow_math_25d.gd | 1 + misc/2.5d/addons/node25d/y_sort_25d.gd | 1 + misc/2.5d/assets/cube/cube_math.gd | 6 +- misc/2.5d/assets/demo_scene.tscn | 29 +-- misc/2.5d/assets/platform/platform_sprite.gd | 2 + misc/2.5d/assets/player/player_math_25d.gd | 2 + misc/2.5d/assets/player/player_sprite.gd | 8 +- misc/2.5d/assets/shadow/shadow_sprite.gd | 2 + misc/2.5d/assets/ui/control_hints.gd | 1 + misc/joypads/joypads.gd | 2 + misc/joypads/joypads.tscn | 90 +++++----- misc/joypads/remap/remap_wizard.tscn | 1 + misc/matrix_transform/2D.tscn | 1 - misc/matrix_transform/marker/AxisMarker2D.gd | 1 + misc/matrix_transform/marker/AxisMarker3D.gd | 1 + .../OpenSimplexNoise_Viewer.gd | 6 +- misc/os_test/icon.png.import | 1 + misc/os_test/os_test.gd | 111 ++++++------ misc/os_test/os_test.tscn | 52 +++--- misc/pause/pause_button.gd | 1 + misc/pause/spinpause.tscn | 1 - misc/window_management/control.gd | 2 + misc/window_management/observer/observer.gd | 2 + misc/window_management/window_management.tscn | 1 - mobile/android_iap/iap_demo.gd | 6 +- mobile/multitouch_cubes/CubeScene.tscn | 1 - mobile/multitouch_cubes/GestureArea.gd | 2 + mobile/multitouch_cubes/Main.tscn | 3 - mobile/multitouch_view/Main.gd | 1 + mobile/multitouch_view/TouchHelper.gd | 2 + mobile/sensors/main.gd | 168 +++++++++--------- .../addons/node25d-cs/main_screen/Gizmo25D.cs | 118 ++++++------ .../main_screen/main_screen_25d.tscn | 4 +- .../node25d-cs/main_screen/viewport_25d.gd | 2 + mono/2.5d/addons/node25d-cs/node25d_plugin.gd | 2 + mono/2.5d/assets/demo_scene.tscn | 1 + mono/2.5d/assets/platform/platform_sprite.gd | 2 + mono/2.5d/assets/shadow/shadow_sprite.gd | 2 + mono/2.5d/assets/ui/control_hints.gd | 1 + mono/2.5d/project.godot | 6 +- mono/android_iap/project.godot | 4 + mono/dodge_the_creeps/HUD.cs | 2 + mono/dodge_the_creeps/Mob.tscn | 10 +- mono/dodge_the_creeps/Player.cs | 1 + mono/dodge_the_creeps/art/gameover.wav.import | 4 +- mono/dodge_the_creeps/project.godot | 4 + mono/multiplayer_pong/lobby.tscn | 3 - mono/multiplayer_pong/project.godot | 4 + mono/pong/project.godot | 4 + networking/multiplayer_bomber/bomb.gd | 1 + networking/multiplayer_bomber/bomb.tscn | 1 - networking/multiplayer_bomber/gamestate.gd | 30 ++-- networking/multiplayer_bomber/lobby.gd | 1 + networking/multiplayer_bomber/lobby.tscn | 3 - networking/multiplayer_bomber/player.gd | 30 ++-- networking/multiplayer_bomber/rock.gd | 1 + networking/multiplayer_bomber/score.gd | 2 + networking/multiplayer_pong/lobby.tscn | 3 - networking/multiplayer_pong/logic/ball.gd | 1 + networking/multiplayer_pong/logic/lobby.gd | 1 + networking/multiplayer_pong/logic/paddle.gd | 1 + networking/multiplayer_pong/logic/pong.gd | 1 + networking/webrtc_minimal/Signaling.gd | 1 + networking/webrtc_minimal/chat.gd | 4 +- networking/webrtc_minimal/link_button.gd | 3 +- networking/webrtc_minimal/main.gd | 2 + networking/webrtc_minimal/minimal.gd | 5 +- networking/webrtc_minimal/project.godot | 2 +- .../client/multiplayer_client.gd | 2 + .../client/ws_webrtc_client.gd | 14 +- networking/webrtc_signaling/demo/client_ui.gd | 2 + networking/webrtc_signaling/demo/main.gd | 1 + networking/webrtc_signaling/demo/main.tscn | 2 - networking/webrtc_signaling/project.godot | 2 +- .../server/ws_webrtc_server.gd | 6 +- networking/websocket_chat/client/client.gd | 18 +- networking/websocket_chat/client/client_ui.gd | 2 + networking/websocket_chat/server/server.gd | 14 +- networking/websocket_chat/server/server_ui.gd | 2 + networking/websocket_chat/utils.gd | 1 + networking/websocket_minimal/client.gd | 14 +- networking/websocket_minimal/server.gd | 2 + .../websocket_multiplayer/script/game.gd | 6 +- .../websocket_multiplayer/script/main.gd | 4 +- plugins/addons/custom_node/heart.gd | 2 + plugins/addons/custom_node/heart_plugin.gd | 1 + plugins/addons/main_screen/main_panel.tscn | 3 - .../addons/main_screen/main_screen_plugin.gd | 2 + plugins/addons/main_screen/print_hello.gd | 1 + .../material_creator/material_creator.gd | 2 + .../material_creator/material_dock.tscn | 1 + .../material_creator/material_plugin.gd | 2 + .../material_creator/material_resource.gd | 2 + .../addons/material_import_plugin/import.gd | 2 + .../addons/material_import_plugin/plugin.gd | 2 + plugins/project.godot | 2 +- plugins/test_scene.tscn | 7 +- viewport/2d_in_3d/2D_in_3D.gd | 1 + viewport/2d_in_3d/2D_in_3D.tscn | 1 - viewport/2d_in_3d/pong.gd | 2 + viewport/3d_in_2d/3d_in_2d.gd | 2 + viewport/3d_in_2d/robot_3d.gd | 2 + viewport/3d_scaling/cubes.tscn | 2 - viewport/3d_scaling/hud.gd | 2 + viewport/3d_scaling/hud.tscn | 3 - .../dynamic_split_screen/camera_controller.gd | 1 + viewport/dynamic_split_screen/player.gd | 1 + .../dynamic_split_screen/split_screen.tscn | 43 ----- .../dynamic_split_screen/wall_coloring.gd | 2 + viewport/gui_in_3d/gui_3d.gd | 2 + viewport/gui_in_3d/gui_in_3d.tscn | 5 - viewport/screen_capture/screen_capture.gd | 2 + visual_script/circle_pop/icon.png.import | 1 + .../circle_pop/white-circle.png.import | 1 + visual_script/multitouch_view/Main.vs | Bin 2718 -> 2597 bytes visual_script/multitouch_view/TouchHelper.gd | 2 + visual_script/multitouch_view/icon.png.import | 1 + visual_script/pong/ball.png.import | 1 + visual_script/pong/icon.png.import | 1 + visual_script/pong/paddle.png.import | 1 + visual_script/pong/scripts/ball.vs | Bin 1685 -> 1671 bytes visual_script/pong/scripts/ceiling_floor.vs | Bin 1154 -> 1156 bytes visual_script/pong/scripts/paddle.vs | Bin 2663 -> 2682 bytes visual_script/pong/separator.png.import | 1 + 332 files changed, 1034 insertions(+), 904 deletions(-) diff --git a/2d/dodge_the_creeps/HUD.gd b/2d/dodge_the_creeps/HUD.gd index cb6c7e31..e84b0e71 100644 --- a/2d/dodge_the_creeps/HUD.gd +++ b/2d/dodge_the_creeps/HUD.gd @@ -2,6 +2,7 @@ extends CanvasLayer signal start_game + func show_message(text): $MessageLabel.text = text $MessageLabel.show() diff --git a/2d/dodge_the_creeps/Main.gd b/2d/dodge_the_creeps/Main.gd index d5b5756f..ab624ab3 100644 --- a/2d/dodge_the_creeps/Main.gd +++ b/2d/dodge_the_creeps/Main.gd @@ -3,6 +3,7 @@ extends Node export(PackedScene) var mob_scene var score + func _ready(): randomize() @@ -50,6 +51,7 @@ func _on_MobTimer_timeout(): # Spawn the mob by adding it to the Main scene. add_child(mob) + func _on_ScoreTimer_timeout(): score += 1 $HUD.update_score(score) diff --git a/2d/dodge_the_creeps/Main.tscn b/2d/dodge_the_creeps/Main.tscn index 6e91a985..3aa8a38f 100644 --- a/2d/dodge_the_creeps/Main.tscn +++ b/2d/dodge_the_creeps/Main.tscn @@ -20,9 +20,6 @@ mob_scene = ExtResource( 2 ) anchor_right = 1.0 anchor_bottom = 1.0 color = Color( 0.219608, 0.372549, 0.380392, 1 ) -__meta__ = { -"_edit_use_anchors_": false -} [node name="Player" parent="." instance=ExtResource( 3 )] diff --git a/2d/dodge_the_creeps/Mob.gd b/2d/dodge_the_creeps/Mob.gd index 56e9be6a..076b04f9 100644 --- a/2d/dodge_the_creeps/Mob.gd +++ b/2d/dodge_the_creeps/Mob.gd @@ -1,5 +1,6 @@ extends RigidBody2D + func _ready(): $AnimatedSprite.playing = true var mob_types = $AnimatedSprite.frames.get_animation_names() diff --git a/2d/dodge_the_creeps/Player.gd b/2d/dodge_the_creeps/Player.gd index d45e6e82..14ca15c8 100644 --- a/2d/dodge_the_creeps/Player.gd +++ b/2d/dodge_the_creeps/Player.gd @@ -5,6 +5,7 @@ signal hit export var speed = 400 # How fast the player will move (pixels/sec). var screen_size # Size of the game window. + func _ready(): screen_size = get_viewport_rect().size hide() diff --git a/2d/dodge_the_creeps/art/gameover.wav.import b/2d/dodge_the_creeps/art/gameover.wav.import index 58c33ddc..ba796343 100644 --- a/2d/dodge_the_creeps/art/gameover.wav.import +++ b/2d/dodge_the_creeps/art/gameover.wav.import @@ -17,5 +17,7 @@ force/max_rate=false force/max_rate_hz=44100 edit/trim=true edit/normalize=true -edit/loop=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 compress/mode=0 diff --git a/2d/finite_state_machine/debug/ControlsPanel.tscn b/2d/finite_state_machine/debug/ControlsPanel.tscn index 7f47229f..b65c8e20 100644 --- a/2d/finite_state_machine/debug/ControlsPanel.tscn +++ b/2d/finite_state_machine/debug/ControlsPanel.tscn @@ -7,9 +7,6 @@ anchor_left = 1.0 anchor_right = 1.0 margin_left = -220.0 margin_bottom = 170.0 -__meta__ = { -"_edit_use_anchors_": false -} [node name="Keys" type="Label" parent="."] anchor_right = 1.0 diff --git a/2d/finite_state_machine/debug/states_stack_displayer.gd b/2d/finite_state_machine/debug/states_stack_displayer.gd index 325313c2..34f7e321 100644 --- a/2d/finite_state_machine/debug/states_stack_displayer.gd +++ b/2d/finite_state_machine/debug/states_stack_displayer.gd @@ -2,6 +2,7 @@ extends Panel onready var fsm_node = get_node("../../Player/StateMachine") + func _process(_delta): var states_names = "" var numbers = "" diff --git a/2d/finite_state_machine/player/bullet/bullet.gd b/2d/finite_state_machine/player/bullet/bullet.gd index 573816f3..fbb9a004 100644 --- a/2d/finite_state_machine/player/bullet/bullet.gd +++ b/2d/finite_state_machine/player/bullet/bullet.gd @@ -5,6 +5,7 @@ export(float) var speed = 1000.0 onready var root = get_tree().root + func _ready(): set_as_toplevel(true) diff --git a/2d/finite_state_machine/player/bullet/bullet_spawner.gd b/2d/finite_state_machine/player/bullet/bullet_spawner.gd index 56eb376f..d6136d58 100644 --- a/2d/finite_state_machine/player/bullet/bullet_spawner.gd +++ b/2d/finite_state_machine/player/bullet/bullet_spawner.gd @@ -2,6 +2,7 @@ extends Node2D var bullet = preload("Bullet.tscn") + func _unhandled_input(event): if event.is_action_pressed("fire"): fire() diff --git a/2d/finite_state_machine/player/player_controller.gd b/2d/finite_state_machine/player/player_controller.gd index a445e806..d507ed10 100644 --- a/2d/finite_state_machine/player/player_controller.gd +++ b/2d/finite_state_machine/player/player_controller.gd @@ -7,6 +7,7 @@ signal direction_changed(new_direction) var look_direction = Vector2.RIGHT setget set_look_direction + func take_damage(attacker, amount, effect = null): if is_a_parent_of(attacker): return diff --git a/2d/finite_state_machine/player/player_state_machine.gd b/2d/finite_state_machine/player/player_state_machine.gd index 261193ac..e2c0ae44 100644 --- a/2d/finite_state_machine/player/player_state_machine.gd +++ b/2d/finite_state_machine/player/player_state_machine.gd @@ -6,6 +6,7 @@ onready var jump = $Jump onready var stagger = $Stagger onready var attack = $Attack + func _ready(): states_map = { "idle": idle, diff --git a/2d/finite_state_machine/player/states/combat/attack.gd b/2d/finite_state_machine/player/states/combat/attack.gd index 1512412a..974e3a1d 100644 --- a/2d/finite_state_machine/player/states/combat/attack.gd +++ b/2d/finite_state_machine/player/states/combat/attack.gd @@ -1,5 +1,6 @@ extends "res://state_machine/state.gd" + func enter(): owner.get_node("AnimationPlayer").play("idle") diff --git a/2d/finite_state_machine/player/states/combat/stagger.gd b/2d/finite_state_machine/player/states/combat/stagger.gd index c6153e24..9b9d07dd 100644 --- a/2d/finite_state_machine/player/states/combat/stagger.gd +++ b/2d/finite_state_machine/player/states/combat/stagger.gd @@ -3,6 +3,7 @@ extends "res://state_machine/state.gd" # The animation only affects the Body Sprite's modulate property so it # could stack with other animations if we had two AnimationPlayer nodes. + func enter(): owner.get_node("AnimationPlayer").play("stagger") diff --git a/2d/finite_state_machine/player/states/debug/state_name_displayer.gd b/2d/finite_state_machine/player/states/debug/state_name_displayer.gd index e5ab70d2..a2923748 100644 --- a/2d/finite_state_machine/player/states/debug/state_name_displayer.gd +++ b/2d/finite_state_machine/player/states/debug/state_name_displayer.gd @@ -2,6 +2,7 @@ extends Label var start_position = Vector2() + func _ready(): start_position = rect_position diff --git a/2d/finite_state_machine/player/states/die.gd b/2d/finite_state_machine/player/states/die.gd index 310afa6a..3fa62011 100644 --- a/2d/finite_state_machine/player/states/die.gd +++ b/2d/finite_state_machine/player/states/die.gd @@ -1,5 +1,6 @@ extends "res://state_machine/state.gd" + # Initialize the state. E.g. change the animation. func enter(): owner.set_dead(true) diff --git a/2d/finite_state_machine/player/states/motion/in_air/jump.gd b/2d/finite_state_machine/player/states/motion/in_air/jump.gd index b316e273..164971ad 100644 --- a/2d/finite_state_machine/player/states/motion/in_air/jump.gd +++ b/2d/finite_state_machine/player/states/motion/in_air/jump.gd @@ -17,6 +17,7 @@ var horizontal_velocity = Vector2() var vertical_speed = 0.0 var height = 0.0 + func initialize(speed, velocity): horizontal_speed = speed if speed > 0.0: diff --git a/2d/finite_state_machine/player/states/motion/motion.gd b/2d/finite_state_machine/player/states/motion/motion.gd index aaf9261b..48cdd406 100644 --- a/2d/finite_state_machine/player/states/motion/motion.gd +++ b/2d/finite_state_machine/player/states/motion/motion.gd @@ -1,6 +1,7 @@ extends "res://state_machine/state.gd" # Collection of important methods to handle direction and animation. + func handle_input(event): if event.is_action_pressed("simulate_damage"): emit_signal("finished", "stagger") diff --git a/2d/finite_state_machine/player/states/motion/on_ground/idle.gd b/2d/finite_state_machine/player/states/motion/on_ground/idle.gd index bb813b64..f50b18f6 100644 --- a/2d/finite_state_machine/player/states/motion/on_ground/idle.gd +++ b/2d/finite_state_machine/player/states/motion/on_ground/idle.gd @@ -1,5 +1,6 @@ extends "on_ground.gd" + func enter(): owner.get_node("AnimationPlayer").play("idle") diff --git a/2d/finite_state_machine/player/states/motion/on_ground/move.gd b/2d/finite_state_machine/player/states/motion/on_ground/move.gd index 2fa56a40..352f3ef5 100644 --- a/2d/finite_state_machine/player/states/motion/on_ground/move.gd +++ b/2d/finite_state_machine/player/states/motion/on_ground/move.gd @@ -1,7 +1,9 @@ extends "on_ground.gd" -export(float) var max_walk_speed = 450 -export(float) var max_run_speed = 700 + +export(float) var max_walk_speed = 450.0 +export(float) var max_run_speed = 700.0 + func enter(): speed = 0.0 diff --git a/2d/finite_state_machine/player/states/motion/on_ground/on_ground.gd b/2d/finite_state_machine/player/states/motion/on_ground/on_ground.gd index 85390009..a97ba13e 100644 --- a/2d/finite_state_machine/player/states/motion/on_ground/on_ground.gd +++ b/2d/finite_state_machine/player/states/motion/on_ground/on_ground.gd @@ -4,6 +4,7 @@ extends "../motion.gd" var speed = 0.0 var velocity = Vector2() + func handle_input(event): if event.is_action_pressed("jump"): emit_signal("finished", "jump") diff --git a/2d/finite_state_machine/player/weapon/sword.gd b/2d/finite_state_machine/player/weapon/sword.gd index 1e2218a4..47faf464 100644 --- a/2d/finite_state_machine/player/weapon/sword.gd +++ b/2d/finite_state_machine/player/weapon/sword.gd @@ -30,6 +30,7 @@ var combo = [{ var hit_objects = [] + func _ready(): # warning-ignore:return_value_discarded $AnimationPlayer.connect("animation_finished", self, "_on_animation_finished") diff --git a/2d/finite_state_machine/player/weapon/weapon_pivot.gd b/2d/finite_state_machine/player/weapon/weapon_pivot.gd index bcb311b2..8e4ce726 100644 --- a/2d/finite_state_machine/player/weapon/weapon_pivot.gd +++ b/2d/finite_state_machine/player/weapon/weapon_pivot.gd @@ -2,6 +2,7 @@ extends Position2D var z_index_start = 0 + func _ready(): #warning-ignore:return_value_discarded owner.connect("direction_changed", self, "_on_Parent_direction_changed") diff --git a/2d/finite_state_machine/state_machine/state.gd b/2d/finite_state_machine/state_machine/state.gd index a2a43d4f..8d298fa2 100644 --- a/2d/finite_state_machine/state_machine/state.gd +++ b/2d/finite_state_machine/state_machine/state.gd @@ -6,6 +6,7 @@ extends Node # warning-ignore:unused_signal signal finished(next_state_name) + # Initialize the state. E.g. change the animation. func enter(): pass diff --git a/2d/finite_state_machine/state_machine/state_machine.gd b/2d/finite_state_machine/state_machine/state_machine.gd index fec9c423..f3e77b7a 100644 --- a/2d/finite_state_machine/state_machine/state_machine.gd +++ b/2d/finite_state_machine/state_machine/state_machine.gd @@ -17,6 +17,7 @@ var states_stack = [] var current_state = null var _active = false setget set_active + func _ready(): if not start_state: start_state = get_child(0).get_path() diff --git a/2d/gd_paint/paint_control.gd b/2d/gd_paint/paint_control.gd index ca0a27d0..fcd7fa47 100644 --- a/2d/gd_paint/paint_control.gd +++ b/2d/gd_paint/paint_control.gd @@ -48,6 +48,7 @@ var brush_shape = BrushShapes.CIRCLE; # in the _draw function for more details). var bg_color = Color.white + func _ready(): # Get the top left position node. We need this to find out whether or not the mouse is inside the canvas. TL_node = get_node("TLPos") diff --git a/2d/gd_paint/paint_root.tscn b/2d/gd_paint/paint_root.tscn index 23a9d85e..93f09b6a 100644 --- a/2d/gd_paint/paint_root.tscn +++ b/2d/gd_paint/paint_root.tscn @@ -215,8 +215,7 @@ text = "Clear picture" [node name="SaveFileDialog" type="FileDialog" parent="."] margin_right = 600.0 margin_bottom = 400.0 +rect_min_size = Vector2( 300, 105 ) resizable = true access = 2 filters = PoolStringArray( "*.png" ) -current_dir = "/home/aaronfranke/workspace/godot-demo-projects/2d/gd_paint" -current_path = "/home/aaronfranke/workspace/godot-demo-projects/2d/gd_paint/" diff --git a/2d/gd_paint/tools_panel.gd b/2d/gd_paint/tools_panel.gd index 88ce3fe7..85e570fd 100644 --- a/2d/gd_paint/tools_panel.gd +++ b/2d/gd_paint/tools_panel.gd @@ -10,6 +10,7 @@ onready var _parent = get_parent() onready var save_dialog = _parent.get_node(@"SaveFileDialog") onready var paint_control = _parent.get_node(@"PaintControl") + func _ready(): # warning-ignore-all:return_value_discarded # Assign all of the needed signals for the oppersation buttons. diff --git a/2d/hdr/beach_cave.gd b/2d/hdr/beach_cave.gd index 9a7dffe4..749ad930 100644 --- a/2d/hdr/beach_cave.gd +++ b/2d/hdr/beach_cave.gd @@ -4,6 +4,7 @@ const CAVE_LIMIT = 1000 onready var cave = $Cave + func _unhandled_input(event): if event is InputEventMouseMotion and event.button_mask > 0: var rel_x = event.relative.x diff --git a/2d/hexagonal_map/troll.gd b/2d/hexagonal_map/troll.gd index 383588f0..ab785400 100644 --- a/2d/hexagonal_map/troll.gd +++ b/2d/hexagonal_map/troll.gd @@ -3,6 +3,7 @@ extends KinematicBody2D const MOTION_SPEED = 160 # Pixels/second. const TAN30DEG = tan(deg2rad(30)) + func _physics_process(_delta): var motion = Vector2() motion.x = Input.get_action_strength("move_right") - Input.get_action_strength("move_left") diff --git a/2d/instancing/ball_factory.gd b/2d/instancing/ball_factory.gd index 1386307a..fba30837 100644 --- a/2d/instancing/ball_factory.gd +++ b/2d/instancing/ball_factory.gd @@ -2,6 +2,7 @@ extends Node2D export(PackedScene) var ball_scene = preload("res://ball.tscn") + func _unhandled_input(event): if event.is_echo(): return diff --git a/2d/isometric/troll.gd b/2d/isometric/troll.gd index 7c5d1048..0ea5f3fc 100644 --- a/2d/isometric/troll.gd +++ b/2d/isometric/troll.gd @@ -2,6 +2,7 @@ extends KinematicBody2D const MOTION_SPEED = 160 # Pixels/second. + func _physics_process(_delta): var motion = Vector2() motion.x = Input.get_action_strength("move_right") - Input.get_action_strength("move_left") diff --git a/2d/kinematic_character/level/princess.gd b/2d/kinematic_character/level/princess.gd index f9e721ca..f5facf5b 100644 --- a/2d/kinematic_character/level/princess.gd +++ b/2d/kinematic_character/level/princess.gd @@ -1,5 +1,6 @@ extends Node + func _on_body_entered(body): if body.name == "Player": $"../WinText".show() diff --git a/2d/kinematic_character/player/player.gd b/2d/kinematic_character/player/player.gd index 4678ecac..4886e5c4 100644 --- a/2d/kinematic_character/player/player.gd +++ b/2d/kinematic_character/player/player.gd @@ -9,6 +9,7 @@ var velocity = Vector2() onready var gravity = ProjectSettings.get_setting("physics/2d/default_gravity") + func _physics_process(delta): # Horizontal movement code. First, get the player's input. var walk = WALK_FORCE * (Input.get_action_strength("move_right") - Input.get_action_strength("move_left")) diff --git a/2d/navigation/level.tscn b/2d/navigation/level.tscn index dafc4ff1..b32a27c1 100644 --- a/2d/navigation/level.tscn +++ b/2d/navigation/level.tscn @@ -9,7 +9,7 @@ vertices = PoolVector2Array( 587.833, 271.924, 530.464, 284.878, 508.256, 281.17 polygons = [ PoolIntArray( 0, 1, 2, 3 ), PoolIntArray( 4, 5, 6 ), PoolIntArray( 7, 8, 9 ), PoolIntArray( 10, 11, 12, 13, 14 ), PoolIntArray( 15, 16, 17, 18, 19, 20 ), PoolIntArray( 21, 3, 2, 22, 23 ), PoolIntArray( 24, 25, 26, 27, 28 ), PoolIntArray( 25, 24, 29 ), PoolIntArray( 30, 25, 29, 31 ), PoolIntArray( 32, 33, 34, 35, 36 ), PoolIntArray( 37, 38, 39, 40 ), PoolIntArray( 41, 37, 40 ), PoolIntArray( 41, 40, 42, 43 ), PoolIntArray( 44, 45, 30, 31 ), PoolIntArray( 46, 12, 11, 7, 47 ), PoolIntArray( 47, 7, 9 ), PoolIntArray( 48, 10, 14, 49 ), PoolIntArray( 50, 6, 5, 51, 48 ), PoolIntArray( 52, 50, 48, 49 ), PoolIntArray( 53, 52, 49, 54, 55 ), PoolIntArray( 17, 56, 57, 58, 18 ), PoolIntArray( 59, 60, 61, 62, 63 ), PoolIntArray( 64, 65, 61, 66 ), PoolIntArray( 66, 61, 60, 67, 68 ), PoolIntArray( 68, 67, 69, 70 ), PoolIntArray( 68, 70, 35, 34 ), PoolIntArray( 71, 53, 55, 72 ), PoolIntArray( 71, 72, 73, 74 ), PoolIntArray( 4, 6, 75, 76 ), PoolIntArray( 63, 77, 74, 59 ), PoolIntArray( 78, 2, 1, 76, 75, 79, 80 ), PoolIntArray( 78, 80, 63, 62 ), PoolIntArray( 81, 59, 74, 73 ), PoolIntArray( 81, 73, 41, 82 ), PoolIntArray( 44, 31, 83, 84, 85 ), PoolIntArray( 18, 86, 47, 9, 19 ), PoolIntArray( 15, 20, 3, 21 ), PoolIntArray( 23, 22, 87, 88 ), PoolIntArray( 89, 28, 27, 90, 91 ), PoolIntArray( 89, 91, 92, 93 ), PoolIntArray( 36, 94, 95, 93, 92 ), PoolIntArray( 36, 92, 88 ), PoolIntArray( 36, 88, 87, 32 ), PoolIntArray( 36, 35, 85, 84 ), PoolIntArray( 42, 44, 85, 96 ), PoolIntArray( 42, 96, 43 ), PoolIntArray( 41, 43, 82 ) ] outlines = [ PoolVector2Array( 221.41, 488.446, 147.386, 408.87, 145.584, 224.311, 202.904, 99.8167, 310.24, 62.8043, 310.24, 75.7586, 517.509, 55.4019, 537.866, 99.8167, 536.016, 175.692, 476.796, 207.152, 443.485, 192.348, 437.933, 170.14, 415.725, 177.543, 428.68, 246.015, 471.244, 251.567, 587.833, 179.393, 573.028, 140.53, 645.202, 159.036, 573.028, 94.2648, 582.281, 47.9994, 667.409, 75.7586, 710.106, 179.216, 700.721, 268.223, 682.214, 284.878, 695.169, 303.385, 706.272, 501.401, 669.26, 529.16, 602.638, 523.608, 571.177, 501.401, 536.407, 524.944, 371.311, 518.056, 300.441, 497.494, 317.643, 447.733, 182.548, 382.961, 193.651, 423.675, 245.469, 477.343 ), PoolVector2Array( 350.954, 447.733, 363.908, 351.501, 321.344, 338.546, 241.767, 327.443, 234.365, 244.165, 288.033, 231.211, 221.41, 171.991, 189.95, 231.211, 175.145, 332.995, 184.398, 349.65, 265.825, 407.019 ), PoolVector2Array( 267.676, 153.485, 310.24, 112.771, 308.39, 92.4142, 487.899, 85.0117, 502.704, 97.9661, 495.302, 164.588, 465.692, 179.393, 452.738, 166.439, 476.796, 149.783, 460.14, 123.875, 319.493, 190.497 ), PoolVector2Array( 397.219, 188.646, 345.402, 210.854, 360.207, 223.808, 297.286, 258.97, 299.136, 283.028, 352.804, 320.04, 424.978, 334.845, 421.277, 360.754, 384.265, 351.501, 376.862, 418.123, 480.497, 434.779, 508.256, 281.177, 421.277, 270.074 ), PoolVector2Array( 497.153, 255.269, 597.086, 192.348, 630.397, 212.704, 650.754, 251.567, 648.903, 321.891, 669.26, 297.833, 676.663, 493.998, 619.293, 510.654, 598.937, 492.148, 621.144, 486.596, 648.903, 394.065, 624.926, 359.595, 526.762, 342.248, 530.464, 284.878, 587.833, 271.924 ), PoolVector2Array( 325.228, 486.302, 332.441, 457.494, 366.441, 467.494, 373.441, 436.494, 476.441, 468.494, 496.638, 439.381, 524.608, 359.37, 620.443, 383.995, 605.437, 456.366, 538.077, 499.891, 395.879, 501.87 ) ] -[node name="Navigation2D" type="Navigation2D"] +[node name="Navigation2D" type="Node2D"] script = ExtResource( 1 ) [node name="Navmesh" type="NavigationPolygonInstance" parent="."] diff --git a/2d/navigation/navigation.gd b/2d/navigation/navigation.gd index 17967cf8..6e7335fa 100644 --- a/2d/navigation/navigation.gd +++ b/2d/navigation/navigation.gd @@ -1,10 +1,20 @@ -extends Navigation2D +extends Node2D + export(float) var character_speed = 400.0 var path = [] +var map + onready var character = $Character + +func _ready(): + # use call deferred to make sure the entire SceneTree Nodes are setup + # else yield on 'physics_frame' in a _ready() might get stuck + call_deferred("setup_navserver") + + func _process(delta): var walk_distance = character_speed * delta move_along_path(walk_distance) @@ -18,6 +28,26 @@ func _unhandled_input(event): _update_navigation_path(character.position, get_local_mouse_position()) +func setup_navserver(): + + # create a new navigation map + map = Navigation2DServer.map_create() + Navigation2DServer.map_set_active(map, true) + + # create a new navigation region and add it to the map + var region = Navigation2DServer.region_create() + Navigation2DServer.region_set_transform(region, Transform()) + Navigation2DServer.region_set_map(region, map) + + # sets navigation mesh for the region + var navigation_poly = NavigationMesh.new() + navigation_poly = $Navmesh.navpoly + Navigation2DServer.region_set_navpoly(region, navigation_poly) + + # wait for Navigation2DServer sync to adapt to made changes + yield(get_tree(), "physics_frame") + + func move_along_path(distance): var last_point = character.position while path.size(): @@ -36,10 +66,10 @@ func move_along_path(distance): func _update_navigation_path(start_position, end_position): - # get_simple_path is part of the Navigation2D class. + # map_get_path is part of the avigation2DServer class. # It returns a PoolVector2Array of points that lead you # from the start_position to the end_position. - path = get_simple_path(start_position, end_position, true) + path = Navigation2DServer.map_get_path(map,start_position, end_position, true) # The first point is always the start_position. # We don't need it in this example as it corresponds to the character's position. path.remove(0) diff --git a/2d/navigation_astar/character.gd b/2d/navigation_astar/character.gd index b566df1d..68320067 100644 --- a/2d/navigation_astar/character.gd +++ b/2d/navigation_astar/character.gd @@ -14,6 +14,7 @@ var _target_position = Vector2() var _velocity = Vector2() + func _ready(): _change_state(States.IDLE) diff --git a/2d/navigation_astar/pathfind_astar.gd b/2d/navigation_astar/pathfind_astar.gd index 30a2dac7..edae7847 100644 --- a/2d/navigation_astar/pathfind_astar.gd +++ b/2d/navigation_astar/pathfind_astar.gd @@ -20,6 +20,7 @@ onready var astar_node = AStar.new() onready var obstacles = get_used_cells_by_id(0) onready var _half_cell_size = cell_size / 2 + func _ready(): var walkable_cells_list = astar_add_walkable_cells(obstacles) astar_connect_walkable_cells(walkable_cells_list) diff --git a/2d/physics_platformer/audio/sound_coin.wav.import b/2d/physics_platformer/audio/sound_coin.wav.import index 02be70ac..981fcac7 100644 --- a/2d/physics_platformer/audio/sound_coin.wav.import +++ b/2d/physics_platformer/audio/sound_coin.wav.import @@ -17,5 +17,7 @@ force/max_rate=false force/max_rate_hz=44100 edit/trim=true edit/normalize=true -edit/loop=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 compress/mode=0 diff --git a/2d/physics_platformer/audio/sound_explode.wav.import b/2d/physics_platformer/audio/sound_explode.wav.import index 52a56ab9..3c571f1b 100644 --- a/2d/physics_platformer/audio/sound_explode.wav.import +++ b/2d/physics_platformer/audio/sound_explode.wav.import @@ -17,5 +17,7 @@ force/max_rate=false force/max_rate_hz=44100 edit/trim=true edit/normalize=true -edit/loop=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 compress/mode=0 diff --git a/2d/physics_platformer/audio/sound_hit.wav.import b/2d/physics_platformer/audio/sound_hit.wav.import index cd0f653d..08b69019 100644 --- a/2d/physics_platformer/audio/sound_hit.wav.import +++ b/2d/physics_platformer/audio/sound_hit.wav.import @@ -17,5 +17,7 @@ force/max_rate=false force/max_rate_hz=44100 edit/trim=true edit/normalize=true -edit/loop=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 compress/mode=0 diff --git a/2d/physics_platformer/audio/sound_jump.wav.import b/2d/physics_platformer/audio/sound_jump.wav.import index b0bb11e8..d5ccf42a 100644 --- a/2d/physics_platformer/audio/sound_jump.wav.import +++ b/2d/physics_platformer/audio/sound_jump.wav.import @@ -17,5 +17,7 @@ force/max_rate=false force/max_rate_hz=44100 edit/trim=true edit/normalize=true -edit/loop=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 compress/mode=0 diff --git a/2d/physics_platformer/audio/sound_shoot.wav.import b/2d/physics_platformer/audio/sound_shoot.wav.import index 34d93e79..d9ed610b 100644 --- a/2d/physics_platformer/audio/sound_shoot.wav.import +++ b/2d/physics_platformer/audio/sound_shoot.wav.import @@ -17,5 +17,7 @@ force/max_rate=false force/max_rate_hz=44100 edit/trim=true edit/normalize=true -edit/loop=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 compress/mode=0 diff --git a/2d/physics_platformer/coin/coin.gd b/2d/physics_platformer/coin/coin.gd index 6c83375f..cdcd278f 100644 --- a/2d/physics_platformer/coin/coin.gd +++ b/2d/physics_platformer/coin/coin.gd @@ -3,6 +3,7 @@ extends Area2D var taken = false + func _on_body_enter(body): if not taken and body is Player: ($AnimationPlayer as AnimationPlayer).play("taken") diff --git a/2d/physics_platformer/enemy/enemy.gd b/2d/physics_platformer/enemy/enemy.gd index 2963b08a..11b80ff8 100644 --- a/2d/physics_platformer/enemy/enemy.gd +++ b/2d/physics_platformer/enemy/enemy.gd @@ -18,6 +18,7 @@ var Bullet = preload("res://player/bullet.gd") onready var rc_left = $RaycastLeft onready var rc_right = $RaycastRight + func _integrate_forces(s): var lv = s.get_linear_velocity() var new_anim = anim diff --git a/2d/physics_platformer/platform/moving_platform.gd b/2d/physics_platformer/platform/moving_platform.gd index caa59ac6..b4105e10 100644 --- a/2d/physics_platformer/platform/moving_platform.gd +++ b/2d/physics_platformer/platform/moving_platform.gd @@ -6,6 +6,7 @@ export var cycle = 1.0 var accum = 0.0 + func _physics_process(delta): accum += delta * (1.0 / cycle) * TAU accum = fmod(accum, TAU) diff --git a/2d/physics_platformer/player/bullet.gd b/2d/physics_platformer/player/bullet.gd index 07e286bd..24498de4 100644 --- a/2d/physics_platformer/player/bullet.gd +++ b/2d/physics_platformer/player/bullet.gd @@ -3,6 +3,7 @@ extends RigidBody2D var disabled = false + func _ready(): ($Timer as Timer).start() diff --git a/2d/physics_platformer/player/player.gd b/2d/physics_platformer/player/player.gd index b4da1bcb..2d3932dd 100644 --- a/2d/physics_platformer/player/player.gd +++ b/2d/physics_platformer/player/player.gd @@ -54,6 +54,7 @@ onready var sprite_smoke = sprite.get_node(@"Smoke") onready var animation_player = $AnimationPlayer onready var bullet_shoot = $BulletShoot + func _integrate_forces(s): var lv = s.get_linear_velocity() var step = s.get_step() diff --git a/2d/physics_tests/tests/functional/test_character_pixels.gd b/2d/physics_tests/tests/functional/test_character_pixels.gd index 993dc50c..81141619 100644 --- a/2d/physics_tests/tests/functional/test_character_pixels.gd +++ b/2d/physics_tests/tests/functional/test_character_pixels.gd @@ -21,6 +21,7 @@ func _ready(): options.add_menu_item(OPTION_TEST_CASE_DETECT_FLOOR_NO_SNAP) options.add_menu_item(OPTION_TEST_CASE_DETECT_FLOOR_MOTION_CHANGES) + func _physics_process(_delta): if _moving_body: if _moving_body.is_on_floor(): diff --git a/2d/physics_tests/tests/test_options.tscn b/2d/physics_tests/tests/test_options.tscn index 63d66ee5..c8fd1577 100644 --- a/2d/physics_tests/tests/test_options.tscn +++ b/2d/physics_tests/tests/test_options.tscn @@ -12,6 +12,3 @@ text = "TEST OPTIONS" flat = false align = 0 script = ExtResource( 1 ) -__meta__ = { -"_edit_use_anchors_": false -} diff --git a/2d/platformer/assets/theme/user_interface.tres b/2d/platformer/assets/theme/user_interface.tres index 502b933e..959eba0c 100644 --- a/2d/platformer/assets/theme/user_interface.tres +++ b/2d/platformer/assets/theme/user_interface.tres @@ -2,6 +2,10 @@ [ext_resource path="res://assets/theme/fonts/kenney_mini_square.tres" type="DynamicFontData" id=1] +[sub_resource type="DynamicFont" id=6] +size = 30 +font_data = ExtResource( 1 ) + [sub_resource type="StyleBoxFlat" id=1] content_margin_left = 6.0 content_margin_right = 6.0 @@ -62,10 +66,6 @@ border_width_right = 1 border_width_bottom = 1 border_color = Color( 0.41, 0.61, 0.91, 1 ) -[sub_resource type="DynamicFont" id=6] -size = 30 -font_data = ExtResource( 1 ) - [resource] default_font = SubResource( 6 ) Button/colors/font_color = Color( 0.8, 0.8075, 0.8275, 1 ) @@ -75,7 +75,7 @@ Button/colors/font_color_pressed = Color( 0.411765, 0.611765, 0.909804, 1 ) Button/colors/icon_color_hover = Color( 1.15, 1.15, 1.15, 1 ) Button/colors/icon_color_pressed = Color( 0.4715, 0.7015, 1.0465, 1 ) Button/constants/hseparation = 2 -Button/fonts/font = null +Button/fonts/font = SubResource( 6 ) Button/styles/disabled = SubResource( 1 ) Button/styles/focus = SubResource( 2 ) Button/styles/hover = SubResource( 3 ) diff --git a/2d/platformer/src/Actors/Actor.gd b/2d/platformer/src/Actors/Actor.gd index 8fe4f8c8..81f7eede 100644 --- a/2d/platformer/src/Actors/Actor.gd +++ b/2d/platformer/src/Actors/Actor.gd @@ -12,6 +12,7 @@ const FLOOR_NORMAL = Vector2.UP var _velocity = Vector2.ZERO + # _physics_process is called after the inherited _physics_process function. # This allows the Player and Enemy scenes to be affected by gravity. func _physics_process(delta): diff --git a/2d/platformer/src/Actors/Enemy.gd b/2d/platformer/src/Actors/Enemy.gd index b95ebd70..e5786fe3 100644 --- a/2d/platformer/src/Actors/Enemy.gd +++ b/2d/platformer/src/Actors/Enemy.gd @@ -15,11 +15,13 @@ onready var floor_detector_right = $FloorDetectorRight onready var sprite = $Sprite onready var animation_player = $AnimationPlayer + # This function is called when the scene enters the scene tree. # We can initialize variables here. func _ready(): _velocity.x = speed.x + # Physics process is a built-in loop in Godot. # If you define _physics_process on a node, Godot will call it every frame. diff --git a/2d/platformer/src/Actors/Enemy.tscn b/2d/platformer/src/Actors/Enemy.tscn index f8606282..6d229850 100644 --- a/2d/platformer/src/Actors/Enemy.tscn +++ b/2d/platformer/src/Actors/Enemy.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=13 format=2] +[gd_scene load_steps=14 format=2] [ext_resource path="res://assets/art/player/bullet/bullet.png" type="Texture" id=1] [ext_resource path="res://assets/audio/sfx/explode.wav" type="AudioStream" id=2] @@ -8,6 +8,21 @@ [sub_resource type="CanvasItemMaterial" id=1] +[sub_resource type="Animation" id=8] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Explosion:scale_amount") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 4.0 ] +} + [sub_resource type="Animation" id=2] resource_name = "destroy" length = 1.5 @@ -60,48 +75,36 @@ tracks/3/keys = { "values": [ false, true ] } tracks/4/type = "value" -tracks/4/path = NodePath("Explosion:process_material:scale") +tracks/4/path = NodePath("Hit:playing") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { -"times": PoolRealArray( 0.6, 1 ), -"transitions": PoolRealArray( 1, 1 ), -"update": 0, -"values": [ 1.0, 4.0 ] -} -tracks/5/type = "value" -tracks/5/path = NodePath("Hit:playing") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/keys = { "times": PoolRealArray( 0.00999999 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ true ] } -tracks/6/type = "value" -tracks/6/path = NodePath("Explode:playing") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/keys = { +tracks/5/type = "value" +tracks/5/path = NodePath("Explode:playing") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { "times": PoolRealArray( 0.8 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ true ] } -tracks/7/type = "method" -tracks/7/path = NodePath(".") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/keys = { +tracks/6/type = "method" +tracks/6/path = NodePath(".") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { "times": PoolRealArray( 1.5 ), "transitions": PoolRealArray( 1 ), "values": [ { @@ -109,29 +112,41 @@ tracks/7/keys = { "method": "queue_free" } ] } -tracks/8/type = "value" -tracks/8/path = NodePath(".:collision_layer") -tracks/8/interp = 1 -tracks/8/loop_wrap = true -tracks/8/imported = false -tracks/8/enabled = true -tracks/8/keys = { +tracks/7/type = "value" +tracks/7/path = NodePath(".:collision_layer") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ 0 ] } +tracks/8/type = "value" +tracks/8/path = NodePath("Sprite:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 2.2974, 0.183011, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, -32 ), Vector2( 0, 0 ) ] +} tracks/9/type = "value" -tracks/9/path = NodePath("Sprite:position") +tracks/9/path = NodePath("Explosion:scale_amount") tracks/9/interp = 1 tracks/9/loop_wrap = true tracks/9/imported = false tracks/9/enabled = true tracks/9/keys = { -"times": PoolRealArray( 0, 0.2, 0.4 ), -"transitions": PoolRealArray( 2.2974, 0.183011, 1 ), +"times": PoolRealArray( 0.6, 1 ), +"transitions": PoolRealArray( 1, 1 ), "update": 0, -"values": [ Vector2( 0, 0 ), Vector2( 0, -32 ), Vector2( 0, 0 ) ] +"values": [ 1.0, 4.0 ] } [sub_resource type="Animation" id=3] @@ -211,6 +226,7 @@ hframes = 8 frame = 7 [node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 8 ) anims/destroy = SubResource( 2 ) anims/idle = SubResource( 3 ) anims/walk = SubResource( 4 ) @@ -237,6 +253,7 @@ gravity = Vector2( 0, 250 ) initial_velocity = 120.0 initial_velocity_random = 0.5 angle_random = 1.0 +scale_amount = 4.0 scale_amount_random = 1.0 color_ramp = SubResource( 7 ) hue_variation = 0.05 diff --git a/2d/platformer/src/Level/Level.gd b/2d/platformer/src/Level/Level.gd index f605e0ed..a30fd92a 100644 --- a/2d/platformer/src/Level/Level.gd +++ b/2d/platformer/src/Level/Level.gd @@ -1,10 +1,12 @@ extends Node2D + const LIMIT_LEFT = -315 const LIMIT_TOP = -250 const LIMIT_RIGHT = 955 const LIMIT_BOTTOM = 690 + func _ready(): for child in get_children(): if child is Player: diff --git a/2d/platformer/src/Level/Music.gd b/2d/platformer/src/Level/Music.gd index 27de9e3e..23f4b811 100644 --- a/2d/platformer/src/Level/Music.gd +++ b/2d/platformer/src/Level/Music.gd @@ -1,9 +1,11 @@ extends AudioStreamPlayer + const DOUBLE_VOLUME_DB = 6 # Do not change. Represents doubling of sound pressure. export(int) var base_volume_db = -14 + func _ready(): # To avoid AudioStreamPlayer2D sounds playing on top of each other and # being very loud, let's decrease the volume for splitscreen mode, but diff --git a/2d/platformer/src/Objects/Coin.gd b/2d/platformer/src/Objects/Coin.gd index e6cef82b..44cc64db 100644 --- a/2d/platformer/src/Objects/Coin.gd +++ b/2d/platformer/src/Objects/Coin.gd @@ -2,6 +2,7 @@ class_name Coin extends Area2D # Collectible that disappears when the player touches it. + onready var animation_player = $AnimationPlayer # The Coins only detects collisions with the Player thanks to its collision mask. diff --git a/2d/platformer/src/UserInterface/CoinsCounter.gd b/2d/platformer/src/UserInterface/CoinsCounter.gd index cf3f76ab..374228cc 100644 --- a/2d/platformer/src/UserInterface/CoinsCounter.gd +++ b/2d/platformer/src/UserInterface/CoinsCounter.gd @@ -1,5 +1,6 @@ extends Panel + var coins_collected = 0 onready var coins_label = $Label diff --git a/2d/platformer/src/UserInterface/CoinsCounter.tscn b/2d/platformer/src/UserInterface/CoinsCounter.tscn index bcad874b..ce2fbcb0 100644 --- a/2d/platformer/src/UserInterface/CoinsCounter.tscn +++ b/2d/platformer/src/UserInterface/CoinsCounter.tscn @@ -40,9 +40,6 @@ rect_min_size = Vector2( 100, 45 ) theme = ExtResource( 1 ) custom_styles/panel = SubResource( 1 ) script = ExtResource( 3 ) -__meta__ = { -"_edit_use_anchors_": false -} [node name="Label" type="Label" parent="."] anchor_right = 1.0 diff --git a/2d/pong/logic/ball.gd b/2d/pong/logic/ball.gd index f087e239..ff20588d 100644 --- a/2d/pong/logic/ball.gd +++ b/2d/pong/logic/ball.gd @@ -1,5 +1,6 @@ extends Area2D + const DEFAULT_SPEED = 100 var _speed = DEFAULT_SPEED @@ -7,6 +8,7 @@ var direction = Vector2.LEFT onready var _initial_pos = position + func _process(delta): _speed += delta * 2 position += _speed * delta * direction diff --git a/2d/pong/logic/ceiling_floor.gd b/2d/pong/logic/ceiling_floor.gd index 67a06991..24c84fba 100644 --- a/2d/pong/logic/ceiling_floor.gd +++ b/2d/pong/logic/ceiling_floor.gd @@ -1,7 +1,9 @@ extends Area2D + export var _bounce_direction = 1 + func _on_area_entered(area): if area.name == "Ball": area.direction = (area.direction + Vector2(0, _bounce_direction)).normalized() diff --git a/2d/pong/logic/paddle.gd b/2d/pong/logic/paddle.gd index 14178826..1f56926a 100644 --- a/2d/pong/logic/paddle.gd +++ b/2d/pong/logic/paddle.gd @@ -1,5 +1,6 @@ extends Area2D + const MOVE_SPEED = 100 var _ball_dir @@ -8,6 +9,7 @@ var _down onready var _screen_size_y = get_viewport_rect().size.y + func _ready(): var n = String(name).to_lower() _up = n + "_move_up" diff --git a/2d/pong/logic/wall.gd b/2d/pong/logic/wall.gd index 687a1a85..a0804c8c 100644 --- a/2d/pong/logic/wall.gd +++ b/2d/pong/logic/wall.gd @@ -1,5 +1,6 @@ extends Area2D + func _on_wall_area_entered(area): if area.name == "Ball": #oops, ball went out of game place, reset diff --git a/2d/role_playing_game/Game.gd b/2d/role_playing_game/Game.gd index 3be5fc51..0bda6ff5 100644 --- a/2d/role_playing_game/Game.gd +++ b/2d/role_playing_game/Game.gd @@ -1,10 +1,12 @@ extends Node + +const PLAYER_WIN = "res://dialogue/dialogue_data/player_won.json" +const PLAYER_LOSE = "res://dialogue/dialogue_data/player_lose.json" + export(NodePath) var combat_screen export(NodePath) var exploration_screen -const PLAYER_WIN = "res://dialogue/dialogue_data/player_won.json" -const PLAYER_LOSE = "res://dialogue/dialogue_data/player_lose.json" func _ready(): exploration_screen = get_node(exploration_screen) diff --git a/2d/role_playing_game/combat/Combat.gd b/2d/role_playing_game/combat/Combat.gd index b1666db3..6cb9c7d2 100644 --- a/2d/role_playing_game/combat/Combat.gd +++ b/2d/role_playing_game/combat/Combat.gd @@ -1,7 +1,9 @@ extends Node + signal combat_finished(winner, loser) + func initialize(combat_combatants): for combatant in combat_combatants: combatant = combatant.instance() diff --git a/2d/role_playing_game/combat/TurnQueue.gd b/2d/role_playing_game/combat/TurnQueue.gd index 0ae57a51..2ff1e355 100644 --- a/2d/role_playing_game/combat/TurnQueue.gd +++ b/2d/role_playing_game/combat/TurnQueue.gd @@ -1,10 +1,12 @@ extends Node + +signal active_combatant_changed(active_combatant) + export(NodePath) var combatants_list var queue = [] setget set_queue var active_combatant = null setget _set_active_combatant -signal active_combatant_changed(active_combatant) func _ready(): combatants_list = get_node(combatants_list) diff --git a/2d/role_playing_game/combat/combatants/Combatant.gd b/2d/role_playing_game/combat/combatants/Combatant.gd index f08ce7a3..836bc7f0 100644 --- a/2d/role_playing_game/combat/combatants/Combatant.gd +++ b/2d/role_playing_game/combat/combatants/Combatant.gd @@ -1,12 +1,16 @@ class_name Combatant extends Node -export(int) var damage = 1 -export(int) var defense = 1 -var active = false setget set_active signal turn_finished +export(int) var damage = 1 +export(int) var defense = 1 + +var active = false setget set_active + + + func set_active(value): active = value set_process(value) diff --git a/2d/role_playing_game/combat/combatants/Health.gd b/2d/role_playing_game/combat/combatants/Health.gd index 36e4c335..466b1715 100644 --- a/2d/role_playing_game/combat/combatants/Health.gd +++ b/2d/role_playing_game/combat/combatants/Health.gd @@ -1,5 +1,6 @@ extends Node + signal dead signal health_changed(life) @@ -8,6 +9,7 @@ export var max_life = 10 export var base_armor = 0 var armor = 0 + func _ready(): armor = base_armor diff --git a/2d/role_playing_game/combat/combatants/Opponent.gd b/2d/role_playing_game/combat/combatants/Opponent.gd index ccae355e..d7c1b4ac 100644 --- a/2d/role_playing_game/combat/combatants/Opponent.gd +++ b/2d/role_playing_game/combat/combatants/Opponent.gd @@ -1,5 +1,6 @@ extends Combatant + func set_active(value): .set_active(value) if not active: diff --git a/2d/role_playing_game/combat/interface/Info.tscn b/2d/role_playing_game/combat/interface/Info.tscn index 2a47a6bf..1e7d5721 100644 --- a/2d/role_playing_game/combat/interface/Info.tscn +++ b/2d/role_playing_game/combat/interface/Info.tscn @@ -7,9 +7,6 @@ margin_right = 409.0 margin_bottom = 239.0 size_flags_horizontal = 3 size_flags_vertical = 3 -__meta__ = { -"_edit_use_anchors_": false -} [node name="VBoxContainer" type="VBoxContainer" parent="."] margin_left = 7.0 diff --git a/2d/role_playing_game/combat/interface/UI.gd b/2d/role_playing_game/combat/interface/UI.gd index 8644bf23..e0420ac3 100644 --- a/2d/role_playing_game/combat/interface/UI.gd +++ b/2d/role_playing_game/combat/interface/UI.gd @@ -1,8 +1,10 @@ extends Control + export(NodePath) var combatants_node export(PackedScene) var info_scene + func _ready(): combatants_node = get_node(combatants_node) diff --git a/2d/role_playing_game/dialogue/dialogue_player/DialoguePlayer.gd b/2d/role_playing_game/dialogue/dialogue_player/DialoguePlayer.gd index 74b1f8c6..cbfb5fe9 100644 --- a/2d/role_playing_game/dialogue/dialogue_player/DialoguePlayer.gd +++ b/2d/role_playing_game/dialogue/dialogue_player/DialoguePlayer.gd @@ -1,13 +1,15 @@ extends Node + +signal dialogue_started +signal dialogue_finished + export(String, FILE, "*.json") var dialogue_file var dialogue_keys = [] var dialogue_name = "" var current = 0 var dialogue_text = "" -signal dialogue_started -signal dialogue_finished func start_dialogue(): emit_signal("dialogue_started") diff --git a/2d/role_playing_game/dialogue/interface/Interface.gd b/2d/role_playing_game/dialogue/interface/Interface.gd index 716bf45e..15a7b2a1 100644 --- a/2d/role_playing_game/dialogue/interface/Interface.gd +++ b/2d/role_playing_game/dialogue/interface/Interface.gd @@ -1,7 +1,9 @@ extends Control + var dialogue_node = null + func _ready(): hide() diff --git a/2d/role_playing_game/dialogue/interface/Interface.tscn b/2d/role_playing_game/dialogue/interface/Interface.tscn index ad301585..ae1a83c6 100644 --- a/2d/role_playing_game/dialogue/interface/Interface.tscn +++ b/2d/role_playing_game/dialogue/interface/Interface.tscn @@ -9,9 +9,6 @@ margin_right = 1280.0 margin_bottom = 720.0 theme = ExtResource( 1 ) script = ExtResource( 2 ) -__meta__ = { -"_edit_use_anchors_": false -} [node name="Name" type="RichTextLabel" parent="."] margin_left = 40.0 diff --git a/2d/role_playing_game/grid_movement/grid/Grid.gd b/2d/role_playing_game/grid_movement/grid/Grid.gd index 17110375..9d24453c 100644 --- a/2d/role_playing_game/grid_movement/grid/Grid.gd +++ b/2d/role_playing_game/grid_movement/grid/Grid.gd @@ -1,8 +1,10 @@ extends TileMap + enum CellType { ACTOR, OBSTACLE, OBJECT } export(NodePath) var dialogue_ui + func _ready(): for child in get_children(): set_cellv(world_to_map(child.position), child.type) diff --git a/2d/role_playing_game/grid_movement/pawns/Actor.gd b/2d/role_playing_game/grid_movement/pawns/Actor.gd index 7d457352..deb0b13b 100644 --- a/2d/role_playing_game/grid_movement/pawns/Actor.gd +++ b/2d/role_playing_game/grid_movement/pawns/Actor.gd @@ -1,7 +1,9 @@ extends Pawn -onready var Grid = get_parent() + var lost = false +onready var Grid = get_parent() + func _ready(): update_look_direction(Vector2.RIGHT) diff --git a/2d/role_playing_game/grid_movement/pawns/Opponent.gd b/2d/role_playing_game/grid_movement/pawns/Opponent.gd index 4e682dd0..d5d64032 100644 --- a/2d/role_playing_game/grid_movement/pawns/Opponent.gd +++ b/2d/role_playing_game/grid_movement/pawns/Opponent.gd @@ -1,9 +1,11 @@ extends Pawn + #warning-ignore:unused_class_variable export(PackedScene) var combat_actor #warning-ignore:unused_class_variable var lost = false + func _ready(): set_process(false) diff --git a/2d/role_playing_game/grid_movement/pawns/Pawn.gd b/2d/role_playing_game/grid_movement/pawns/Pawn.gd index 226005f7..30ecc80b 100644 --- a/2d/role_playing_game/grid_movement/pawns/Pawn.gd +++ b/2d/role_playing_game/grid_movement/pawns/Pawn.gd @@ -1,12 +1,14 @@ class_name Pawn extends Node2D + enum CellType { ACTOR, OBSTACLE, OBJECT } #warning-ignore:unused_class_variable export(CellType) var type = CellType.ACTOR var active = true setget set_active + func set_active(value): active = value set_process(value) diff --git a/2d/role_playing_game/grid_movement/pawns/Walker.gd b/2d/role_playing_game/grid_movement/pawns/Walker.gd index 00134781..cb6b3096 100644 --- a/2d/role_playing_game/grid_movement/pawns/Walker.gd +++ b/2d/role_playing_game/grid_movement/pawns/Walker.gd @@ -1,10 +1,12 @@ extends Pawn -onready var parent = get_parent() + #warning-ignore:unused_class_variable export(PackedScene) var combat_actor #warning-ignore:unused_class_variable var lost = false +onready var parent = get_parent() + func _ready(): update_look_direction(Vector2.RIGHT) diff --git a/2d/screen_space_shaders/screen_shaders.gd b/2d/screen_space_shaders/screen_shaders.gd index 0359b060..e0f3acf7 100644 --- a/2d/screen_space_shaders/screen_shaders.gd +++ b/2d/screen_space_shaders/screen_shaders.gd @@ -1,5 +1,6 @@ extends Control + onready var effect = $Effect onready var effects = $Effects onready var picture = $Picture diff --git a/2d/skeleton/level/level.gd b/2d/skeleton/level/level.gd index 5fdfeb75..00367d1e 100644 --- a/2d/skeleton/level/level.gd +++ b/2d/skeleton/level/level.gd @@ -1,10 +1,12 @@ extends Node2D + const LIMIT_LEFT = -315 const LIMIT_TOP = -250 const LIMIT_RIGHT = 955 const LIMIT_BOTTOM = 690 + func _ready(): for child in get_children(): if child is Player: diff --git a/2d/skeleton/player/player.gd b/2d/skeleton/player/player.gd index 744a81c1..bfa786a1 100644 --- a/2d/skeleton/player/player.gd +++ b/2d/skeleton/player/player.gd @@ -1,6 +1,7 @@ class_name Player extends KinematicBody2D + # Keep this in sync with the AnimationTree's state names and numbers. enum States { IDLE = 0, diff --git a/2d/skeleton/player/player.tscn b/2d/skeleton/player/player.tscn index 2e12791a..fb0c50d2 100644 --- a/2d/skeleton/player/player.tscn +++ b/2d/skeleton/player/player.tscn @@ -1747,7 +1747,7 @@ nodes/walk_animation/node = SubResource( 21 ) nodes/walk_animation/position = Vector2( 0, 140 ) nodes/walk_timescale/node = SubResource( 22 ) nodes/walk_timescale/position = Vector2( 200, 120 ) -node_connections = [ "state", 0, "idle_animation", "state", 1, "walk_timescale", "state", 2, "run_timescale", "state", 3, "fly_animation", "state", 4, "fall_animation", "output", 0, "land_hard", "land", 0, "jump", "land", 1, "land_animation", "jump", 0, "state", "jump", 1, "jump_animation", "land_hard", 0, "land", "land_hard", 1, "land_hard_animation", "run_timescale", 0, "run_animation", "walk_timescale", 0, "walk_animation" ] +node_connections = [ "jump", 0, "state", "jump", 1, "jump_animation", "land", 0, "jump", "land", 1, "land_animation", "land_hard", 0, "land", "land_hard", 1, "land_hard_animation", "run_timescale", 0, "run_animation", "walk_timescale", 0, "walk_animation", "state", 0, "idle_animation", "state", 1, "walk_timescale", "state", 2, "run_timescale", "state", 3, "fly_animation", "state", 4, "fall_animation", "output", 0, "land_hard" ] [sub_resource type="RectangleShape2D" id=24] extents = Vector2( 11, 16.4358 ) @@ -1878,7 +1878,7 @@ skeleton = NodePath("../../Skeleton2D") polygon = PoolVector2Array( 237.601, 31.7394, 217.703, 30.1435, 183.732, 47.8469, 274.303, 49.2926, 271.111, 94.5053, 183.877, 89.7181, 185.505, 166.856, 248.688, 172.323, 242.541, 187.015, 189.46, 182.958, 190.308, 202.449, 180.383, 225.837, 201.435, 321.531, 242.841, 196.76, 256.334, 215.801, 276.077, 283.732, 295.215, 310.526, 272.249, 351.675, 216.746, 356.459 ) uv = PoolVector2Array( 235.407, 30.1435, 217.703, 30.1435, 183.732, 47.8469, 276.555, 49.2823, 274.641, 85.6459, 181.34, 83.7321, 184.689, 180.383, 253.11, 178.469, 243.541, 188.995, 188.038, 187.081, 188.995, 200, 180.383, 225.837, 201.435, 321.531, 244.976, 199.043, 259.809, 215.789, 276.077, 283.732, 295.215, 310.526, 272.249, 351.675, 216.746, 356.459 ) polygons = [ PoolIntArray( 0, 1, 2, 5, 4, 3 ), PoolIntArray( 4, 7, 6, 5 ), PoolIntArray( 8, 7, 6, 9 ), PoolIntArray( 13, 8, 9, 10 ), PoolIntArray( 13, 14, 11, 10 ), PoolIntArray( 14, 15, 12, 11 ), PoolIntArray( 15, 16, 17, 18, 12 ) ] -bones = [ NodePath("Hip"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/RightArm"), PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 0.5, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/RightArm/RightForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0.5, 1, 1, 0.5, 1, 1, 0.5, 0, 0, 0 ), NodePath("Hip/Chest/RightArm/RightForearm/RightHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0, 0.5, 1, 1, 1 ), NodePath("Hip/Chest/Head"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head/Chin"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/LeftArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/LeftArm/LeftForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/LeftArm/LeftForearm/LeftHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg/LeftFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightLeg/RightLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightLeg/RightLowerLeg/RightFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) ] +bones = [ "Hip", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest/RightArm", PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 0.5, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest/RightArm/RightForearm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0.5, 1, 1, 0.5, 1, 1, 0.5, 0, 0, 0 ), "Hip/Chest/RightArm/RightForearm/RightHand", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0, 0.5, 1, 1, 1 ), "Hip/Chest/Head", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest/Head/Chin", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest/LeftArm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest/LeftArm/LeftForearm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest/LeftArm/LeftForearm/LeftHand", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftLeg/LeftLowerLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftLeg/LeftLowerLeg/LeftFoot", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightLeg/RightLowerLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightLeg/RightLowerLeg/RightFoot", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) ] internal_vertex_count = 19 [node name="RightLeg" type="Polygon2D" parent="Sprite/Polygons"] @@ -1888,7 +1888,7 @@ skeleton = NodePath("../../Skeleton2D") polygon = PoolVector2Array( 348.266, 400, 289.099, 380.833, 280.766, 435, 276.599, 470.833, 250.766, 515, 249.933, 604.167, 246.599, 690.833, 407.433, 695.833, 409.099, 659.167, 384.099, 606.667, 349.099, 599.167, 330.766, 550, 342.433, 476.667, 337.433, 442.5 ) uv = PoolVector2Array( 348.266, 400, 289.099, 380.833, 280.766, 435, 276.599, 470.833, 250.766, 515, 249.933, 604.167, 246.599, 690.833, 407.433, 695.833, 409.099, 659.167, 384.099, 606.667, 349.099, 599.167, 330.766, 550, 342.433, 476.667, 337.433, 442.5 ) polygons = [ PoolIntArray( 0, 1, 2, 13 ), PoolIntArray( 13, 12, 3, 2 ), PoolIntArray( 12, 11, 4, 3 ), PoolIntArray( 11, 10, 5, 4 ), PoolIntArray( 10, 9, 8, 7, 6, 5 ) ] -bones = [ NodePath("Hip"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head/Chin"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm/LeftForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm/LeftForearm/LeftHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm/RightForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm/RightForearm/RightHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg/LeftFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightLeg"), PoolRealArray( 1, 1, 1, 0.53, 0, 0, 0, 0, 0, 0, 0, 0, 0.53, 1 ), NodePath("Hip/RightLeg/RightLowerLeg"), PoolRealArray( 0, 0, 0, 0.53, 1, 1, 0, 0, 0, 0, 0, 1, 0.53, 0 ), NodePath("Hip/RightLeg/RightLowerLeg/RightFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.53, 0, 0, 0 ) ] +bones = [ "Hip", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest/Head", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest/Head/Chin", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftArm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftArm/LeftForearm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftArm/LeftForearm/LeftHand", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightArm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightArm/RightForearm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightArm/RightForearm/RightHand", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftLeg/LeftLowerLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftLeg/LeftLowerLeg/LeftFoot", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightLeg", PoolRealArray( 1, 1, 1, 0.53, 0, 0, 0, 0, 0, 0, 0, 0, 0.53, 1 ), "Hip/RightLeg/RightLowerLeg", PoolRealArray( 0, 0, 0, 0.53, 1, 1, 0, 0, 0, 0, 0, 1, 0.53, 0 ), "Hip/RightLeg/RightLowerLeg/RightFoot", PoolRealArray( 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.53, 0, 0, 0 ) ] internal_vertex_count = 14 [node name="Body" type="Polygon2D" parent="Sprite/Polygons"] @@ -1898,7 +1898,7 @@ skeleton = NodePath("../../Skeleton2D") polygon = PoolVector2Array( 473.936, 29.2553, 430.851, 19.6809, 384.043, 78.7234, 344.681, 107.447, 348.404, 192.553, 375.532, 240.426, 375, 255.319, 351.064, 269.681, 347.34, 294.681, 371.809, 334.574, 468.085, 347.872, 490.957, 296.809, 489.894, 276.596, 472.368, 259.211, 473.936, 245.745, 505.319, 222.34, 522.872, 179.787, 507.447, 121.809, 484.043, 84.0426, 398.404, 38.2979, 419.681, 344.149 ) uv = PoolVector2Array( 473.936, 29.2553, 430.851, 19.6809, 384.043, 78.7234, 344.681, 107.447, 348.404, 192.553, 375.532, 240.426, 375, 255.319, 351.064, 269.681, 347.34, 294.681, 371.809, 334.574, 468.085, 347.872, 490.957, 296.809, 489.894, 276.596, 472.368, 259.211, 473.936, 245.745, 505.319, 222.34, 522.872, 179.787, 507.447, 121.809, 484.043, 84.0426, 398.404, 38.2979, 419.681, 344.149 ) polygons = [ PoolIntArray( 2, 19, 1, 0, 18 ), PoolIntArray( 2, 3, 17, 18 ), PoolIntArray( 3, 4, 15, 16, 17 ), PoolIntArray( 4, 5, 14, 15 ), PoolIntArray( 5, 6, 13, 14 ), PoolIntArray( 6, 7, 12, 13 ), PoolIntArray( 7, 8, 11, 12 ), PoolIntArray( 8, 9, 20, 10, 11 ) ] -bones = [ NodePath("Hip"), PoolRealArray( 0, 0, 0, 0, 0, 0.51, 0.51, 1, 1, 1, 1, 1, 1, 0.51, 0.51, 0, 0, 0, 0, 0, 1 ), NodePath("Hip/Chest"), PoolRealArray( 1, 1, 1, 1, 1, 0.51, 0.51, 0, 0, 0, 0, 0, 0, 0.51, 0.51, 1, 1, 1, 1, 1, 0 ), NodePath("Hip/Chest/Head"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head/Chin"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm/LeftForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm/LeftForearm/LeftHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm/RightForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm/RightForearm/RightHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg/LeftFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg/RightLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg/RightLowerLeg/RightFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) ] +bones = [ "Hip", PoolRealArray( 0, 0, 0, 0, 0, 0.51, 0.51, 1, 1, 1, 1, 1, 1, 0.51, 0.51, 0, 0, 0, 0, 0, 1 ), "Hip/Chest", PoolRealArray( 1, 1, 1, 1, 1, 0.51, 0.51, 0, 0, 0, 0, 0, 0, 0.51, 0.51, 1, 1, 1, 1, 1, 0 ), "Hip/Chest/Head", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest/Head/Chin", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftArm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftArm/LeftForearm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftArm/LeftForearm/LeftHand", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightArm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightArm/RightForearm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightArm/RightForearm/RightHand", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftLeg/LeftLowerLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftLeg/LeftLowerLeg/LeftFoot", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "RightLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "RightLeg/RightLowerLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "RightLeg/RightLowerLeg/RightFoot", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) ] internal_vertex_count = 21 [node name="LeftLeg" type="Polygon2D" parent="Sprite/Polygons"] @@ -1908,7 +1908,7 @@ skeleton = NodePath("../../Skeleton2D") polygon = PoolVector2Array( 65.7658, 390, 92.4325, 386.667, 119.099, 398.333, 119.099, 426.667, 120.766, 477.5, 107.433, 551.667, 129.099, 592.5, 163.266, 604.167, 188.266, 675, 173.266, 692.5, 20.7658, 686.667, 25.7658, 648.333, 29.9325, 608.333, 24.0992, 530.833, 54.9325, 472.5 ) uv = PoolVector2Array( 65.7658, 390, 92.4325, 386.667, 119.099, 398.333, 119.099, 426.667, 120.766, 477.5, 107.433, 551.667, 129.099, 592.5, 163.266, 604.167, 188.266, 675, 173.266, 692.5, 20.7658, 686.667, 25.7658, 648.333, 29.9325, 608.333, 24.0992, 530.833, 54.9325, 472.5 ) polygons = [ PoolIntArray( 0, 1, 2, 3, 4, 14 ), PoolIntArray( 4, 5, 13, 14 ), PoolIntArray( 5, 6, 12, 13 ), PoolIntArray( 6, 7, 8, 9, 10, 11, 12 ) ] -bones = [ NodePath("Hip"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head/Chin"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm/LeftForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm/LeftForearm/LeftHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm/RightForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm/RightForearm/RightHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg"), PoolRealArray( 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0.03, 1, 0, 0, 0, 0, 0, 0, 0.53, 0.5, 0.03 ), NodePath("Hip/LeftLeg/LeftLowerLeg/LeftFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0.53, 1, 1, 1, 1, 1, 0, 0, 0 ), NodePath("RightLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg/RightLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg/RightLowerLeg/RightFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) ] +bones = [ "Hip", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest/Head", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest/Head/Chin", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftArm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftArm/LeftForearm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftArm/LeftForearm/LeftHand", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightArm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightArm/RightForearm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightArm/RightForearm/RightHand", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftLeg", PoolRealArray( 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftLeg/LeftLowerLeg", PoolRealArray( 0, 0, 0, 0, 0.03, 1, 0, 0, 0, 0, 0, 0, 0.53, 0.5, 0.03 ), "Hip/LeftLeg/LeftLowerLeg/LeftFoot", PoolRealArray( 0, 0, 0, 0, 0, 0, 0.53, 1, 1, 1, 1, 1, 0, 0, 0 ), "RightLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "RightLeg/RightLowerLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "RightLeg/RightLowerLeg/RightFoot", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) ] internal_vertex_count = 15 [node name="Head" type="Polygon2D" parent="Sprite/Polygons"] @@ -1918,7 +1918,7 @@ skeleton = NodePath("../../Skeleton2D") polygon = PoolVector2Array( 616.26, 246.341, 555.285, 285.366, 508.13, 330.894, 482.114, 380.488, 482.114, 448.781, 492.683, 498.374, 552.846, 534.146, 656.911, 538.211, 773.984, 511.382, 807.317, 506.504, 813.821, 342.276, 789.431, 297.561, 757.724, 269.106, 669.106, 249.594 ) uv = PoolVector2Array( 616.26, 246.341, 555.285, 285.366, 508.13, 330.894, 482.114, 380.488, 482.114, 448.781, 492.683, 498.374, 552.846, 534.146, 656.911, 538.211, 773.984, 511.382, 807.317, 506.504, 813.821, 342.276, 789.431, 297.561, 757.724, 269.106, 669.106, 249.594 ) polygons = [ PoolIntArray( 10, 11, 12, 13, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ) ] -bones = [ NodePath("Hip"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head"), PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), NodePath("Hip/Chest/Head/Chin"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm/LeftForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm/LeftForearm/LeftHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm/RightForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm/RightForearm/RightHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg/LeftFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg/RightLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg/RightLowerLeg/RightFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) ] +bones = [ "Hip", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest/Head", PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), "Hip/Chest/Head/Chin", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftArm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftArm/LeftForearm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftArm/LeftForearm/LeftHand", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightArm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightArm/RightForearm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightArm/RightForearm/RightHand", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftLeg/LeftLowerLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftLeg/LeftLowerLeg/LeftFoot", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "RightLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "RightLeg/RightLowerLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "RightLeg/RightLowerLeg/RightFoot", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) ] internal_vertex_count = 14 [node name="Chin" type="Polygon2D" parent="Sprite/Polygons"] @@ -1929,7 +1929,7 @@ skeleton = NodePath("../../Skeleton2D") polygon = PoolVector2Array( 486, 576, 812, 562, 823, 605, 790, 666, 722, 690, 547, 686, 493, 646 ) uv = PoolVector2Array( 486, 576, 812, 562, 823, 605, 790, 666, 722, 690, 547, 686, 493, 646 ) polygons = [ PoolIntArray( 0, 1, 2, 3, 4, 5, 6 ) ] -bones = [ NodePath("Hip"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head/Chin"), PoolRealArray( 1, 1, 1, 1, 1, 1, 1 ), NodePath("Hip/LeftArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm/LeftForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm/LeftForearm/LeftHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm/RightForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm/RightForearm/RightHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg/LeftFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg/RightLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg/RightLowerLeg/RightFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ) ] +bones = [ "Hip", PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest", PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest/Head", PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest/Head/Chin", PoolRealArray( 1, 1, 1, 1, 1, 1, 1 ), "Hip/LeftArm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftArm/LeftForearm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftArm/LeftForearm/LeftHand", PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightArm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightArm/RightForearm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightArm/RightForearm/RightHand", PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftLeg/LeftLowerLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftLeg/LeftLowerLeg/LeftFoot", PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), "RightLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), "RightLeg/RightLowerLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), "RightLeg/RightLowerLeg/RightFoot", PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ) ] internal_vertex_count = 7 [node name="LeftArm" type="Polygon2D" parent="Sprite/Polygons"] @@ -1939,7 +1939,7 @@ skeleton = NodePath("../../Skeleton2D") polygon = PoolVector2Array( 89.9521, 16.268, 77.5119, 15.7895, 55.5023, 25.8373, 39.2344, 29.1866, 33.9712, 59.3302, 27.2727, 154.545, 29.1865, 180.861, 33.4928, 196.172, 20.5741, 240.67, 36.842, 321.531, 61.244, 359.809, 125.837, 353.11, 137.799, 309.569, 122.967, 287.56, 106.22, 202.871, 92.3444, 191.866, 91.866, 179.426, 127.273, 70.3349, 134.928, 48.3254, 119.617, 30.622 ) uv = PoolVector2Array( 89.9521, 16.268, 77.5119, 15.7895, 55.5023, 25.8373, 39.2344, 29.1866, 33.9712, 59.3302, 27.2727, 154.545, 29.1865, 180.861, 33.4928, 196.172, 20.5741, 240.67, 36.842, 321.531, 61.244, 359.809, 125.837, 353.11, 137.799, 309.569, 122.967, 287.56, 106.22, 202.871, 92.3444, 191.866, 91.866, 179.426, 127.273, 70.3349, 134.928, 48.3254, 119.617, 30.622 ) polygons = [ PoolIntArray( 3, 2, 1, 0, 19, 18, 17, 4 ), PoolIntArray( 4, 5, 16, 17 ), PoolIntArray( 16, 15, 7, 6 ), PoolIntArray( 16, 6, 5 ), PoolIntArray( 7, 8, 14, 15 ), PoolIntArray( 14, 13, 9, 8 ), PoolIntArray( 13, 12, 11, 10, 9 ) ] -bones = [ NodePath("Hip"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/RightArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/RightArm/RightForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/RightArm/RightForearm/RightHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head/Chin"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/LeftArm"), PoolRealArray( 1, 1, 1, 1, 1, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 1, 1, 1 ), NodePath("Hip/Chest/LeftArm/LeftForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 1, 1, 1, 0.5, 0, 0, 0, 0.5, 1, 1, 0.5, 0, 0, 0 ), NodePath("Hip/Chest/LeftArm/LeftForearm/LeftHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 1, 1, 1, 0.5, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg/LeftFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightLeg/RightLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightLeg/RightLowerLeg/RightFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) ] +bones = [ "Hip", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest/RightArm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest/RightArm/RightForearm", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest/RightArm/RightForearm/RightHand", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest/Head", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest/Head/Chin", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/Chest/LeftArm", PoolRealArray( 1, 1, 1, 1, 1, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 1, 1, 1 ), "Hip/Chest/LeftArm/LeftForearm", PoolRealArray( 0, 0, 0, 0, 0, 0, 1, 1, 1, 0.5, 0, 0, 0, 0.5, 1, 1, 0.5, 0, 0, 0 ), "Hip/Chest/LeftArm/LeftForearm/LeftHand", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 1, 1, 1, 0.5, 0, 0, 0, 0, 0, 0 ), "Hip/LeftLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftLeg/LeftLowerLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/LeftLeg/LeftLowerLeg/LeftFoot", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightLeg/RightLowerLeg", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "Hip/RightLeg/RightLowerLeg/RightFoot", PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) ] internal_vertex_count = 20 [node name="CollisionShape2D" type="CollisionShape2D" parent="."] diff --git a/2d/tween/main.gd b/2d/tween/main.gd index d3654ab4..ae7b9285 100644 --- a/2d/tween/main.gd +++ b/2d/tween/main.gd @@ -1,5 +1,6 @@ extends Control + const trans_list = ["Linear", "Sine", "Quint", "Quart", "Quad", "Expo", "Elastic", "Cubic", "Circ", "Bounce", "Back"] const eases_list = ["In", "Out", "InOut", "OutIn"] const modes_list = ["Move", "Color", "Scale", "Rotate", "Callback", "Follow", "Repeat", "Pause"] @@ -29,6 +30,7 @@ onready var follow_mode = modes_vbox.get_node(@"Follow") onready var repeat_mode = modes_vbox.get_node(@"Repeat") onready var paused_mode = modes_vbox.get_node(@"Pause") + func _ready(): for index in range(trans_list.size()): trans_vbox.get_node(trans_list[index]).connect("pressed", self, "on_trans_changed", [index]) diff --git a/2d/tween/main.tscn b/2d/tween/main.tscn index 7c03f5bb..97b5ff81 100644 --- a/2d/tween/main.tscn +++ b/2d/tween/main.tscn @@ -91,8 +91,8 @@ custom_constants/separation = 20 alignment = 1 [node name="Modes" type="VBoxContainer" parent="Controls"] -margin_left = 37.0 -margin_right = 110.0 +margin_left = 23.0 +margin_right = 96.0 margin_bottom = 383.0 rect_min_size = Vector2( 70, 0 ) size_flags_vertical = 0 @@ -178,8 +178,8 @@ toggle_mode = true text = "pause" [node name="Transitions" type="VBoxContainer" parent="Controls"] -margin_left = 130.0 -margin_right = 215.0 +margin_left = 116.0 +margin_right = 201.0 margin_bottom = 518.0 rect_min_size = Vector2( 70, 0 ) size_flags_vertical = 0 @@ -283,8 +283,8 @@ toggle_mode = true text = "back" [node name="Eases" type="VBoxContainer" parent="Controls"] -margin_left = 235.0 -margin_right = 305.0 +margin_left = 221.0 +margin_right = 291.0 margin_bottom = 203.0 rect_min_size = Vector2( 70, 0 ) size_flags_vertical = 0 @@ -334,7 +334,7 @@ toggle_mode = true text = "out_in" [node name="ColorFrom" type="VBoxContainer" parent="Controls"] -margin_left = 325.0 +margin_left = 311.0 margin_right = 646.0 margin_bottom = 570.0 rect_min_size = Vector2( 320, 570 ) @@ -349,7 +349,7 @@ text = "Color From:" [node name="ColorPicker" type="ColorPicker" parent="Controls/ColorFrom"] margin_top = 27.0 -margin_right = 321.0 +margin_right = 335.0 margin_bottom = 539.0 size_flags_horizontal = 2 size_flags_vertical = 2 @@ -359,7 +359,7 @@ __meta__ = { [node name="ColorTo" type="VBoxContainer" parent="Controls"] margin_left = 666.0 -margin_right = 987.0 +margin_right = 1001.0 margin_bottom = 570.0 rect_min_size = Vector2( 320, 570 ) rect_clip_content = true @@ -374,7 +374,7 @@ text = "Color To:" [node name="ColorPicker" type="ColorPicker" parent="Controls/ColorTo"] margin_top = 27.0 -margin_right = 321.0 +margin_right = 335.0 margin_bottom = 539.0 size_flags_horizontal = 2 size_flags_vertical = 2 diff --git a/3d/global_illumination/camera.gd b/3d/global_illumination/camera.gd index bbcb086c..0a0689b5 100644 --- a/3d/global_illumination/camera.gd +++ b/3d/global_illumination/camera.gd @@ -1,5 +1,6 @@ extends Camera + const MOUSE_SENSITIVITY = 0.002 const MOVE_SPEED = 1.5 diff --git a/3d/global_illumination/test.gd b/3d/global_illumination/test.gd index 8ec135ec..b3e62b84 100644 --- a/3d/global_illumination/test.gd +++ b/3d/global_illumination/test.gd @@ -1,5 +1,6 @@ extends Spatial + enum GIMode { NONE, BAKED_LIGHTMAP_ALL, @@ -8,6 +9,13 @@ enum GIMode { MAX, # Maximum value of the enum, used internally. } +enum ReflectionProbeMode { + NONE, + ONCE, + ALWAYS, + MAX, +} + # Keep this in sync with the GIMode enum (except for MAX). const GI_MODE_TEXTS = [ "Environment Lighting (Fastest)", @@ -16,13 +24,6 @@ const GI_MODE_TEXTS = [ "GIProbe (Slow)", ] -enum ReflectionProbeMode { - NONE, - ONCE, - ALWAYS, - MAX, -} - # Keep this in sync with the ReflectionProbeMode enum (except for MAX). const REFLECTION_PROBE_MODE_TEXTS = [ "Disabled - Using environment, VoxelGI or SDFGI reflections (Fastest)", @@ -37,6 +38,7 @@ var use_ssao = false onready var environment = preload("res://default_env.tres") onready var gi_mode_label = $GIMode onready var reflection_probe_mode_label = $ReflectionProbeMode +onready var ssao_label = $SSAO onready var reflection_probe = $Camera/ReflectiveSphere/ReflectionProbe @@ -141,6 +143,6 @@ func set_reflection_probe_mode(p_reflection_probe_mode): func set_use_ssao(p_use_ssao): use_ssao = p_use_ssao - reflection_probe_mode_label.text = "Screen-space ambient occlusion: %s" % "Enabled (Slow)" if use_ssao else "Disabled (Fastest)" + ssao_label.text = "Screen-space ambient occlusion: %s" % "Enabled (Slow)" if use_ssao else "Disabled (Fastest)" environment.ssao_enabled = use_ssao diff --git a/3d/global_illumination/test.tscn b/3d/global_illumination/test.tscn index 99cbe6d0..02483868 100644 --- a/3d/global_illumination/test.tscn +++ b/3d/global_illumination/test.tscn @@ -167,11 +167,13 @@ text = "Screen-space ambient occlusion: Disabled (Fastest)" anchor_top = 1.0 anchor_bottom = 1.0 margin_left = 16.0 -margin_top = -50.0 +margin_top = -89.0 margin_right = 496.0 -margin_bottom = -16.0 +margin_bottom = -15.0 custom_constants/line_spacing = 6 -text = "Press Space to cycle between GI modes, R to cycle reflection probe modes -Press Esc or F10 to toggle mouse capture" +text = "Space: Cycle between GI modes +R: Cycle reflection probe modes +F: Cycle between screen-space lighting effect modes +Escape or F10: Toggle mouse capture" [editable path="GlowingBox"] diff --git a/3d/ik/addons/sade/ik_look_at.gd b/3d/ik/addons/sade/ik_look_at.gd index d991e730..86244a18 100644 --- a/3d/ik/addons/sade/ik_look_at.gd +++ b/3d/ik/addons/sade/ik_look_at.gd @@ -1,6 +1,7 @@ tool extends Spatial + export(NodePath) var skeleton_path setget _set_skeleton_path export(String) var bone_name = "" export(int, "_process", "_physics_process", "_notification", "none") var update_mode = 0 setget _set_update diff --git a/3d/ik/addons/sade/plugin_main.gd b/3d/ik/addons/sade/plugin_main.gd index ec888a58..bc1068bb 100644 --- a/3d/ik/addons/sade/plugin_main.gd +++ b/3d/ik/addons/sade/plugin_main.gd @@ -1,6 +1,7 @@ tool extends EditorPlugin + func _enter_tree(): # Plugin Initialization here! add_custom_type("IK_LookAt", "Spatial", preload("ik_look_at.gd"), preload("ik_look_at.png")) diff --git a/3d/ik/button_change_scene.gd b/3d/ik/button_change_scene.gd index 535c4e82..03c3a0d3 100644 --- a/3d/ik/button_change_scene.gd +++ b/3d/ik/button_change_scene.gd @@ -1,5 +1,6 @@ extends Button + export(String, FILE) var scene_to_change_to = null diff --git a/3d/ik/fabrik_ik.tscn b/3d/ik/fabrik_ik.tscn index f484a708..1504f148 100644 --- a/3d/ik/fabrik_ik.tscn +++ b/3d/ik/fabrik_ik.tscn @@ -60,6 +60,7 @@ __meta__ = { skeleton_path = NodePath("../../../GodotBattleBot/Armature/Skeleton") bone_name = "Head" additional_rotation = Vector3( 90, 0, 0 ) +additional_bone_length = 1 [node name="IK_FABRIK_Left_Arm" type="Spatial" parent="Camera/Targets"] script = ExtResource( 8 ) @@ -121,6 +122,7 @@ __meta__ = { skeleton_path = NodePath("../../../../../GodotBattleBot/Armature/Skeleton") bone_name = "Right_Hand" additional_rotation = Vector3( 0, 0, 90 ) +additional_bone_length = 1 [node name="MiddleJoint" type="Spatial" parent="Camera/Targets/IK_FABRIK_Right_Arm"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -6.34515, 0, -3.7843 ) diff --git a/3d/ik/fps/example_player.gd b/3d/ik/fps/example_player.gd index 2f64c885..bf684ebb 100644 --- a/3d/ik/fps/example_player.gd +++ b/3d/ik/fps/example_player.gd @@ -1,5 +1,6 @@ extends KinematicBody + # Walking variables. const norm_grav = -38.8 const MAX_SPEED = 22 diff --git a/3d/ik/fps/fps_example.tscn b/3d/ik/fps/fps_example.tscn index 30cf1996..d342b54f 100644 --- a/3d/ik/fps/fps_example.tscn +++ b/3d/ik/fps/fps_example.tscn @@ -477,6 +477,7 @@ skeleton_path = NodePath("../../../../GodotBattleBot/Armature/Skeleton") bone_name = "Chest" look_at_axis = 2 additional_rotation = Vector3( -10, 0, 0 ) +additional_bone_length = 1 [node name="Camera" type="Camera" parent="KinematicBody/CameraHolder/LeanPath/PathFollow/IK_LookAt_Chest"] transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0 ) @@ -509,6 +510,7 @@ skeleton_path = NodePath("../../../../../../../../GodotBattleBot/Armature/Skelet bone_name = "Left_Hand" use_negative_our_rot = true additional_rotation = Vector3( 0, 0, 90 ) +additional_bone_length = 1 [node name="MiddleJoint" type="Spatial" parent="KinematicBody/CameraHolder/LeanPath/PathFollow/IK_LookAt_Chest/AimPos/IK_FABRIK"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 5.85263, -2.91316, -2.77555 ) @@ -530,7 +532,6 @@ __meta__ = { skeleton_path = NodePath("../../../../../../GodotBattleBot/Armature/Skeleton") bones_in_chain = PoolStringArray( "Right_UpperArm", "Right_LowerArm", "Right_Hand" ) bones_in_chain_lengths = PoolRealArray( 1.97, 3, 0.1 ) -chain_iterations = 8 limit_chain_iterations = false use_middle_joint_target = true @@ -547,6 +548,7 @@ skeleton_path = NodePath("../../../../../../../../GodotBattleBot/Armature/Skelet bone_name = "Right_Hand" use_negative_our_rot = true additional_rotation = Vector3( 0, 0, 90 ) +additional_bone_length = 1 [node name="MiddleJoint" type="Spatial" parent="KinematicBody/CameraHolder/LeanPath/PathFollow/IK_LookAt_Chest/AimPos/IK_FABRIK_RightArm"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.73318, -2.91316, -2.77555 ) @@ -570,6 +572,7 @@ __meta__ = { } skeleton_path = NodePath("../../../../GodotBattleBot/Armature/Skeleton") bone_name = "Head" +additional_bone_length = 1 [node name="AnimationPlayer" type="AnimationPlayer" parent="KinematicBody/CameraHolder"] autoplay = "Start" diff --git a/3d/ik/fps/simple_bullet.gd b/3d/ik/fps/simple_bullet.gd index a8e80437..f395150b 100644 --- a/3d/ik/fps/simple_bullet.gd +++ b/3d/ik/fps/simple_bullet.gd @@ -1,5 +1,6 @@ extends RigidBody + const DESPAWN_TIME = 5 var timer = 0 diff --git a/3d/ik/fps/weapon_pistol.dae.import b/3d/ik/fps/weapon_pistol.dae.import index 764c6d66..a3f2be05 100644 --- a/3d/ik/fps/weapon_pistol.dae.import +++ b/3d/ik/fps/weapon_pistol.dae.import @@ -20,6 +20,7 @@ nodes/use_legacy_names=false materials/location=0 materials/storage=0 materials/keep_on_reimport=true +meshes/octahedral_compression=true meshes/compress=true meshes/ensure_tangents=true meshes/storage=0 diff --git a/3d/ik/look_at_ik.tscn b/3d/ik/look_at_ik.tscn index 174da070..1d996f0c 100644 --- a/3d/ik/look_at_ik.tscn +++ b/3d/ik/look_at_ik.tscn @@ -50,6 +50,7 @@ __meta__ = { skeleton_path = NodePath("../../../GodotBattleBot/Armature/Skeleton") bone_name = "Head" additional_rotation = Vector3( 90, 0, 0 ) +additional_bone_length = 1 [node name="IK_LookAt_LeftArm" type="Spatial" parent="Camera/Targets"] script = ExtResource( 6 ) @@ -58,6 +59,7 @@ __meta__ = { } skeleton_path = NodePath("../../../GodotBattleBot/Armature/Skeleton") bone_name = "Left_UpperArm" +additional_bone_length = 1 [node name="IK_LookAt_RightArm" type="Spatial" parent="Camera/Targets"] script = ExtResource( 6 ) @@ -67,6 +69,7 @@ __meta__ = { skeleton_path = NodePath("../../../GodotBattleBot/Armature/Skeleton") bone_name = "Right_UpperArm" additional_rotation = Vector3( 0, 0, 180 ) +additional_bone_length = 1 [node name="Control" type="Control" parent="."] anchor_right = 1.0 diff --git a/3d/ik/model/godot_battle_bot.dae.import b/3d/ik/model/godot_battle_bot.dae.import index e85210f2..e5a3980d 100644 --- a/3d/ik/model/godot_battle_bot.dae.import +++ b/3d/ik/model/godot_battle_bot.dae.import @@ -20,6 +20,7 @@ nodes/use_legacy_names=false materials/location=0 materials/storage=0 materials/keep_on_reimport=true +meshes/octahedral_compression=true meshes/compress=true meshes/ensure_tangents=true meshes/storage=0 diff --git a/3d/ik/project.godot b/3d/ik/project.godot index c5f21d8a..3598ea86 100644 --- a/3d/ik/project.godot +++ b/3d/ik/project.godot @@ -25,7 +25,7 @@ window/stretch/aspect="expand" [editor_plugins] -enabled=PoolStringArray( "res://addons/sade/plugin.cfg" ) +enabled=PoolStringArray( ) [rendering] diff --git a/3d/ik/skeleton_ik.tscn b/3d/ik/skeleton_ik.tscn index 4d50085e..fccd3ea2 100644 --- a/3d/ik/skeleton_ik.tscn +++ b/3d/ik/skeleton_ik.tscn @@ -53,6 +53,7 @@ __meta__ = { skeleton_path = NodePath("../../../GodotBattleBot/Armature/Skeleton") bone_name = "Head" additional_rotation = Vector3( 90, 0, 0 ) +additional_bone_length = 1 [node name="1MeterCube" type="MeshInstance" parent="Camera/Targets"] mesh = SubResource( 3 ) diff --git a/3d/ik/skeleton_ik_runner.gd b/3d/ik/skeleton_ik_runner.gd index de6e43fc..520e5f35 100644 --- a/3d/ik/skeleton_ik_runner.gd +++ b/3d/ik/skeleton_ik_runner.gd @@ -1,4 +1,5 @@ extends SkeletonIK + func _ready(): start(false) diff --git a/3d/ik/target_from_mousepos.gd b/3d/ik/target_from_mousepos.gd index d1bb1572..38658a83 100644 --- a/3d/ik/target_from_mousepos.gd +++ b/3d/ik/target_from_mousepos.gd @@ -1,6 +1,7 @@ extends Camera -export(float) var MOVEMENT_SPEED = 12 + +export(float) var MOVEMENT_SPEED = 12.0 export(bool) var flip_axis = false onready var targets = $Targets diff --git a/3d/kinematic_character/level.tscn b/3d/kinematic_character/level.tscn index 36018da5..b39cffe2 100644 --- a/3d/kinematic_character/level.tscn +++ b/3d/kinematic_character/level.tscn @@ -79,7 +79,6 @@ input_capture_on_drag = true [node name="Mesh" type="MeshInstance" parent="Elevator1"] mesh = ExtResource( 3 ) -material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Elevator1"] shape = SubResource( 1 ) @@ -94,7 +93,6 @@ transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -3.5, 8.5, 4.5 ) [node name="Mesh" type="MeshInstance" parent="Elevator2"] mesh = ExtResource( 3 ) -material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Elevator2"] shape = SubResource( 1 ) diff --git a/3d/kinematic_character/player/cubio.gd b/3d/kinematic_character/player/cubio.gd index 6ecb77f0..fc605f73 100644 --- a/3d/kinematic_character/player/cubio.gd +++ b/3d/kinematic_character/player/cubio.gd @@ -1,14 +1,16 @@ extends KinematicBody + const MAX_SPEED = 3 const JUMP_SPEED = 5 const ACCELERATION = 2 const DECELERATION = 4 +var velocity: Vector3 onready var camera = $Target/Camera onready var gravity = -ProjectSettings.get_setting("physics/3d/default_gravity") onready var start_position = translation -var velocity: Vector3 + func _physics_process(delta): if Input.is_action_just_pressed("exit"): diff --git a/3d/kinematic_character/player/follow_camera.gd b/3d/kinematic_character/player/follow_camera.gd index 9bb9fb05..0106b6e6 100644 --- a/3d/kinematic_character/player/follow_camera.gd +++ b/3d/kinematic_character/player/follow_camera.gd @@ -1,11 +1,11 @@ - extends Camera + # Member variables -var collision_exception = [] export var min_distance = 0.5 export var max_distance = 3.0 export var angle_v_adjust = 0.0 +var collision_exception = [] var max_height = 2.0 var min_height = 0 onready var target_node: Spatial = get_parent() diff --git a/3d/material_testers/models/test_bed/test_bed.glb.import b/3d/material_testers/models/test_bed/test_bed.glb.import index 562eda66..aba0c02b 100644 --- a/3d/material_testers/models/test_bed/test_bed.glb.import +++ b/3d/material_testers/models/test_bed/test_bed.glb.import @@ -20,6 +20,7 @@ nodes/use_legacy_names=false materials/location=1 materials/storage=2 materials/keep_on_reimport=true +meshes/octahedral_compression=true meshes/compress=true meshes/ensure_tangents=true meshes/storage=0 diff --git a/3d/material_testers/tester.gd b/3d/material_testers/tester.gd index d1b2646d..1d057c09 100644 --- a/3d/material_testers/tester.gd +++ b/3d/material_testers/tester.gd @@ -1,5 +1,6 @@ extends Spatial + const INTERP_SPEED = 2 const ROT_SPEED = 0.003 const ZOOM_SPEED = 0.1 @@ -27,6 +28,7 @@ onready var camera_holder = $CameraHolder # Has a position and rotates on Y. onready var rotation_x = $CameraHolder/RotationX onready var camera = $CameraHolder/RotationX/Camera + func _ready(): for background in backgrounds: get_node("UI/Background").add_item(background.name) diff --git a/3d/navmesh/navmesh.gd b/3d/navmesh/navmesh.gd index 38718c69..db086c8b 100644 --- a/3d/navmesh/navmesh.gd +++ b/3d/navmesh/navmesh.gd @@ -1,22 +1,30 @@ -extends Navigation +extends Spatial + const SPEED = 10.0 var camrot = 0.0 var m = SpatialMaterial.new() +var map + var path = [] var show_path = true onready var robot = get_node("RobotBase") onready var camera = get_node("CameraBase/Camera") + func _ready(): set_process_input(true) m.flags_unshaded = true m.flags_use_point_size = true m.albedo_color = Color.white + # use call deferred to make sure the entire SceneTree Nodes are setup + # else yield on 'physics_frame' in a _ready() might get stuck + call_deferred("setup_navserver") + func _physics_process(delta): var direction = Vector3() @@ -55,14 +63,35 @@ func _physics_process(delta): robot.look_at(look_at_point, Vector3.UP) +func setup_navserver(): + # create a new navigation map + map = NavigationServer.map_create() + NavigationServer.map_set_up(map, Vector3.UP) + NavigationServer.map_set_active(map, true) + + # create a new navigation region and add it to the map + var region = NavigationServer.region_create() + NavigationServer.region_set_transform(region, Transform()) + NavigationServer.region_set_map(region, map) + + # sets navigation mesh for the region + var navigation_mesh = NavigationMesh.new() + navigation_mesh = $NavigationMeshInstance_Level.navmesh + NavigationServer.region_set_navmesh(region, navigation_mesh) + + # wait for NavigationServer sync to adapt to made changes + yield(get_tree(), "physics_frame") + + func _unhandled_input(event): if event is InputEventMouseButton and event.button_index == BUTTON_LEFT and event.pressed: var from = camera.project_ray_origin(event.position) var to = from + camera.project_ray_normal(event.position) * 1000 - var target_point = get_closest_point_to_segment(from, to) + var target_point = NavigationServer.map_get_closest_point_to_segment(map, from, to) + var optimize_path = true # Set the path between the robots current location and our target. - path = get_simple_path(robot.translation, target_point, true) + path = NavigationServer.map_get_path(map,robot.translation, target_point, optimize_path) if show_path: draw_path(path) diff --git a/3d/navmesh/navmesh.tscn b/3d/navmesh/navmesh.tscn index 8888ce54..0437f800 100644 --- a/3d/navmesh/navmesh.tscn +++ b/3d/navmesh/navmesh.tscn @@ -6,9 +6,9 @@ [sub_resource type="NavigationMesh" id=1] vertices = PoolVector3Array( 0.442188, 2.35475, 1.48594, 1.04219, 2.75475, 2.38594, 1.94219, 1.55475, 1.48594, 1.34219, 0.554745, -0.0140624, -0.757813, 0.354745, 2.98594, -0.157812, 0.354745, 2.38594, -0.457812, 0.354745, 1.48594, -1.95781, 0.354745, 2.68594, 12.4422, 2.35475, -1.81406, 10.0422, 2.35475, 0.285938, 10.3422, 2.35475, 2.98594, -6.45781, 3.95475, -0.914063, -5.85781, 4.15475, -0.614062, -4.95781, 3.95475, -1.81406, -4.35781, 2.55475, -3.61406, -5.25781, 2.55475, -5.11406, -6.45781, 3.35475, -3.91406, -4.65781, 3.35475, -2.71406, 1.94219, 1.55475, 1.48594, 2.54219, 0.354745, 1.78594, 3.74219, 0.354745, 1.78594, 4.04219, 0.554745, 0.285938, 1.34219, 0.554745, -0.0140624, 0.142188, 0.354745, -1.81406, -0.757813, 0.754745, -4.21406, -2.25781, 0.954745, -3.01406, -1.50781, 0.754745, -3.61406, 9.44219, 2.95475, 5.38594, 10.3422, 2.35475, 8.08594, 10.9422, 2.35475, 9.28594, 12.4422, 2.35475, 8.98594, 12.4422, 2.35475, -1.81406, 10.3422, 2.35475, 2.98594, 9.44219, 2.95475, 5.38594, 9.14219, 2.35475, 5.98594, 9.14219, 2.35475, 7.78594, 10.3422, 2.35475, 8.08594, 10.3422, 2.35475, 2.98594, 9.74219, 2.75475, 3.28594, 9.44219, 2.95475, 5.38594, 0.142188, 0.354745, -1.81406, 1.34219, 0.554745, -0.0140624, 4.04219, 0.554745, 0.285938, 6.14219, 1.95475, -1.81406, 3.14219, 0.354745, -1.81406, 5.09219, 1.55475, -0.764062, 6.14219, 1.95475, -1.81406, 4.04219, 0.554745, 0.285938, 10.0422, 2.35475, 0.285938, 12.4422, 2.35475, -1.81406, 7.71719, 2.35475, -1.81406, 5.09219, 1.55475, -0.764062, 5.54219, 1.75475, 0.285938, 7.04219, 2.35475, 0.285938, 11.8422, 2.35475, 11.0859, 12.4422, 2.35475, 8.98594, 10.9422, 2.35475, 9.28594, 10.6422, 2.35475, 10.1859, 10.6422, 2.35475, 10.1859, 0.142188, 8.35474, 10.4859, 0.142188, 7.95475, 11.0859, 11.8422, 2.35475, 11.0859, 7.14219, 2.35475, 10.2859, 6.8279, 2.35475, 11.0859, -1.95781, 1.15475, -5.11406, -5.25781, 2.55475, -5.11406, -4.35781, 2.55475, -3.61406, -2.25781, 0.954745, -3.01406, -0.757813, 0.754745, -4.21406, -3.30781, 1.75475, -3.31406, -1.50781, 0.754745, -3.61406, -1.95781, 0.354745, 2.68594, -0.457812, 0.354745, 1.48594, 1.34219, 0.554745, -0.0140624, 0.142188, 0.354745, -1.81406, -2.25781, 0.954745, -3.01406, -3.15781, 4.95475, -0.0140624, -4.35781, 4.95475, 1.18594, -4.95781, 4.95475, 2.68594, -3.15781, 4.95475, 2.98594, -1.65781, 4.95475, 1.18594, -1.65781, 4.75475, -0.614062, 3.14219, 4.95475, 0.285938, 1.34219, 4.95475, -0.614062, 0.142188, 4.55475, 0.885938, 2.54219, 4.95475, 2.38594, -3.15781, 4.95475, -0.0140624, -4.95781, 3.95475, -1.81406, -5.85781, 4.15475, -0.614062, -4.35781, 4.95475, 1.18594, 3.14219, 4.95475, 4.48594, 4.64219, 4.95475, 5.38594, 4.94219, 4.95475, 3.28594, 3.14219, 4.95475, 0.285938, 2.54219, 4.95475, 2.38594, 9.44219, 2.95475, 5.38594, 9.74219, 2.75475, 3.28594, 4.94219, 4.95475, 3.28594, 4.64219, 4.95475, 5.38594, 6.24219, 4.95475, 5.38594, 7.84219, 4.15475, 5.38594, 6.54219, 4.95475, 3.28594, -1.65781, 4.75475, -0.614062, -1.65781, 4.95475, 1.18594, 0.142188, 4.55475, 0.885938, 1.34219, 4.95475, -0.614062, -0.157812, 4.55475, -0.614062, 0.142188, 7.95475, 11.0859, 0.142188, 8.35474, 10.4859, -0.157812, 8.35474, 8.98594, -0.0078125, 8.35474, 10.0359, -2.25781, 8.35474, 11.0859, 0.142188, 7.95475, 11.0859, -0.157812, 8.35474, 8.98594, -2.85781, 8.35474, 6.58594, -5.55781, 8.35474, 7.78594, -5.55781, 8.35474, 8.38594, -1.05781, 8.35474, 11.0859, -0.0078125, 8.35474, 10.0359, -2.85781, 8.35474, 6.58594, 1.04219, 2.75475, 2.38594, 0.442188, 2.35475, 1.48594, -5.55781, 8.35474, 7.78594, -0.907812, 5.55475, 4.48594, -3.15781, 7.35475, 5.26594, -4.35781, 8.35474, 6.52594, 0.142188, 0.354745, 3.58594, -0.757813, 0.354745, 2.98594, -1.95781, 0.354745, 2.68594, 3.74219, 0.354745, 1.78594, 2.54219, 0.354745, 1.78594, 0.142188, 0.354745, 3.58594, 4.04219, 0.554745, 5.68594, 9.14219, 2.35475, 7.78594, 9.14219, 2.35475, 5.98594, 4.04219, 0.554745, 5.68594, -1.95781, 0.354745, 7.78594, 2.79933, 0.354745, 7.78594, 5.97076, 1.95475, 7.78594, 7.44219, 2.35475, 5.88594, 5.74219, 1.75475, 5.78594, 0.142188, 0.354745, 3.58594, -1.95781, 0.354745, 2.68594, -1.95781, 0.354745, 7.78594, 4.04219, 0.554745, 5.68594, 4.64219, 4.95475, 5.38594, 3.14219, 4.95475, 4.48594, 2.84219, 4.95475, 5.68594, 4.04219, 4.95475, 7.18594, 4.64219, 4.95475, 5.38594, 2.84219, 4.95475, 5.68594, 1.34219, 4.95475, 7.18594, 2.54219, 4.95475, 8.68594, 1.34219, 4.95475, 7.18594, -1.35781, 4.95475, 7.48594, -1.35781, 4.75475, 9.28594, 2.54219, 4.95475, 8.68594, -0.0078125, 4.55475, 7.33594, -4.35781, 4.95475, 7.48594, -1.35781, 4.75475, 9.28594, -1.35781, 4.95475, 7.48594, -3.45781, 4.95475, 5.38594, -5.25781, 4.95475, 5.38594, -3.45781, 4.95475, 5.38594, -3.15781, 4.95475, 2.98594, -4.95781, 4.95475, 2.68594, -5.25781, 4.95475, 5.38594 ) polygons = [ PoolIntArray( 1, 0, 2 ), PoolIntArray( 2, 0, 3 ), PoolIntArray( 5, 4, 6 ), PoolIntArray( 6, 4, 7 ), PoolIntArray( 10, 9, 8 ), PoolIntArray( 12, 11, 13 ), PoolIntArray( 13, 11, 17 ), PoolIntArray( 17, 11, 14 ), PoolIntArray( 14, 11, 16 ), PoolIntArray( 14, 16, 15 ), PoolIntArray( 19, 18, 20 ), PoolIntArray( 20, 18, 21 ), PoolIntArray( 21, 18, 22 ), PoolIntArray( 24, 23, 26 ), PoolIntArray( 26, 23, 25 ), PoolIntArray( 29, 28, 30 ), PoolIntArray( 30, 28, 27 ), PoolIntArray( 30, 27, 32 ), PoolIntArray( 30, 32, 31 ), PoolIntArray( 34, 33, 35 ), PoolIntArray( 35, 33, 36 ), PoolIntArray( 38, 37, 39 ), PoolIntArray( 43, 45, 44 ), PoolIntArray( 44, 45, 42 ), PoolIntArray( 44, 42, 41 ), PoolIntArray( 44, 41, 40 ), PoolIntArray( 47, 51, 52 ), PoolIntArray( 52, 51, 46 ), PoolIntArray( 52, 46, 53 ), PoolIntArray( 53, 46, 50 ), PoolIntArray( 53, 50, 48 ), PoolIntArray( 48, 50, 49 ), PoolIntArray( 57, 56, 54 ), PoolIntArray( 54, 56, 55 ), PoolIntArray( 58, 61, 62 ), PoolIntArray( 62, 61, 63 ), PoolIntArray( 62, 63, 59 ), PoolIntArray( 59, 63, 60 ), PoolIntArray( 67, 69, 70 ), PoolIntArray( 70, 69, 68 ), PoolIntArray( 68, 69, 64 ), PoolIntArray( 64, 69, 66 ), PoolIntArray( 64, 66, 65 ), PoolIntArray( 73, 72, 74 ), PoolIntArray( 74, 72, 71 ), PoolIntArray( 74, 71, 75 ), PoolIntArray( 81, 80, 76 ), PoolIntArray( 76, 80, 77 ), PoolIntArray( 77, 80, 79 ), PoolIntArray( 77, 79, 78 ), PoolIntArray( 83, 82, 84 ), PoolIntArray( 84, 82, 85 ), PoolIntArray( 89, 88, 86 ), PoolIntArray( 86, 88, 87 ), PoolIntArray( 91, 90, 92 ), PoolIntArray( 92, 90, 94 ), PoolIntArray( 92, 94, 93 ), PoolIntArray( 98, 97, 99 ), PoolIntArray( 99, 97, 101 ), PoolIntArray( 99, 101, 100 ), PoolIntArray( 100, 101, 95 ), PoolIntArray( 95, 101, 96 ), PoolIntArray( 105, 104, 106 ), PoolIntArray( 106, 104, 102 ), PoolIntArray( 102, 104, 103 ), PoolIntArray( 107, 110, 108 ), PoolIntArray( 108, 110, 109 ), PoolIntArray( 112, 117, 118 ), PoolIntArray( 118, 117, 113 ), PoolIntArray( 113, 117, 111 ), PoolIntArray( 113, 111, 114 ), PoolIntArray( 114, 111, 116 ), PoolIntArray( 114, 116, 115 ), PoolIntArray( 122, 125, 119 ), PoolIntArray( 119, 125, 124 ), PoolIntArray( 119, 124, 123 ), PoolIntArray( 123, 124, 120 ), PoolIntArray( 120, 124, 121 ), PoolIntArray( 128, 127, 126 ), PoolIntArray( 130, 129, 131 ), PoolIntArray( 131, 129, 132 ), PoolIntArray( 134, 133, 139 ), PoolIntArray( 139, 133, 138 ), PoolIntArray( 139, 138, 140 ), PoolIntArray( 140, 138, 135 ), PoolIntArray( 135, 138, 137 ), PoolIntArray( 135, 137, 136 ), PoolIntArray( 142, 141, 143 ), PoolIntArray( 143, 141, 144 ), PoolIntArray( 147, 146, 145 ), PoolIntArray( 149, 148, 150 ), PoolIntArray( 150, 148, 151 ), PoolIntArray( 151, 148, 152 ), PoolIntArray( 154, 157, 155 ), PoolIntArray( 155, 157, 153 ), PoolIntArray( 155, 153, 156 ), PoolIntArray( 162, 161, 158 ), PoolIntArray( 158, 161, 160 ), PoolIntArray( 158, 160, 159 ), PoolIntArray( 164, 163, 165 ), PoolIntArray( 165, 163, 166 ) ] -agent/radius = 0.3 -agent/max_climb = 0.5 -agent/max_slope = 70.0 +agent_radius = 0.3 +agent_max_climb = 0.5 +agent_max_slope = 70.0 [sub_resource type="SpatialMaterial" id=2] albedo_color = Color( 0.258902, 0.392157, 1, 1 ) @@ -87,12 +87,9 @@ surfaces/2 = { "vertex_count": 64 } -[node name="Navigation" type="Navigation"] +[node name="Navigation" type="Spatial"] _import_path = NodePath(".") script = ExtResource( 1 ) -__meta__ = { -"__editor_plugin_screen__": "3D" -} [node name="NavigationMeshInstance_Level" type="NavigationMeshInstance" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0452547, 0 ) @@ -103,7 +100,6 @@ _import_path = NodePath("Cube") transform = Transform( 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, -0.0452547, 0 ) use_in_baked_light = true mesh = SubResource( 3 ) -material/0 = null [node name="AnimationPlayer" type="AnimationPlayer" parent="."] _import_path = NodePath("AnimationPlayer") @@ -135,6 +131,3 @@ _import_path = NodePath("Sphere") transform = Transform( -0.5, 0, -7.54979e-08, 0, 1, 0, 7.54979e-08, 0, -0.5, 0, 1, 0 ) use_in_baked_light = true mesh = SubResource( 7 ) -material/0 = null -material/1 = null -material/2 = null diff --git a/3d/physics_tests/tests/functional/test_moving_platform.tscn b/3d/physics_tests/tests/functional/test_moving_platform.tscn index 4151ae9d..d03df545 100644 --- a/3d/physics_tests/tests/functional/test_moving_platform.tscn +++ b/3d/physics_tests/tests/functional/test_moving_platform.tscn @@ -12,8 +12,8 @@ radius = 0.3 extents = Vector3( 0.3, 0.8, 0.3 ) [sub_resource type="CylinderShape" id=3] -radius = 0.3 height = 1.60005 +radius = 0.3 [sub_resource type="SphereShape" id=4] radius = 0.79945 diff --git a/3d/physics_tests/tests/functional/test_rigidbody_ground_check.tscn b/3d/physics_tests/tests/functional/test_rigidbody_ground_check.tscn index 808cda9e..87b5f02f 100644 --- a/3d/physics_tests/tests/functional/test_rigidbody_ground_check.tscn +++ b/3d/physics_tests/tests/functional/test_rigidbody_ground_check.tscn @@ -223,7 +223,6 @@ collision_mask = 3 [node name="MeshInstance" type="MeshInstance" parent="Floors/ConvexSmall/ConvexFloor"] visible = false mesh = SubResource( 23 ) -material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Floors/ConvexSmall/ConvexFloor"] shape = SubResource( 24 ) @@ -236,7 +235,6 @@ collision_mask = 3 [node name="MeshInstance" type="MeshInstance" parent="Floors/ConvexSmall/ConvexFloor2"] visible = false mesh = SubResource( 23 ) -material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Floors/ConvexSmall/ConvexFloor2"] shape = SubResource( 25 ) @@ -250,7 +248,6 @@ collision_mask = 3 [node name="MeshInstance" type="MeshInstance" parent="Floors/ConvexBig/ConvexFloor"] visible = false mesh = SubResource( 23 ) -material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Floors/ConvexBig/ConvexFloor"] shape = SubResource( 26 ) @@ -265,7 +262,6 @@ collision_mask = 3 [node name="MeshInstance" type="MeshInstance" parent="Floors/ConcaveSmall/ConcaveFloor"] visible = false mesh = SubResource( 23 ) -material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Floors/ConcaveSmall/ConcaveFloor"] transform = Transform( 25, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0 ) @@ -279,7 +275,6 @@ collision_mask = 3 [node name="MeshInstance" type="MeshInstance" parent="Floors/ConcaveSmall/ConcaveFloor2"] visible = false mesh = SubResource( 23 ) -material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Floors/ConcaveSmall/ConcaveFloor2"] transform = Transform( 25, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0 ) @@ -294,7 +289,6 @@ collision_mask = 3 [node name="MeshInstance" type="MeshInstance" parent="Floors/ConcaveBig/ConcaveFloor"] visible = false mesh = SubResource( 23 ) -material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Floors/ConcaveBig/ConcaveFloor"] shape = SubResource( 28 ) @@ -309,7 +303,6 @@ collision_mask = 3 [node name="MeshInstance" type="MeshInstance" parent="Floors/BoxSmall/BoxFloor"] visible = false mesh = SubResource( 23 ) -material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Floors/BoxSmall/BoxFloor"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0 ) @@ -323,7 +316,6 @@ collision_mask = 3 [node name="MeshInstance" type="MeshInstance" parent="Floors/BoxSmall/BoxFloor2"] visible = false mesh = SubResource( 23 ) -material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Floors/BoxSmall/BoxFloor2"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0 ) @@ -338,7 +330,6 @@ collision_mask = 3 [node name="MeshInstance" type="MeshInstance" parent="Floors/BoxBig/BoxFloor"] visible = false mesh = SubResource( 23 ) -material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Floors/BoxBig/BoxFloor"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0 ) diff --git a/3d/physics_tests/tests/performance/test_perf_contact_islands.tscn b/3d/physics_tests/tests/performance/test_perf_contact_islands.tscn index 0359c912..86a39bd3 100644 --- a/3d/physics_tests/tests/performance/test_perf_contact_islands.tscn +++ b/3d/physics_tests/tests/performance/test_perf_contact_islands.tscn @@ -13,8 +13,8 @@ radius = 0.5 height = 0.5 [sub_resource type="CylinderShape" id=3] -radius = 0.5 height = 1.0 +radius = 0.5 [sub_resource type="ConvexPolygonShape" id=4] points = PoolVector3Array( -0.7, 0, -0.7, -0.3, 0, 0.8, 0.8, 0, -0.3, 0, -1, 0 ) diff --git a/3d/physics_tests/tests/static_scene.tscn b/3d/physics_tests/tests/static_scene.tscn index 3e20b2a0..40bce466 100644 --- a/3d/physics_tests/tests/static_scene.tscn +++ b/3d/physics_tests/tests/static_scene.tscn @@ -13,7 +13,6 @@ transform = Transform( 10, 0, 0, 0, 8.66025, 5, 0, -5, 8.66025, 0, -11.1389, 2.2 [node name="RobotHead" type="MeshInstance" parent="StaticBodyHead"] mesh = ExtResource( 2 ) -material/0 = null [node name="CollisionShape" type="CollisionShape" parent="StaticBodyHead"] shape = ExtResource( 1 ) diff --git a/3d/physics_tests/tests/static_scene_plane.tscn b/3d/physics_tests/tests/static_scene_plane.tscn index c0c35c98..dfc0f548 100644 --- a/3d/physics_tests/tests/static_scene_plane.tscn +++ b/3d/physics_tests/tests/static_scene_plane.tscn @@ -10,7 +10,6 @@ data = PoolVector3Array( -1, 0, 1, 1, 0, -1, 1, 0, 1, -1, 0, 1, -1, 0, -1, 1, 0, [node name="MeshInstance" type="MeshInstance" parent="."] transform = Transform( 50, 0, 0, 0, 1, 0, 0, 0, 50, 0, 0, 0 ) mesh = SubResource( 1 ) -material/0 = null [node name="CollisionShape" type="CollisionShape" parent="."] transform = Transform( 50, 0, 0, 0, 1, 0, 0, 0, 50, 0, 0, 0 ) diff --git a/3d/physics_tests/tests/test_options.tscn b/3d/physics_tests/tests/test_options.tscn index 63d66ee5..c8fd1577 100644 --- a/3d/physics_tests/tests/test_options.tscn +++ b/3d/physics_tests/tests/test_options.tscn @@ -12,6 +12,3 @@ text = "TEST OPTIONS" flat = false align = 0 script = ExtResource( 1 ) -__meta__ = { -"_edit_use_anchors_": false -} diff --git a/3d/physics_tests/utils/rigidbody_ground_check.gd b/3d/physics_tests/utils/rigidbody_ground_check.gd index 74976a6e..49cd1ceb 100644 --- a/3d/physics_tests/utils/rigidbody_ground_check.gd +++ b/3d/physics_tests/utils/rigidbody_ground_check.gd @@ -1,10 +1,6 @@ extends RigidBody -onready var _forward = - transform.basis.z -onready var _collision_shape = $CollisionShape -onready var _material = $CollisionShape/MeshInstance.get_surface_material(0) - var _dir = 1.0 var _distance = 10.0 var _walk_spd = 100.0 @@ -12,6 +8,10 @@ var _acceleration = 22.0 var _gravity_impulse = 30.0 var _is_on_floor = false +onready var _forward = - transform.basis.z +onready var _collision_shape = $CollisionShape +onready var _material = $CollisionShape/MeshInstance.get_surface_material(0) + func _process(_delta): if _is_on_floor: diff --git a/3d/physics_tests/utils/system_log.gd b/3d/physics_tests/utils/system_log.gd index dc094d25..50bf628f 100644 --- a/3d/physics_tests/utils/system_log.gd +++ b/3d/physics_tests/utils/system_log.gd @@ -1,13 +1,13 @@ extends Node +signal entry_logged(message, type) + enum LogType { LOG, ERROR, } -signal entry_logged(message, type) - func print_log(message): print(message) diff --git a/3d/platformer/coin/coin.gd b/3d/platformer/coin/coin.gd index 3d8e7969..b14f33cd 100644 --- a/3d/platformer/coin/coin.gd +++ b/3d/platformer/coin/coin.gd @@ -1,7 +1,9 @@ extends Area + var taken = false + func _on_coin_body_enter(body): if not taken and body is preload("res://player/player.gd"): get_node("Animation").play("take") diff --git a/3d/platformer/coin/coin.tscn b/3d/platformer/coin/coin.tscn index cc2d4175..ec72fc25 100644 --- a/3d/platformer/coin/coin.tscn +++ b/3d/platformer/coin/coin.tscn @@ -118,7 +118,6 @@ __meta__ = { transform = Transform( 0.2, 0, 0, 0, -3.25841e-08, 0.2, 0, -0.2, -3.25841e-08, 0.00550658, 0.532125, 0.000651598 ) layers = 2 mesh = SubResource( 2 ) -material/0 = null [node name="Animation" type="AnimationPlayer" parent="."] autoplay = "spin" diff --git a/3d/platformer/coin/sound_coin.wav.import b/3d/platformer/coin/sound_coin.wav.import index 8f4146ca..07daa90c 100644 --- a/3d/platformer/coin/sound_coin.wav.import +++ b/3d/platformer/coin/sound_coin.wav.import @@ -17,5 +17,7 @@ force/max_rate=false force/max_rate_hz=44100 edit/trim=true edit/normalize=true -edit/loop=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 compress/mode=0 diff --git a/3d/platformer/enemy/enemy.gd b/3d/platformer/enemy/enemy.gd index 95278416..44786bd7 100644 --- a/3d/platformer/enemy/enemy.gd +++ b/3d/platformer/enemy/enemy.gd @@ -1,5 +1,6 @@ extends RigidBody + const ACCEL = 5.0 const DEACCEL = 20.0 const MAX_SPEED = 2.0 diff --git a/3d/platformer/enemy/enemy.tscn b/3d/platformer/enemy/enemy.tscn index 879a704f..a1551912 100644 --- a/3d/platformer/enemy/enemy.tscn +++ b/3d/platformer/enemy/enemy.tscn @@ -557,9 +557,6 @@ bones/10/bound_children = [ ] [node name="Sphere" type="MeshInstance" parent="Armature/Skeleton"] layers = 2 mesh = SubResource( 5 ) -material/0 = null -material/1 = null -material/2 = null [node name="RayFloor" type="RayCast" parent="Armature"] transform = Transform( 1, 0, 0, 0, 0.576528, 0.817077, 0, -0.817077, 0.576528, 0, 0.643772, 0.803052 ) diff --git a/3d/platformer/enemy/robot_walk.wav.import b/3d/platformer/enemy/robot_walk.wav.import index f7481189..068ab250 100644 --- a/3d/platformer/enemy/robot_walk.wav.import +++ b/3d/platformer/enemy/robot_walk.wav.import @@ -17,5 +17,7 @@ force/max_rate=false force/max_rate_hz=44100 edit/trim=true edit/normalize=true -edit/loop=true +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 compress/mode=0 diff --git a/3d/platformer/enemy/sound_explode.wav.import b/3d/platformer/enemy/sound_explode.wav.import index cfbf0bc5..9b2dea7b 100644 --- a/3d/platformer/enemy/sound_explode.wav.import +++ b/3d/platformer/enemy/sound_explode.wav.import @@ -17,5 +17,7 @@ force/max_rate=false force/max_rate_hz=44100 edit/trim=true edit/normalize=true -edit/loop=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 compress/mode=0 diff --git a/3d/platformer/enemy/sound_hit.wav.import b/3d/platformer/enemy/sound_hit.wav.import index 2c971353..b92d06bf 100644 --- a/3d/platformer/enemy/sound_hit.wav.import +++ b/3d/platformer/enemy/sound_hit.wav.import @@ -17,5 +17,7 @@ force/max_rate=false force/max_rate_hz=44100 edit/trim=true edit/normalize=true -edit/loop=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 compress/mode=0 diff --git a/3d/platformer/player/bullet/bullet.gd b/3d/platformer/player/bullet/bullet.gd index d3b9175c..53a243f9 100644 --- a/3d/platformer/player/bullet/bullet.gd +++ b/3d/platformer/player/bullet/bullet.gd @@ -1,4 +1,5 @@ extends RigidBody + #warning-ignore:unused_class_variable var enabled = true diff --git a/3d/platformer/player/follow_camera.gd b/3d/platformer/player/follow_camera.gd index f83b1cc5..cecb5277 100644 --- a/3d/platformer/player/follow_camera.gd +++ b/3d/platformer/player/follow_camera.gd @@ -1,5 +1,6 @@ extends Camera + const MAX_HEIGHT = 2.0 const MIN_HEIGHT = 0 @@ -11,6 +12,7 @@ export var autoturn_speed = 50 var collision_exception = [] + func _ready(): # Find collision exceptions for ray. var node = self diff --git a/3d/platformer/player/player.gd b/3d/platformer/player/player.gd index 91b87378..feee9681 100644 --- a/3d/platformer/player/player.gd +++ b/3d/platformer/player/player.gd @@ -1,5 +1,6 @@ extends KinematicBody + enum Anim { FLOOR, AIR, diff --git a/3d/platformer/player/player.tscn b/3d/platformer/player/player.tscn index 952518f2..02fe97c6 100644 --- a/3d/platformer/player/player.tscn +++ b/3d/platformer/player/player.tscn @@ -1656,7 +1656,7 @@ nodes/state/node = SubResource( 21 ) nodes/state/position = Vector2( 440, 0 ) nodes/walk/node = SubResource( 22 ) nodes/walk/position = Vector2( -40, -240 ) -node_connections = [ "scale", 0, "walk", "state", 0, "scale", "state", 1, "air_dir", "output", 0, "gun", "air_dir", 0, "Animation 3", "air_dir", 1, "Animation 4", "gun", 0, "state", "gun", 1, "Animation 5", "walk", 0, "Animation", "walk", 1, "Animation 2" ] +node_connections = [ "gun", 0, "state", "gun", 1, "Animation 5", "air_dir", 0, "Animation 3", "air_dir", 1, "Animation 4", "walk", 0, "Animation", "walk", 1, "Animation 2", "scale", 0, "walk", "state", 0, "scale", "state", 1, "air_dir", "output", 0, "gun" ] [node name="Player" type="KinematicBody"] script = ExtResource( 1 ) @@ -1820,8 +1820,6 @@ bones/26/bound_children = [ ] [node name="Robot" type="MeshInstance" parent="Armature/Skeleton"] mesh = SubResource( 4 ) -material/0 = null -material/1 = null [node name="Bullet" type="Position3D" parent="Armature"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1.94071, 3.64079, 3.3802 ) diff --git a/3d/platformer/player/sound_jump.wav.import b/3d/platformer/player/sound_jump.wav.import index 4e3e8afd..35bac42d 100644 --- a/3d/platformer/player/sound_jump.wav.import +++ b/3d/platformer/player/sound_jump.wav.import @@ -17,5 +17,7 @@ force/max_rate=false force/max_rate_hz=44100 edit/trim=true edit/normalize=true -edit/loop=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 compress/mode=0 diff --git a/3d/platformer/player/sound_shoot.wav.import b/3d/platformer/player/sound_shoot.wav.import index c5a33f7b..c6aa63b5 100644 --- a/3d/platformer/player/sound_shoot.wav.import +++ b/3d/platformer/player/sound_shoot.wav.import @@ -17,5 +17,7 @@ force/max_rate=false force/max_rate_hz=44100 edit/trim=true edit/normalize=true -edit/loop=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 compress/mode=0 diff --git a/3d/platformer/stage/stage.tscn b/3d/platformer/stage/stage.tscn index d46a156d..e4482a41 100644 --- a/3d/platformer/stage/stage.tscn +++ b/3d/platformer/stage/stage.tscn @@ -108,7 +108,7 @@ mesh_library = ExtResource( 1 ) cell_octant_size = 16 cell_scale = 1.001 data = { -"cells": PoolIntArray( 3, 0, 1048584, 12, 0, 1441800, 38, 0, 1048584, 65534, 0, 1441800, 65539, 0, 1048584, 65548, 0, 1441800, 65555, 0, 1048584, 65556, 0, 1048583, 65557, 0, 1048583, 65558, 0, 1048583, 65559, 0, 1048583, 65560, 0, 1048583, 65561, 0, 7, 65562, 0, 7, 65563, 0, 7, 65564, 0, 7, 65565, 0, 7, 65566, 0, 7, 65567, 0, 7, 65568, 0, 7, 65569, 0, 7, 65570, 0, 7, 65571, 0, 7, 65572, 0, 7, 65573, 0, 7, 65574, 0, 1048582, 131070, 0, 1441800, 131075, 0, 1048578, 131084, 0, 1441800, 131091, 0, 1048584, 196606, 0, 1441800, 196611, 0, 1048578, 196620, 0, 1441800, 196627, 0, 1048584, 262142, 0, 1441800, 262147, 0, 1048578, 262156, 0, 1441800, 262163, 0, 1048584, 327678, 0, 1441800, 327683, 0, 1048584, 327692, 0, 1441794, 327699, 0, 1048584, 393214, 0, 1441800, 393219, 0, 1048584, 393228, 0, 1441794, 393235, 0, 1048584, 458750, 0, 1441800, 458752, 0, 1441799, 458753, 0, 1441799, 458754, 0, 1441799, 458755, 0, 1048582, 458764, 0, 1441794, 458771, 0, 1048584, 524286, 0, 1441798, 524287, 0, 1441799, 524300, 0, 1441798, 524301, 0, 1048583, 524302, 0, 1048583, 524303, 0, 1048583, 524304, 0, 1048583, 524305, 0, 1048583, 524306, 0, 1048583, 524307, 0, 1048582, -65533, 0, 1048579, -65532, 0, 1441799, -65531, 0, 1441799, -65530, 0, 1441799, -65529, 0, 1441799, -65528, 0, 1441799, -65527, 0, 1441799, -65526, 0, 1441799, -65525, 0, 1441799, -65524, 0, 1441795, 3, 1, 1048584, 12, 1, 1441800, 29, 1, 8, 30, 1, 8, 31, 1, 8, 38, 1, 1048584, 65534, 1, 1441800, 65539, 1, 1048584, 65548, 1, 1441800, 65555, 1, 1048584, 65556, 1, 655367, 65557, 1, 655367, 65558, 1, 655367, 65559, 1, 655367, 65560, 1, 655367, 65561, 1, 655367, 65562, 1, 655367, 65563, 1, 655367, 65564, 1, 6, 65565, 1, 6, 65566, 1, 6, 65567, 1, 6, 65568, 1, 7, 65569, 1, 7, 65570, 1, 7, 65571, 1, 7, 65572, 1, 1048583, 65573, 1, 7, 65574, 1, 1048582, 131070, 1, 1441800, 131075, 1, 1048578, 131084, 1, 1441800, 131091, 1, 1048584, 196606, 1, 1441800, 196611, 1, 1048578, 196620, 1, 1441800, 196627, 1, 1048584, 262142, 1, 1441800, 262147, 1, 1048578, 262156, 1, 1441800, 262163, 1, 1048584, 327678, 1, 1441800, 327683, 1, 1048584, 327692, 1, 1441794, 327699, 1, 1048584, 393214, 1, 1441800, 393219, 1, 1048584, 393228, 1, 1441794, 393235, 1, 1048584, 458750, 1, 1441800, 458752, 1, 655367, 458753, 1, 1441799, 458754, 1, 1441799, 458755, 1, 1048582, 458764, 1, 1441794, 458771, 1, 1048584, 524286, 1, 1441798, 524287, 1, 1441799, 524300, 1, 1441798, 524301, 1, 1048583, 524302, 1, 1048583, 524303, 1, 1048583, 524304, 1, 1048583, 524305, 1, 1048583, 524306, 1, 1048583, 524307, 1, 1048582, -65533, 1, 1048579, -65532, 1, 1441799, -65531, 1, 1441799, -65530, 1, 1441799, -65529, 1, 1441799, -65528, 1, 1441799, -65527, 1, 1441799, -65526, 1, 1441799, -65525, 1, 1441799, -65524, 1, 1441795, -65507, 1, 3, -65506, 1, 3, -65505, 1, 3, 3, 2, 1048584, 5, 2, 1441797, 6, 2, 655365, 8, 2, 1441801, 9, 2, 655368, 10, 2, 655368, 11, 2, 655368, 12, 2, 1441800, 28, 2, 1048584, 32, 2, 9, 38, 2, 1048584, 65534, 2, 1441800, 65539, 2, 1048584, 65544, 2, 1441797, 65545, 2, 655366, 65546, 2, 655366, 65547, 2, 655366, 65548, 2, 1441800, 65555, 2, 1048584, 65556, 2, 655368, 65557, 2, 655368, 65558, 2, 655368, 65559, 2, 655368, 65560, 2, 655363, 65561, 2, 655363, 65562, 2, 655363, 65563, 2, 655363, 65564, 2, 655369, 65568, 2, 5, 65569, 2, 7, 65570, 2, 7, 65571, 2, 7, 65572, 2, 1048583, 65573, 2, 7, 65574, 2, 1048582, 131070, 2, 1441800, 131075, 2, 1048578, 131084, 2, 1441800, 131091, 2, 1048584, 131092, 2, 655368, 131093, 2, 655368, 131094, 2, 655368, 131095, 2, 655368, 131096, 2, 655368, 131097, 2, 655368, 131098, 2, 655368, 131099, 2, 655368, 131100, 2, 655369, 196606, 2, 1441800, 196611, 2, 1048578, 196620, 2, 1441800, 196627, 2, 1048584, 196628, 2, 655366, 196629, 2, 655366, 196630, 2, 655366, 196631, 2, 655366, 196632, 2, 655366, 196633, 2, 655366, 196634, 2, 655366, 196635, 2, 655366, 196636, 2, 655365, 262142, 2, 1441800, 262147, 2, 1048578, 262156, 2, 1441800, 262163, 2, 1048584, 327678, 2, 1441800, 327683, 2, 1048584, 327692, 2, 1441794, 327699, 2, 1048584, 393214, 2, 1441800, 393219, 2, 1048584, 393228, 2, 1441794, 393235, 2, 1048584, 458750, 2, 1441800, 458752, 2, 1441799, 458753, 2, 1441799, 458754, 2, 1441799, 458755, 2, 1048582, 458764, 2, 1441794, 458771, 2, 1048584, 524286, 2, 1441798, 524287, 2, 1441799, 524300, 2, 1441798, 524301, 2, 1048583, 524302, 2, 1048583, 524303, 2, 1048583, 524304, 2, 1048583, 524305, 2, 1048583, 524306, 2, 1048583, 524307, 2, 1048582, -65533, 2, 1048579, -65532, 2, 1048583, -65531, 2, 1441796, -65530, 2, 655364, -65529, 2, 1441799, -65528, 2, 1441796, -65527, 2, 655363, -65526, 2, 655363, -65525, 2, 655363, -65524, 2, 1441800, -65508, 2, 1048579, -65507, 2, 1441799, -65506, 2, 1441799, -65505, 2, 1441799, -65504, 2, 4, 3, 3, 1048584, 5, 3, 5, 6, 3, 1048581, 8, 3, 9, 9, 3, 8, 10, 3, 8, 11, 3, 8, 12, 3, 1441800, 28, 3, 1048585, 33, 3, 9, 38, 3, 1048584, 65534, 3, 1441800, 65539, 3, 1048584, 65544, 3, 5, 65545, 3, 6, 65546, 3, 6, 65547, 3, 6, 65548, 3, 1441800, 65555, 3, 1048584, 65564, 3, 1048585, 65569, 3, 5, 65570, 3, 7, 65571, 3, 7, 65572, 3, 1048583, 65573, 3, 7, 65574, 3, 1048582, 131070, 3, 1441800, 131075, 3, 1048578, 131084, 3, 1441800, 131091, 3, 1048584, 131100, 3, 1048585, 196606, 3, 1441800, 196611, 3, 1048578, 196620, 3, 1441800, 196627, 3, 1048584, 196628, 3, 655368, 196629, 3, 655368, 196630, 3, 655368, 196631, 3, 655368, 196632, 3, 655363, 196633, 3, 655363, 196634, 3, 655363, 196635, 3, 655364, 196636, 3, 1048581, 262142, 3, 1441800, 262147, 3, 1048578, 262156, 3, 1441800, 262163, 3, 1048584, 262164, 3, 655366, 262165, 3, 655366, 262166, 3, 655366, 262167, 3, 655366, 262168, 3, 655366, 262169, 3, 655366, 262170, 3, 655366, 262171, 3, 655365, 327678, 3, 1441800, 327683, 3, 1048584, 327692, 3, 1441794, 327699, 3, 1048584, 393214, 3, 1441800, 393219, 3, 1048584, 393228, 3, 1441794, 393235, 3, 1048584, 458750, 3, 1441800, 458752, 3, 1441799, 458753, 3, 1441799, 458754, 3, 1441799, 458755, 3, 1048582, 458764, 3, 1441794, 458771, 3, 1048578, 524286, 3, 1441798, 524287, 3, 655367, 524300, 3, 1441798, 524301, 3, 1048583, 524302, 3, 1048583, 524303, 3, 1048583, 524304, 3, 1048583, 524305, 3, 1048583, 524306, 3, 1048583, 524307, 3, 1048582, -65533, 3, 1048579, -65532, 3, 1048583, -65531, 3, 4, -65530, 3, 1048580, -65529, 3, 1441799, -65528, 3, 4, -65527, 3, 3, -65526, 3, 3, -65525, 3, 3, -65524, 3, 1441800, -65508, 3, 1048580, -65507, 3, 1441799, -65506, 3, 1441799, -65505, 3, 1441799, -65504, 3, 1441799, -65503, 3, 4, 3, 4, 1048584, 12, 4, 1441800, 27, 4, 1048584, 34, 4, 1441800, 38, 4, 1048584, 65534, 4, 1441800, 65539, 4, 1048584, 65548, 4, 1441800, 65563, 4, 1048584, 65570, 4, 1441798, 65571, 4, 7, 65572, 4, 1048583, 65573, 4, 7, 65574, 4, 1048582, 131070, 4, 1441800, 131075, 4, 1048578, 131084, 4, 9, 131085, 4, 3, 131086, 4, 3, 131087, 4, 3, 131088, 4, 3, 131089, 4, 3, 131090, 4, 3, 131099, 4, 1048584, 196606, 4, 1441800, 196611, 4, 1048578, 196620, 4, 9, 196621, 4, 8, 196622, 4, 8, 196623, 4, 8, 196624, 4, 8, 196625, 4, 8, 196626, 4, 8, 196628, 4, 655368, 196629, 4, 655368, 196630, 4, 655368, 196631, 4, 655368, 196632, 4, 655368, 196635, 4, 1048584, 262142, 4, 1441800, 262147, 4, 1048578, 262156, 4, 1441800, 262164, 4, 655368, 262165, 4, 655368, 262166, 4, 655368, 262167, 4, 655368, 262168, 4, 655363, 262169, 4, 655363, 262170, 4, 655364, 262171, 4, 1048582, 327678, 4, 1441800, 327680, 4, 8, 327681, 4, 8, 327682, 4, 8, 327683, 4, 1048585, 327691, 4, 1441808, 327692, 4, 9, 327693, 4, 3, 327694, 4, 3, 327695, 4, 3, 327696, 4, 3, 327697, 4, 3, 327700, 4, 655368, 327701, 4, 655368, 327702, 4, 655368, 327703, 4, 655368, 327704, 4, 655368, 327705, 4, 655368, 327706, 4, 655369, 393214, 4, 1441800, 393216, 4, 8, 393217, 4, 8, 393218, 4, 8, 393219, 4, 1048585, 393228, 4, 9, 393229, 4, 2, 393230, 4, 2, 393231, 4, 2, 393232, 4, 2, 393233, 4, 2, 393236, 4, 655368, 393237, 4, 655368, 393238, 4, 655368, 393239, 4, 655368, 393240, 4, 655368, 393241, 4, 655368, 393242, 4, 655369, 458750, 4, 1441800, 458752, 4, 6, 458753, 4, 6, 458754, 4, 6, 458755, 4, 1048581, 458764, 4, 1441800, 458771, 4, 1048578, 458772, 4, 655366, 458773, 4, 655366, 458774, 4, 655366, 458775, 4, 655366, 458776, 4, 655366, 458777, 4, 655366, 458778, 4, 655365, 524286, 4, 1441798, 524287, 4, 1048583, 524300, 4, 1441798, 524301, 4, 1048583, 524302, 4, 1048583, 524303, 4, 1048583, 524304, 4, 1048583, 524305, 4, 1048583, 524306, 4, 1048583, 524307, 4, 1048582, -65533, 4, 1048579, -65532, 4, 7, -65531, 4, 7, -65530, 4, 7, -65529, 4, 7, -65528, 4, 1441799, -65527, 4, 1441799, -65526, 4, 1441799, -65525, 4, 1441799, -65524, 4, 1441800, -65509, 4, 1048579, -65508, 4, 1441799, -65507, 4, 1441799, -65506, 4, 1441799, -65505, 4, 1441799, -65504, 4, 1441799, -65503, 4, 1441799, -65502, 4, 1441795, 3, 5, 1048584, 11, 5, 1441801, 27, 5, 1048584, 34, 5, 9, 38, 5, 1048584, 65534, 5, 1441800, 65538, 5, 3, 65539, 5, 1048580, 65547, 5, 1441801, 65563, 5, 1048584, 65570, 5, 5, 65571, 5, 7, 65572, 5, 7, 65573, 5, 7, 65574, 5, 1048582, 131070, 5, 1441800, 131074, 5, 2, 131075, 5, 1048585, 131083, 5, 1441797, 131084, 5, 7, 131085, 5, 7, 131086, 5, 7, 131087, 5, 7, 131088, 5, 7, 131089, 5, 7, 131090, 5, 7, 131091, 5, 1441795, 131099, 5, 1048584, 196606, 5, 1441800, 196610, 5, 2, 196611, 5, 1048585, 196627, 5, 1441800, 196635, 5, 1048584, 262142, 5, 1441800, 262146, 5, 2, 262147, 5, 1048585, 262156, 5, 1441806, 262157, 5, 1, 262158, 5, 1, 262159, 5, 1, 262160, 5, 1, 262161, 5, 655361, 262162, 5, 655361, 262170, 5, 1048579, 262171, 5, 1048582, 327678, 5, 1441800, 327680, 5, 1048583, 327681, 5, 1441798, 327682, 5, 6, 327683, 5, 1048581, 327692, 5, 1441798, 327693, 5, 7, 327694, 5, 1441795, 327695, 5, 7, 327696, 5, 7, 327697, 5, 1048583, 327698, 5, 1441795, 327706, 5, 1048584, 393214, 5, 1441800, 393215, 5, 1048584, 393230, 5, 1441800, 393234, 5, 1441794, 393242, 5, 1048584, 458750, 5, 1441800, 458751, 5, 1048584, 458764, 5, 1441806, 458765, 5, 655361, 458766, 5, 655361, 458767, 5, 655361, 458768, 5, 655361, 458769, 5, 655361, 458771, 5, 1048578, 458772, 5, 1048583, 458773, 5, 1048583, 458774, 5, 1048583, 458775, 5, 1048583, 458776, 5, 1048583, 458777, 5, 1048583, 458778, 5, 1048582, 524286, 5, 1441798, 524287, 5, 1048582, 524300, 5, 1441798, 524301, 5, 1441799, 524302, 5, 1441799, 524303, 5, 1441799, 524304, 5, 1441799, 524305, 5, 1441799, 524306, 5, 1441799, 524307, 5, 1048582, -65533, 5, 1048579, -65532, 5, 7, -65531, 5, 7, -65530, 5, 7, -65529, 5, 1048583, -65528, 5, 1441799, -65527, 5, 1441799, -65526, 5, 1441799, -65525, 5, 1441796, -65509, 5, 1048579, -65508, 5, 1441799, -65507, 5, 1441799, -65506, 5, 1441799, -65505, 5, 1441799, -65504, 5, 1441799, -65503, 5, 1441799, -65502, 5, 4, 2, 6, 655368, 3, 6, 655368, 4, 6, 655369, 11, 6, 1441794, 27, 6, 1048584, 35, 6, 1441800, 38, 6, 1048584, 65534, 6, 1441800, 65537, 6, 1048579, 65538, 6, 655366, 65539, 6, 655366, 65540, 6, 655365, 65547, 6, 1441794, 65563, 6, 1048584, 65571, 6, 1441798, 65572, 6, 7, 65573, 6, 7, 65574, 6, 1048582, 131070, 6, 1441800, 131073, 6, 1048584, 131083, 6, 1441798, 131084, 6, 7, 131085, 6, 7, 131086, 6, 7, 131087, 6, 7, 131088, 6, 7, 131089, 6, 7, 131090, 6, 7, 131091, 6, 1441795, 131099, 6, 1048584, 196606, 6, 1441800, 196609, 6, 1048584, 196627, 6, 1441800, 196635, 6, 1048584, 262142, 6, 1441800, 262145, 6, 1048584, 262156, 6, 1441806, 262157, 6, 1, 262158, 6, 1, 262159, 6, 1, 262160, 6, 1, 262161, 6, 655361, 262162, 6, 655361, 262170, 6, 1048579, 262171, 6, 1048582, 327678, 6, 1441800, 327680, 6, 1441799, 327681, 6, 1048582, 327692, 6, 1441798, 327693, 6, 7, 327694, 6, 1441795, 327695, 6, 7, 327696, 6, 7, 327697, 6, 1048583, 327698, 6, 1441795, 327706, 6, 1048584, 393214, 6, 1441800, 393215, 6, 1048584, 393230, 6, 1441800, 393234, 6, 1441794, 393242, 6, 1048584, 458750, 6, 1441800, 458751, 6, 1048584, 458764, 6, 1441806, 458765, 6, 655361, 458766, 6, 655361, 458767, 6, 655361, 458768, 6, 655361, 458769, 6, 655361, 458771, 6, 1048578, 458772, 6, 1048583, 458773, 6, 1048583, 458774, 6, 1048583, 458775, 6, 1048583, 458776, 6, 1048583, 458777, 6, 1048583, 458778, 6, 1048582, 524286, 6, 1441798, 524287, 6, 1048582, 524300, 6, 1441798, 524301, 6, 1441799, 524302, 6, 1441799, 524303, 6, 1441799, 524304, 6, 1441799, 524305, 6, 1441799, 524306, 6, 1441799, 524307, 6, 1048582, -65534, 6, 655363, -65533, 6, 655363, -65532, 6, 655364, -65531, 6, 655367, -65530, 6, 655367, -65529, 6, 1048583, -65528, 6, 7, -65527, 6, 1441799, -65526, 6, 1441799, -65525, 6, 1441795, -65509, 6, 1048579, -65508, 6, 1441799, -65507, 6, 1441799, -65506, 6, 1441799, -65505, 6, 1441799, -65504, 6, 1441799, -65503, 6, 1441799, -65502, 6, 1441799, -65501, 6, 1441795, 4, 7, 1048584, 6, 7, 11, 11, 7, 9, 27, 7, 1048584, 35, 7, 1441800, 39, 7, 655369, 65534, 7, 1441800, 65537, 7, 1048579, 65538, 7, 1441799, 65539, 7, 1441799, 65540, 7, 1048582, 65542, 7, 12, 65547, 7, 9, 65563, 7, 1048584, 65571, 7, 1441798, 65572, 7, 7, 65573, 7, 7, 65574, 7, 7, 65575, 7, 655365, 131070, 7, 1441800, 131073, 7, 1048584, 131078, 7, 1441804, 131083, 7, 5, 131084, 7, 7, 131085, 7, 1441796, 131086, 7, 655363, 131087, 7, 655363, 131088, 7, 655364, 131089, 7, 7, 131090, 7, 7, 131091, 7, 1441795, 131099, 7, 1048584, 196606, 7, 1441800, 196609, 7, 1048584, 196614, 7, 13, 196621, 7, 1441801, 196622, 7, 655362, 196623, 7, 655362, 196624, 7, 655369, 196627, 7, 1441800, 196635, 7, 1048584, 262142, 7, 1441800, 262145, 7, 1048584, 262156, 7, 1441806, 262157, 7, 1441806, 262158, 7, 1, 262159, 7, 1, 262160, 7, 1, 262161, 7, 655361, 262162, 7, 655361, 262170, 7, 1048579, 262171, 7, 1048582, 327678, 7, 1441800, 327680, 7, 1441799, 327681, 7, 1048582, 327691, 7, 1441809, 327692, 7, 1441801, 327693, 7, 655363, 327694, 7, 655363, 327695, 7, 655363, 327696, 7, 655364, 327697, 7, 1048583, 327698, 7, 1441795, 327706, 7, 1048584, 393214, 7, 1441800, 393215, 7, 1048584, 393228, 7, 1441801, 393229, 7, 655368, 393230, 7, 655368, 393231, 7, 655368, 393232, 7, 655369, 393234, 7, 1441794, 393242, 7, 1048584, 458750, 7, 1441800, 458751, 7, 1048584, 458764, 7, 1441800, 458768, 7, 655361, 458769, 7, 655361, 458771, 7, 1048578, 458772, 7, 1048583, 458773, 7, 1048583, 458774, 7, 1048583, 458775, 7, 1048583, 458776, 7, 1048583, 458777, 7, 1048583, 458778, 7, 1048582, 524286, 7, 1441798, 524287, 7, 1048582, 524300, 7, 1441798, 524301, 7, 1441799, 524302, 7, 1441799, 524303, 7, 1441799, 524304, 7, 1441799, 524305, 7, 1441799, 524306, 7, 1441799, 524307, 7, 1048582, -65532, 7, 1048579, -65531, 7, 1048583, -65530, 7, 10, -65529, 7, 1441799, -65528, 7, 1441799, -65527, 7, 1441799, -65526, 7, 1441799, -65525, 7, 4, -65509, 7, 1048579, -65508, 7, 1441799, -65507, 7, 1441799, -65506, 7, 1441799, -65505, 7, 1441799, -65504, 7, 1441799, -65503, 7, 1441799, -65502, 7, 1441799, -65501, 7, 1441795, 2, 8, 3, 3, 8, 3, 4, 8, 1048585, 12, 8, 1441800, 27, 8, 1048584, 35, 8, 1441800, 40, 8, 655369, 65534, 8, 1441800, 65537, 8, 1048579, 65538, 8, 6, 65539, 8, 6, 65540, 8, 1048581, 65548, 8, 1441800, 65563, 8, 1048584, 65571, 8, 1441798, 65572, 8, 7, 65573, 8, 7, 65574, 8, 7, 65575, 8, 7, 65576, 8, 655365, 131070, 8, 1441800, 131073, 8, 1048584, 131084, 8, 1441796, 131088, 8, 1048579, 131089, 8, 7, 131090, 8, 7, 131091, 8, 1441795, 131099, 8, 1048584, 196606, 8, 1441800, 196609, 8, 1048584, 196620, 8, 1441801, 196624, 8, 1048584, 196627, 8, 1441800, 196635, 8, 1048584, 262142, 8, 1441800, 262145, 8, 1048584, 262156, 8, 1441800, 262161, 8, 655361, 262162, 8, 655361, 262170, 8, 1048579, 262171, 8, 1048582, 327678, 8, 1441800, 327680, 8, 1441799, 327681, 8, 1048582, 327692, 8, 1441800, 327695, 8, 3, 327696, 8, 1048580, 327697, 8, 1048583, 327698, 8, 1441795, 327706, 8, 1048584, 393214, 8, 1441800, 393215, 8, 1048584, 393228, 8, 1441800, 393231, 8, 8, 393232, 8, 1048585, 393234, 8, 1441794, 393242, 8, 1048584, 458750, 8, 1441800, 458751, 8, 1048584, 458764, 8, 9, 458769, 8, 655361, 458771, 8, 1048578, 458772, 8, 1048583, 458773, 8, 1048583, 458774, 8, 1048583, 458775, 8, 1048583, 458776, 8, 1048583, 458777, 8, 1048583, 458778, 8, 1048582, 524286, 8, 1441798, 524287, 8, 1048582, 524300, 8, 5, 524301, 8, 1441799, 524302, 8, 1441799, 524303, 8, 1441799, 524304, 8, 1441799, 524305, 8, 1441799, 524306, 8, 1441799, 524307, 8, 1048582, -65534, 8, 3, -65533, 8, 3, -65532, 8, 1048580, -65531, 8, 655367, -65530, 8, 655367, -65529, 8, 655367, -65528, 8, 1441799, -65527, 8, 1441799, -65526, 8, 1441799, -65525, 8, 655367, -65524, 8, 1441795, -65509, 8, 1048579, -65508, 8, 1441799, -65507, 8, 1441799, -65506, 8, 1441799, -65505, 8, 1441799, -65504, 8, 1441799, -65503, 8, 1441799, -65502, 8, 1441799, -65501, 8, 1441795, 1, 9, 1048579, 2, 9, 5, 3, 9, 1048581, 8, 9, 11, 12, 9, 1441800, 27, 9, 1048584, 35, 9, 1441800, 40, 9, 1048584, 65534, 9, 1441800, 65537, 9, 1048578, 65544, 9, 12, 65548, 9, 1441800, 65563, 9, 1048584, 65570, 9, 1441809, 65571, 9, 1441801, 65572, 9, 655363, 65573, 9, 655363, 65574, 9, 655363, 65575, 9, 655363, 65576, 9, 655364, 131070, 9, 1441800, 131073, 9, 1048578, 131080, 9, 1048588, 131084, 9, 1441800, 131088, 9, 1048579, 131089, 9, 7, 131090, 9, 7, 131091, 9, 1441795, 131099, 9, 1048584, 131107, 9, 1441797, 131108, 9, 655366, 131109, 9, 655366, 131110, 9, 655366, 131111, 9, 655366, 131112, 9, 655365, 196606, 9, 1441800, 196609, 9, 1048578, 196616, 9, 1048588, 196620, 9, 1441800, 196624, 9, 1048584, 196627, 9, 1441800, 196635, 9, 1048584, 262142, 9, 1441800, 262145, 9, 1048578, 262152, 9, 1048589, 262156, 9, 1441800, 262161, 9, 655361, 262162, 9, 655361, 262169, 9, 3, 262170, 9, 1048580, 262171, 9, 1048582, 327678, 9, 1441800, 327680, 9, 655368, 327681, 9, 655369, 327682, 9, 1048592, 327692, 9, 1441800, 327694, 9, 1048579, 327695, 9, 1441799, 327696, 9, 1441799, 327697, 9, 1441799, 327698, 9, 1441795, 327705, 9, 8, 327706, 9, 1048585, 393214, 9, 1441800, 393216, 9, 655368, 393217, 9, 655369, 393228, 9, 1441800, 393230, 9, 1048584, 393234, 9, 1441794, 393241, 9, 8, 393242, 9, 1048585, 458750, 9, 1441800, 458752, 9, 655366, 458753, 9, 655365, 458764, 9, 1441798, 458765, 9, 1441795, 458767, 9, 655361, 458768, 9, 655361, 458769, 9, 655361, 458771, 9, 1048578, 458772, 9, 1048583, 458773, 9, 1048583, 458774, 9, 1048583, 458775, 9, 1048583, 458776, 9, 1048583, 458777, 9, 6, 458778, 9, 1048581, 524286, 9, 1441798, 524287, 9, 655367, 524301, 9, 1441798, 524302, 9, 1441799, 524303, 9, 1441799, 524304, 9, 1441799, 524305, 9, 1441799, 524306, 9, 1441799, 524307, 9, 1048582, -65535, 9, 1048584, -65534, 9, 4, -65533, 9, 1048580, -65532, 9, 7, -65531, 9, 7, -65530, 9, 7, -65529, 9, 7, -65528, 9, 10, -65527, 9, 1441799, -65526, 9, 1441799, -65525, 9, 655367, -65524, 9, 1441795, -65509, 9, 1048579, -65508, 9, 1441799, -65507, 9, 1441799, -65506, 9, 1441799, -65505, 9, 1441799, -65504, 9, 1441799, -65503, 9, 1441799, -65502, 9, 1441799, -65501, 9, 1441795, 1, 10, 1048578, 12, 10, 1441800, 26, 10, 8, 27, 10, 1048585, 35, 10, 1441800, 40, 10, 1048584, 65534, 10, 1441800, 65537, 10, 1048578, 65548, 10, 1441800, 65561, 10, 3, 65562, 10, 3, 65563, 10, 1048585, 65571, 10, 1441800, 65576, 10, 1048584, 131070, 10, 1441800, 131073, 10, 1048578, 131084, 10, 1441800, 131088, 10, 1048580, 131089, 10, 1048583, 131090, 10, 1048583, 131091, 10, 4, 131097, 10, 8, 131098, 10, 8, 131099, 10, 1048585, 131106, 10, 1441809, 131107, 10, 1441801, 131108, 10, 655363, 131109, 10, 655363, 131110, 10, 655363, 131111, 10, 655363, 131112, 10, 655364, 196606, 10, 1441800, 196609, 10, 537919490, 196620, 10, 1441800, 196624, 10, 1048585, 196627, 10, 9, 196633, 10, 8, 196634, 10, 8, 196635, 10, 1048585, 196643, 10, 1441797, 196644, 10, 655366, 196645, 10, 655366, 196646, 10, 655366, 196647, 10, 655366, 196648, 10, 655365, 262142, 10, 1441800, 262145, 10, 1048578, 262156, 10, 1441800, 262161, 10, 1, 262162, 10, 1, 262168, 10, 1048579, 262169, 10, 6, 262170, 10, 6, 262171, 10, 1048581, 327678, 10, 1441800, 327681, 10, 1048578, 327685, 10, 655377, 327689, 10, 655376, 327692, 10, 1441800, 327694, 10, 1048579, 327695, 10, 1441799, 327696, 10, 1441796, 327697, 10, 655363, 327704, 10, 1048584, 393214, 10, 1441800, 393217, 10, 1048584, 393228, 10, 1441800, 393230, 10, 1048584, 393232, 10, 1441801, 393233, 10, 655362, 393240, 10, 1048584, 458750, 10, 1441800, 458752, 10, 6, 458753, 10, 1048582, 458764, 10, 1441798, 458765, 10, 4, 458766, 10, 3, 458767, 10, 14, 458768, 10, 3, 458769, 10, 8, 458770, 10, 8, 458771, 10, 1048585, 458772, 10, 1048583, 458773, 10, 1048583, 458774, 10, 1048583, 458775, 10, 1048583, 458776, 10, 1048582, 524286, 10, 1441798, 524287, 10, 655367, 524301, 10, 5, 524302, 10, 6, 524303, 10, 6, 524304, 10, 6, 524305, 10, 6, 524306, 10, 6, 524307, 10, 1048581, -65535, 10, 1048579, -65534, 10, 1048583, -65533, 10, 7, -65532, 10, 7, -65531, 10, 7, -65530, 10, 7, -65529, 10, 7, -65528, 10, 655367, -65527, 10, 537526279, -65526, 10, 537526279, -65525, 10, 537526279, -65524, 10, 1441795, -65511, 10, 536870915, -65510, 10, 3, -65509, 10, 537919492, -65508, 10, 7, -65507, 10, 536870919, -65506, 10, 7, -65505, 10, 536870919, -65504, 10, 7, -65503, 10, 1073741831, -65502, 10, 1441799, -65501, 10, 1441795, 2, 11, 655368, 3, 11, 655368, 4, 11, 655368, 5, 11, 655368, 6, 11, 655368, 7, 11, 537526280, 8, 11, 1074397192, 9, 11, 537526280, 10, 11, 537526280, 11, 11, 655368, 21, 11, 8, 22, 11, 536870920, 23, 11, 8, 24, 11, 537919497, 25, 11, 1441801, 26, 11, 655369, 35, 11, 1441800, 40, 11, 537919496, 65534, 11, 1441800, 65538, 11, 537526280, 65539, 11, 655368, 65540, 11, 1074397192, 65541, 11, 655368, 65542, 11, 537526280, 65543, 11, 655368, 65544, 11, 537526280, 65545, 11, 655368, 65546, 11, 655368, 65547, 11, 655368, 65549, 11, 8, 65550, 11, 536870920, 65551, 11, 536870920, 65552, 11, 8, 65553, 11, 8, 65554, 11, 8, 65555, 11, 536870920, 65556, 11, 8, 65557, 11, 536870920, 65558, 11, 8, 65559, 11, 536870920, 65560, 11, 1048585, 65561, 11, 538312709, 65562, 11, 655365, 65571, 11, 538312712, 65576, 11, 1048584, 131070, 11, 538312712, 131074, 11, -536215544, 131075, 11, 1074397192, 131076, 11, 537526280, 131077, 11, 655368, 131078, 11, 655368, 131079, 11, 655368, 131080, 11, 537526280, 131081, 11, 1074397192, 131082, 11, 537526280, 131083, 11, 537526280, 131085, 11, 8, 131086, 11, 8, 131087, 11, 537919497, 131088, 11, 6, 131089, 11, 536870918, 131090, 11, 6, 131091, 11, 6, 131092, 11, 536870921, 131093, 11, 8, 131094, 11, 536870920, 131095, 11, 8, 131096, 11, 537919497, 131107, 11, 1441800, 131112, 11, 1074790408, 196606, 11, 1441800, 196610, 11, 655368, 196611, 11, 655368, 196612, 11, 537526280, 196613, 11, -536215544, 196614, 11, 655368, 196615, 11, 655368, 196616, 11, 655368, 196617, 11, 537526280, 196618, 11, 537526280, 196619, 11, 655368, 196621, 11, 8, 196622, 11, 536870920, 196623, 11, 1048585, 196628, 11, 536870921, 196629, 11, 8, 196630, 11, 536870920, 196631, 11, 8, 196632, 11, 1048585, 196642, 11, 1441809, 196643, 11, 538312713, 196644, 11, 655363, 196645, 11, 537526275, 196646, 11, 655363, 196647, 11, 1074397187, 196648, 11, 655364, 262142, 11, 538312712, 262146, 11, 537526280, 262147, 11, 655368, 262148, 11, 655368, 262149, 11, 655368, 262150, 11, 655368, 262151, 11, 537526280, 262152, 11, 1074397192, 262153, 11, 655368, 262154, 11, 655368, 262155, 11, 655368, 262157, 11, 8, 262158, 11, 536870920, 262159, 11, 8, 262160, 11, 536870926, 262161, 11, 14, 262162, 11, 14, 262163, 11, 536870926, 262164, 11, 8, 262165, 11, 536870920, 262166, 11, 8, 262167, 11, 1073741832, 262168, 11, -535822327, 262179, 11, 538312709, 262180, 11, 655366, 262181, 11, 537526278, 262182, 11, 655366, 262183, 11, 655366, 262184, 11, 655365, 327678, 11, 1441800, 327682, 11, 537526274, 327683, 11, 537526274, 327684, 11, -536215550, 327685, 11, 655369, 327686, 11, 655366, 327687, 11, 655366, 327688, 11, 655366, 327689, 11, 1441801, 327690, 11, -536215544, 327691, 11, 655368, 327693, 11, 8, 327694, 11, 1048585, 327695, 11, 6, 327696, 11, 9, 327697, 11, 8, 327698, 11, 8, 327699, 11, 8, 327700, 11, 8, 327701, 11, 8, 327702, 11, -536870904, 327703, 11, 8, 327704, 11, 1048585, 393214, 11, 1441800, 393218, 11, 655362, 393219, 11, 655362, 393220, 11, 655362, 393221, 11, 655369, 393225, 11, 1441801, 393226, 11, 655368, 393227, 11, 655368, 393229, 11, 8, 393230, 11, 1048585, 393232, 11, 9, 393233, 11, 2, 393234, 11, 2, 393235, 11, 2, 393236, 11, 2, 393237, 11, 8, 393238, 11, 8, 393239, 11, 8, 393240, 11, 1048585, 458750, 11, 1441800, 458752, 11, 655367, 458753, 11, 655367, 458754, 11, 655366, 458755, 11, 655366, 458756, 11, 655366, 458757, 11, 655366, 458761, 11, 1441797, 458762, 11, 655366, 458763, 11, 655366, 458764, 11, 1441799, 458765, 11, 6, 458766, 11, 1048581, 458768, 11, 5, 458769, 11, 6, 458770, 11, 6, 458771, 11, 6, 458772, 11, 6, 458773, 11, -536870906, 458774, 11, 6, 458775, 11, 6, 458776, 11, 1048581, 524286, 11, 1441798, 524287, 11, 655367, -65534, 11, 655363, -65533, 11, 655363, -65532, 11, -536215549, -65531, 11, 655363, -65530, 11, 655363, -65529, 11, 655363, -65528, 11, 1074397187, -65527, 11, 655363, -65526, 11, 655363, -65525, 11, 655363, -65512, 11, 1048580, -65511, 11, 1441796, -65510, 11, 655364, -65509, 11, 7, -65508, 11, 7, -65507, 11, 7, -65506, 11, 7, -65505, 11, 7, -65504, 11, 7, -65503, 11, 7, -65502, 11, 7, -65501, 11, 1441795, 21, 12, 15, 23, 12, 1048582, 25, 12, 9, 26, 12, 1048585, 35, 12, 1441800, 40, 12, 1048584, 65534, 12, 538312712, 65548, 12, 1048584, 65549, 12, 1048583, 65550, 12, 1048583, 65551, 12, 1074790407, 65552, 12, 1048583, 65553, 12, 1048583, 65554, 12, 1048583, 65555, 12, 1048583, 65556, 12, 1048583, 65561, 12, 1073741829, 65562, 12, 1048581, 65571, 12, 538312712, 65576, 12, 1048584, 131070, 12, 1441800, 131084, 12, 1048584, 131087, 12, 16, 131092, 12, 17, 131107, 12, 1441800, 131112, 12, 1048584, 196606, 12, 1441800, 196620, 12, 1048584, 196643, 12, 1075183624, 196648, 12, 1048584, 262142, 12, 1441800, 262156, 12, 1048584, 262178, 12, 1441809, 262179, 12, 1441801, 262180, 12, 537526275, 262181, 12, 655363, 262182, 12, 655363, 262183, 12, 655363, 262184, 12, 1074397188, 327678, 12, 1441800, 327686, 12, 537526275, 327687, 12, 655363, 327688, 12, 655363, 327692, 12, 1048584, 327694, 12, 1073741840, 327696, 12, 17, 327715, 12, 1441797, 327716, 12, 655366, 327717, 12, 655366, 327718, 12, 655366, 327719, 12, 1074397190, 327720, 12, 655365, 393214, 12, 1441800, 393222, 12, 655368, 393223, 12, 655368, 393224, 12, 655368, 393228, 12, 1074790408, 458750, 12, 538312712, 458752, 12, 537526279, 458753, 12, 655367, 458754, 12, 655367, 458755, 12, 655367, 458756, 12, 1074397191, 458757, 12, 655367, 458758, 12, 537526278, 458759, 12, 655366, 458760, 12, 655366, 458761, 12, 1441799, 458762, 12, 538312711, 458763, 12, 1441799, 458764, 12, 655366, 524286, 12, 1441798, 524287, 12, 655367, -65513, 12, 1048579, -65512, 12, 7, -65511, 12, 4, -65510, 12, 1048580, -65509, 12, 7, -65508, 12, 7, -65507, 12, 7, -65506, 12, 536870919, -65505, 12, 7, -65504, 12, 7, -65503, 12, 7, -65502, 12, 7, -65501, 12, 1441795, 21, 13, 1073741839, 23, 13, 1048582, 28, 13, 1441801, 29, 13, 655369, 35, 13, 1441800, 38, 13, 8, 39, 13, 536870920, 40, 13, 1048585, 65534, 13, 538312712, 65548, 13, 1048584, 65549, 13, 1048583, 65550, 13, 1048583, 65551, 13, 1074790407, 65552, 13, 1048583, 65553, 13, 537919495, 65554, 13, 1048583, 65555, 13, 1048583, 65556, 13, 1048583, 65564, 13, 538312713, 65565, 13, 655369, 65571, 13, 1441800, 65574, 13, 8, 65575, 13, 8, 65576, 13, 1048585, 131070, 13, 1075183624, 131084, 13, 1048584, 131100, 13, 1441797, 131101, 13, 655365, 131107, 13, 1441800, 131110, 13, 8, 131111, 13, 536870920, 131112, 13, 1048585, 196606, 13, 538312712, 196620, 13, 1048584, 196643, 13, 1441800, 196646, 13, 8, 196647, 13, 8, 196648, 13, 1048585, 262142, 13, 1441800, 262156, 13, 1048584, 262179, 13, 1441800, 262182, 13, 8, 262183, 13, 536870920, 262184, 13, 1048585, 327678, 13, 538312712, 327692, 13, 1048584, 327715, 13, 1441798, 327716, 13, 7, 327717, 13, 1073741831, 327718, 13, 6, 327719, 13, 536870918, 327720, 13, 1048581, 393214, 13, 1441800, 393228, 13, 1048584, 458750, 13, 538312712, 458752, 13, 655367, 458753, 13, 655367, 458754, 13, 655367, 458755, 13, 655367, 458756, 13, 655367, 458757, 13, 1074397191, 458758, 13, 655367, 458759, 13, 655367, 458760, 13, 655367, 458761, 13, 655367, 458762, 13, 1441799, 458763, 13, 538312711, 458764, 13, 655366, 524286, 13, 1441798, 524287, 13, 655367, -65513, 13, 1048579, -65512, 13, 7, -65511, 13, 1073741831, -65510, 13, 7, -65509, 13, 7, -65508, 13, 1441796, -65507, 13, 655364, -65506, 13, 7, -65505, 13, 536870919, -65504, 13, 7, -65503, 13, 536870919, -65502, 13, 7, -65501, 13, 1441795, 21, 14, 15, 23, 14, 1048582, 28, 14, 9, 29, 14, 537919497, 35, 14, 1441800, 37, 14, 1048584, 65534, 14, 1441800, 65548, 14, 537919496, 65549, 14, 1048583, 65550, 14, 1048583, 65551, 14, 1048583, 65552, 14, 1048583, 65553, 14, 655373, 65554, 14, 1074397197, 65555, 14, 1048583, 65556, 14, 1048583, 65564, 14, 9, 65565, 14, 1048585, 65571, 14, 1441800, 65573, 14, 1048584, 131070, 14, 1441800, 131084, 14, 1074790408, 131090, 14, 655373, 131100, 14, 5, 131101, 14, 1048581, 131107, 14, 1075183624, 131109, 14, 1048584, 196606, 14, 1441800, 196620, 14, 1048584, 196643, 14, 1441800, 196645, 14, 1048584, 262142, 14, 1441800, 262156, 14, 1048584, 262179, 14, 1441800, 262181, 14, 1048584, 327678, 14, 1441800, 327692, 14, 1048584, 327715, 14, 1075183622, 327716, 14, 7, 327717, 14, 1048582, 393214, 14, 1441800, 393228, 14, 1048584, 458750, 14, 1441800, 458752, 14, 1074397191, 458753, 14, 655367, 458754, 14, 655367, 458755, 14, 655367, 458756, 14, 655367, 458757, 14, 655367, 458758, 14, 1074397191, 458759, 14, 655367, 458760, 14, 655367, 458761, 14, 655367, 458762, 14, 1441799, 458763, 14, 1441799, 458764, 14, 1074397190, 524286, 14, 1441798, 524287, 14, 655367, -65513, 14, 1048579, -65512, 14, 7, -65511, 14, 7, -65510, 14, 1073741831, -65509, 14, 7, -65508, 14, 4, -65507, 14, 1048580, -65506, 14, 7, -65505, 14, 7, -65504, 14, 1073741831, -65503, 14, 7, -65502, 14, 1073741831, -65501, 14, 1441795, 21, 15, 655368, 22, 15, 655368, 23, 15, 1074397192, 24, 15, 655369, 31, 15, 538312713, 32, 15, 655369, 35, 15, 1441800, 37, 15, 1048584, 65534, 15, 1441800, 65548, 15, 1048584, 65549, 15, 537526280, 65550, 15, 655368, 65551, 15, 655368, 65552, 15, 655368, 65553, 15, 1074397192, 65554, 15, 655368, 65555, 15, 655368, 65556, 15, 655368, 65557, 15, 655368, 65558, 15, 655368, 65559, 15, 1074397192, 65560, 15, 655369, 65567, 15, 1441801, 65568, 15, 655369, 65571, 15, 1441800, 65573, 15, 1048584, 131070, 15, 1075183624, 131084, 15, 1048584, 131085, 15, 655368, 131086, 15, 655368, 131087, 15, 655368, 131088, 15, 655368, 131089, 15, 1074397192, 131090, 15, 655368, 131091, 15, 655368, 131092, 15, 655368, 131093, 15, 655368, 131094, 15, 655368, 131095, 15, 1074397192, 131096, 15, 655369, 131103, 15, 1075183625, 131104, 15, 655369, 131107, 15, 1441800, 131109, 15, 1048584, 196606, 15, 1075183624, 196620, 15, 1048584, 196621, 15, 655368, 196622, 15, 655368, 196623, 15, 655368, 196624, 15, 655368, 196625, 15, 1074397192, 196626, 15, 655368, 196627, 15, 1074397192, 196628, 15, 655368, 196629, 15, 655368, 196630, 15, 655368, 196631, 15, 655368, 196632, 15, 655369, 196639, 15, 1441797, 196640, 15, 655365, 196643, 15, 1441800, 196645, 15, 1048584, 262142, 15, 1075183624, 262156, 15, 1048584, 262157, 15, 537526280, 262158, 15, 655368, 262159, 15, 655368, 262160, 15, 655368, 262161, 15, 1074397192, 262162, 15, 655368, 262163, 15, 537526280, 262164, 15, 655368, 262165, 15, 655368, 262166, 15, 655368, 262167, 15, 1074397192, 262168, 15, 655369, 262179, 15, 1441800, 262181, 15, 1048584, 327678, 15, 1441800, 327692, 15, 1048584, 327693, 15, 1074397192, 327694, 15, 655368, 327695, 15, 537526280, 327696, 15, 655368, 327697, 15, 655368, 327698, 15, 655368, 327699, 15, 1075052553, 327700, 15, 655366, 327701, 15, 537526278, 327702, 15, 655366, 327703, 15, 655366, 327704, 15, 655365, 327715, 15, 1075183622, 327716, 15, 7, 327717, 15, 1048582, 393214, 15, 1441800, 393228, 15, 1048584, 393229, 15, 655368, 393230, 15, 1074397192, 393231, 15, 655368, 393232, 15, 655368, 393233, 15, 655368, 393234, 15, 655368, 393235, 15, 1310729, 458750, 15, 1441800, 458752, 15, 655367, 458753, 15, 655367, 458754, 15, 655367, 458755, 15, 655367, 458756, 15, 655367, 458757, 15, 1074397191, 458758, 15, 655367, 458759, 15, 655367, 458760, 15, 655367, 458761, 15, 655367, 458762, 15, 1441799, 458763, 15, 1075183623, 458764, 15, 655366, 458765, 15, 537526278, 458766, 15, 655366, 458767, 15, 655366, 458768, 15, 655366, 458769, 15, 1074397190, 458770, 15, 655366, 458771, 15, 655365, 524286, 15, 1441798, 524287, 15, 655367, -65512, 15, 655364, -65511, 15, 1073741831, -65510, 15, 7, -65509, 15, 7, -65508, 15, 7, -65507, 15, 7, -65506, 15, 7, -65505, 15, 1075183620, -65504, 15, 655364, -65503, 15, 536870919, -65502, 15, 7, -65501, 15, 1441795, 25, 16, 655369, 31, 16, 536870921, 32, 16, 1048585, 34, 16, 1441801, 37, 16, 1048584, 65534, 16, 538312712, 65548, 16, 1048584, 65561, 16, 537526281, 65567, 16, 9, 65568, 16, 1048585, 65570, 16, 1441801, 65573, 16, 1074790408, 131070, 16, 1441800, 131084, 16, 537919496, 131097, 16, 655369, 131103, 16, 9, 131104, 16, 1048585, 131106, 16, 538312713, 131109, 16, 1048584, 196606, 16, 1441800, 196620, 16, 1048584, 196633, 16, 655369, 196639, 16, 5, 196640, 16, 1048581, 196642, 16, 1441801, 196645, 16, 1048584, 262142, 16, 1441800, 262156, 16, 1048584, 262169, 16, 655369, 262178, 16, 538312713, 262181, 16, 1048584, 327678, 16, 1075183624, 327692, 16, 1048584, 327699, 16, 1048584, 327700, 16, 1048583, 327701, 16, 1074790407, 327702, 16, 1048583, 327703, 16, 537919495, 327704, 16, 1048583, 327705, 16, 655365, 327714, 16, 1441797, 327715, 16, 536870919, 327716, 16, 7, 327717, 16, 537919494, 393214, 16, 1441800, 393228, 16, 1048584, 393235, 16, 1048584, 458750, 16, 1075183624, 458752, 16, 655367, 458753, 16, 655367, 458754, 16, 655367, 458755, 16, 655367, 458756, 16, 655367, 458757, 16, 537526279, 458758, 16, 655367, 458759, 16, 655367, 458760, 16, 655367, 458761, 16, 655367, 458762, 16, 1441799, 458763, 16, 1075183623, 458764, 16, 655366, 458765, 16, 1073741831, 458766, 16, 7, 458767, 16, 7, 458768, 16, 7, 458769, 16, 536870919, 458770, 16, 7, 458771, 16, 1048582, 524286, 16, 1441798, 524287, 16, 655367, -65511, 16, 655364, -65510, 16, 7, -65509, 16, 7, -65508, 16, 536870919, -65507, 16, 7, -65506, 16, 7, -65505, 16, 4, -65504, 16, 537919492, -65503, 16, 7, -65502, 16, 538312708, 0, 17, 8, 1, 17, 8, 2, 17, 8, 3, 17, 1073741832, 4, 17, 8, 5, 17, 8, 6, 17, 8, 7, 17, 8, 8, 17, 8, 9, 17, 536870920, 10, 17, 8, 11, 17, 8, 12, 17, 8, 13, 17, 8, 14, 17, 8, 15, 17, 1073741832, 16, 17, 8, 17, 17, 8, 18, 17, 8, 19, 17, 8, 20, 17, 8, 21, 17, 536870920, 22, 17, 8, 25, 17, 1048584, 34, 17, 1441800, 37, 17, 1048584, 65534, 17, 9, 65535, 17, 1073741832, 65536, 17, 8, 65537, 17, 536870920, 65538, 17, 8, 65539, 17, 8, 65540, 17, 8, 65541, 17, 536870920, 65542, 17, 8, 65543, 17, 536870920, 65544, 17, 8, 65545, 17, 8, 65546, 17, 8, 65547, 17, 8, 65548, 17, 8, 65549, 17, 8, 65550, 17, 8, 65551, 17, 8, 65552, 17, 8, 65553, 17, 536870920, 65554, 17, 8, 65555, 17, 536870920, 65556, 17, 8, 65557, 17, 8, 65558, 17, 8, 65561, 17, 1074790408, 65570, 17, 1441800, 65573, 17, 1048584, 131070, 17, 9, 131071, 17, 8, 131072, 17, 8, 131073, 17, 536870920, 131074, 17, 8, 131075, 17, 536870920, 131076, 17, 8, 131077, 17, 8, 131078, 17, 8, 131079, 17, 1073741832, 131080, 17, 8, 131081, 17, 536870920, 131082, 17, 8, 131083, 17, 8, 131084, 17, 8, 131085, 17, 536870920, 131086, 17, 8, 131087, 17, 8, 131088, 17, 8, 131089, 17, 8, 131090, 17, 8, 131091, 17, 1073741832, 131092, 17, 8, 131093, 17, 8, 131094, 17, 8, 131097, 17, 1048584, 131106, 17, 1441800, 131109, 17, 537919496, 196606, 17, 9, 196607, 17, 536870920, 196608, 17, 8, 196609, 17, 8, 196610, 17, 8, 196611, 17, 8, 196612, 17, 8, 196613, 17, 8, 196614, 17, 8, 196615, 17, 8, 196616, 17, 8, 196617, 17, 536870920, 196618, 17, 8, 196619, 17, 536870920, 196620, 17, 8, 196621, 17, 8, 196622, 17, 8, 196623, 17, 1073741832, 196624, 17, 8, 196625, 17, 536870920, 196626, 17, 8, 196627, 17, 8, 196628, 17, 8, 196629, 17, 536870920, 196630, 17, 8, 196633, 17, 1048584, 196642, 17, 1441800, 196645, 17, 1048584, 262142, 17, 9, 262143, 17, 1073741832, 262144, 17, 8, 262145, 17, 8, 262146, 17, 8, 262147, 17, 8, 262148, 17, 8, 262149, 17, 536870920, 262150, 17, 8, 262151, 17, 536870920, 262152, 17, 8, 262153, 17, 8, 262154, 17, 8, 262155, 17, 1073741832, 262156, 17, 8, 262157, 17, 8, 262158, 17, 8, 262159, 17, 8, 262160, 17, 8, 262161, 17, 536870920, 262162, 17, 8, 262163, 17, 536870920, 262164, 17, 8, 262165, 17, 8, 262166, 17, 8, 262169, 17, 1048584, 262178, 17, 1441800, 262181, 17, 537919496, 327678, 17, 9, 327679, 17, 8, 327680, 17, 8, 327681, 17, 536870920, 327682, 17, 8, 327683, 17, 8, 327684, 17, 8, 327685, 17, 8, 327686, 17, 8, 327687, 17, 1073741832, 327688, 17, 8, 327689, 17, 8, 327690, 17, 8, 327691, 17, 8, 327692, 17, 8, 327693, 17, 8, 327694, 17, 8, 327695, 17, 8, 327696, 17, 8, 327697, 17, 8, 327698, 17, 8, 327699, 17, 1048580, 327700, 17, 6, 327701, 17, 6, 327702, 17, 6, 327703, 17, 1048583, 327704, 17, 1048583, 327705, 17, 1048582, 327714, 17, 1441798, 327715, 17, 7, 327716, 17, 7, 327717, 17, 1048582, 393214, 17, 9, 393215, 17, 8, 393216, 17, 8, 393217, 17, 8, 393218, 17, 8, 393219, 17, 8, 393220, 17, 8, 393221, 17, 8, 393222, 17, 8, 393223, 17, 8, 393224, 17, 8, 393225, 17, 8, 393226, 17, 8, 393227, 17, 8, 393228, 17, 8, 393229, 17, 8, 393230, 17, 8, 393231, 17, 8, 393232, 17, 8, 393233, 17, 8, 393234, 17, 8, 393235, 17, 1048585, 458750, 17, 9, 458751, 17, 8, 458752, 17, 6, 458753, 17, 6, 458754, 17, 6, 458755, 17, 6, 458756, 17, 6, 458757, 17, 6, 458758, 17, 6, 458759, 17, 6, 458760, 17, 6, 458761, 17, 6, 458762, 17, 6, 458763, 17, 6, 458764, 17, 6, 458765, 17, 6, 458766, 17, 6, 458767, 17, 6, 458768, 17, 6, 458769, 17, 6, 458770, 17, 6, 458771, 17, 1048581, 524286, 17, 5, 524287, 17, 6, -65511, 17, 1048579, -65510, 17, 7, -65509, 17, 7, -65508, 17, 7, -65507, 17, 7, -65506, 17, 7, -65505, 17, 7, -65504, 17, 7, -65503, 17, 7, -65502, 17, 1441795, 23, 18, 1441800, 26, 18, 655368, 27, 18, 655368, 28, 18, 655368, 29, 18, 655368, 30, 18, 655368, 31, 18, 655368, 32, 18, 655368, 33, 18, 655368, 37, 18, 1048584, 65559, 18, 1441800, 65562, 18, 655368, 65563, 18, 655368, 65564, 18, 655368, 65565, 18, 655368, 65566, 18, 655368, 65567, 18, 655368, 65568, 18, 655368, 65569, 18, 655368, 65573, 18, 1048584, 131095, 18, 1441800, 131098, 18, 655368, 131099, 18, 655368, 131100, 18, 655368, 131101, 18, 655368, 131102, 18, 655368, 131103, 18, 655368, 131104, 18, 655368, 131105, 18, 655368, 131109, 18, 1048584, 196631, 18, 1441800, 196634, 18, 655368, 196635, 18, 655368, 196636, 18, 655368, 196637, 18, 655368, 196638, 18, 655368, 196639, 18, 655368, 196640, 18, 655368, 196641, 18, 655368, 196645, 18, 1048584, 262167, 18, 1441800, 262170, 18, 655368, 262171, 18, 655368, 262172, 18, 655368, 262173, 18, 655368, 262174, 18, 655368, 262175, 18, 655368, 262176, 18, 655368, 262177, 18, 655368, 262181, 18, 1048584, 327703, 18, 1441798, 327704, 18, 1048583, 327705, 18, 1048583, 327706, 18, 655366, 327707, 18, 655366, 327708, 18, 655366, 327709, 18, 655366, 327710, 18, 655366, 327711, 18, 655366, 327712, 18, 655366, 327713, 18, 655366, 327714, 18, 1048583, 327715, 18, 7, 327716, 18, 7, 327717, 18, 1048582, -65510, 18, 655363, -65509, 18, 655363, -65508, 18, 655363, -65507, 18, 655363, -65506, 18, 655363, -65505, 18, 655363, -65504, 18, 655363, -65503, 18, 655363, 23, 19, 9, 24, 19, 8, 25, 19, 8, 26, 19, 8, 27, 19, 8, 28, 19, 8, 29, 19, 8, 30, 19, 8, 31, 19, 8, 32, 19, 8, 33, 19, 8, 34, 19, 8, 35, 19, 8, 36, 19, 8, 37, 19, 1048585, 65559, 19, 9, 65560, 19, 8, 65561, 19, 8, 65562, 19, 8, 65563, 19, 8, 65564, 19, 8, 65565, 19, 8, 65566, 19, 8, 65567, 19, 8, 65568, 19, 8, 65569, 19, 8, 65570, 19, 8, 65571, 19, 8, 65572, 19, 8, 65573, 19, 1048585, 131095, 19, 9, 131096, 19, 8, 131097, 19, 8, 131098, 19, 8, 131099, 19, 8, 131100, 19, 8, 131101, 19, 8, 131102, 19, 8, 131103, 19, 8, 131104, 19, 8, 131105, 19, 8, 131106, 19, 8, 131107, 19, 8, 131108, 19, 8, 131109, 19, 1048585, 196631, 19, 9, 196632, 19, 8, 196633, 19, 8, 196634, 19, 8, 196635, 19, 8, 196636, 19, 8, 196637, 19, 8, 196638, 19, 8, 196639, 19, 8, 196640, 19, 8, 196641, 19, 8, 196642, 19, 8, 196643, 19, 8, 196644, 19, 8, 196645, 19, 1048585, 262167, 19, 9, 262168, 19, 8, 262169, 19, 8, 262170, 19, 8, 262171, 19, 8, 262172, 19, 8, 262173, 19, 8, 262174, 19, 8, 262175, 19, 8, 262176, 19, 8, 262177, 19, 8, 262178, 19, 8, 262179, 19, 8, 262180, 19, 8, 262181, 19, 1048585, 327703, 19, 5, 327704, 19, 6, 327705, 19, 6, 327706, 19, 6, 327707, 19, 6, 327708, 19, 6, 327709, 19, 6, 327710, 19, 6, 327711, 19, 6, 327712, 19, 6, 327713, 19, 6, 327714, 19, 6, 327715, 19, 6, 327716, 19, 6, 327717, 19, 1048581, 0, 65531, 655368, 1, 65531, 655368, 2, 65531, 655368, 3, 65531, 655368, 4, 65531, 655368, 5, 65531, 655368, 6, 65531, 655368, 7, 65531, 655368, 8, 65531, 655368, 9, 65531, 655368, 10, 65531, 655368, 11, 65531, 655368, 12, 65531, 655368, 13, 65531, 655368, 14, 65531, 655369, 65534, 65531, 1441801, 65535, 65531, 655368, 65536, 65531, 655368, 65537, 65531, 655368, 65538, 65531, 655368, 65539, 65531, 655368, 65540, 65531, 655368, 65541, 65531, 655368, 65542, 65531, 655368, 65543, 65531, 655368, 65544, 65531, 655368, 65545, 65531, 655368, 65546, 65531, 655368, 65547, 65531, 655368, 65548, 65531, 655368, 65549, 65531, 655368, 65550, 65531, 655369, 131070, 65531, 1441801, 131071, 65531, 655368, 131072, 65531, 655368, 131073, 65531, 655368, 131074, 65531, 655368, 131075, 65531, 655368, 131076, 65531, 655368, 131077, 65531, 655368, 131078, 65531, 655368, 131079, 65531, 655368, 131080, 65531, 655368, 131081, 65531, 655368, 131082, 65531, 655368, 131083, 65531, 655368, 131084, 65531, 655368, 131085, 65531, 655368, 131086, 65531, 655369, 196606, 65531, 1441801, 196607, 65531, 655368, 196608, 65531, 655368, 196609, 65531, 655368, 196610, 65531, 655368, 196611, 65531, 655364, 196612, 65531, 655367, 196613, 65531, 655367, 196614, 65531, 655367, 196615, 65531, 655367, 196616, 65531, 655367, 196617, 65531, 655367, 196618, 65531, 655367, 196619, 65531, 655367, 196620, 65531, 1441796, 196621, 65531, 655368, 196622, 65531, 655369, 262142, 65531, 1441801, 262143, 65531, 655368, 262144, 65531, 655368, 262145, 65531, 655368, 262146, 65531, 655368, 262147, 65531, 655369, 262156, 65531, 1441801, 262157, 65531, 655368, 262158, 65531, 655369, 327678, 65531, 1441801, 327679, 65531, 655368, 327680, 65531, 655368, 327681, 65531, 655368, 327682, 65531, 655368, 327683, 65531, 655369, 327692, 65531, 1441801, 327693, 65531, 655368, 327694, 65531, 655369, 393214, 65531, 1441801, 393215, 65531, 655368, 393216, 65531, 655368, 393217, 65531, 655368, 393218, 65531, 655368, 393219, 65531, 655369, 393228, 65531, 1441801, 393229, 65531, 655368, 393230, 65531, 655369, 458750, 65531, 1441801, 458751, 65531, 655368, 458752, 65531, 655366, 458753, 65531, 655366, 458754, 65531, 655366, 458755, 65531, 655365, 458764, 65531, 1441801, 458765, 65531, 655368, 458766, 65531, 655369, 524286, 65531, 1441797, 524287, 65531, 655366, 524300, 65531, 1441797, 524301, 65531, 655366, 524302, 65531, 655365, 14, 65532, 1048584, 65534, 65532, 1441800, 65550, 65532, 1048584, 131070, 65532, 1441800, 131086, 65532, 1048584, 196606, 65532, 1441800, 196611, 65532, 1048579, 196612, 65532, 655367, 196613, 65532, 1441799, 196614, 65532, 1441799, 196615, 65532, 1441799, 196616, 65532, 1441799, 196617, 65532, 1441799, 196618, 65532, 1441799, 196619, 65532, 1441799, 196620, 65532, 1441795, 196622, 65532, 1048584, 262142, 65532, 1441800, 262147, 65532, 1048584, 262156, 65532, 1441800, 262158, 65532, 1048584, 327678, 65532, 1441800, 327683, 65532, 1048584, 327692, 65532, 1441800, 327694, 65532, 1048584, 393214, 65532, 1441800, 393219, 65532, 1048584, 393228, 65532, 1441800, 393230, 65532, 1048584, 458750, 65532, 1441800, 458752, 65532, 1441799, 458753, 65532, 1441799, 458754, 65532, 1441799, 458755, 65532, 1048582, 458764, 65532, 1441800, 458766, 65532, 1048584, 524286, 65532, 1441798, 524287, 65532, 1441799, 524300, 65532, 1441798, 524301, 65532, 1048583, 524302, 65532, 1048582, 15, 65533, 655368, 16, 65533, 655368, 17, 65533, 655368, 18, 65533, 655368, 19, 65533, 655369, 65534, 65533, 1441800, 65540, 65533, 3, 65551, 65533, 655368, 65552, 65533, 655368, 65553, 65533, 655368, 65554, 65533, 655368, 65555, 65533, 655369, 131070, 65533, 1441800, 131076, 65533, 2, 131077, 65533, 3, 131087, 65533, 655368, 131088, 65533, 655368, 131089, 65533, 655368, 131090, 65533, 655368, 131091, 65533, 655369, 196606, 65533, 1441800, 196611, 65533, 1048579, 196612, 65533, 6, 196613, 65533, 6, 196614, 65533, 655366, 196615, 65533, 655366, 196616, 65533, 655366, 196617, 65533, 655366, 196618, 65533, 7, 196619, 65533, 655366, 196620, 65533, 1441795, 196623, 65533, 655368, 196624, 65533, 655368, 196625, 65533, 655368, 196626, 65533, 655368, 196627, 65533, 655369, 262142, 65533, 1441800, 262147, 65533, 1048578, 262156, 65533, 1441800, 262159, 65533, 655368, 262160, 65533, 655368, 262161, 65533, 655368, 262162, 65533, 655368, 262163, 65533, 655369, 327678, 65533, 1441800, 327683, 65533, 1048584, 327692, 65533, 1441800, 327695, 65533, 655368, 327696, 65533, 655368, 327697, 65533, 655368, 327698, 65533, 655368, 327699, 65533, 655369, 393214, 65533, 1441800, 393219, 65533, 1048584, 393228, 65533, 1441800, 393231, 65533, 655368, 393232, 65533, 655368, 393233, 65533, 655368, 393234, 65533, 655368, 393235, 65533, 655369, 458750, 65533, 1441800, 458752, 65533, 1441799, 458753, 65533, 1441799, 458754, 65533, 1441799, 458755, 65533, 1048582, 458764, 65533, 1441800, 458767, 65533, 655368, 458768, 65533, 655368, 458769, 65533, 655368, 458770, 65533, 655368, 458771, 65533, 655369, 524286, 65533, 1441798, 524287, 65533, 1441799, 524300, 65533, 1441798, 524301, 65533, 655366, 524302, 65533, 655366, 524303, 65533, 655366, 524304, 65533, 655366, 524305, 65533, 655366, 524306, 65533, 655366, 524307, 65533, 655365, 19, 65534, 1048584, 65534, 65534, 1441800, 65539, 65534, 1048579, 65540, 65534, 1048583, 65541, 65534, 4, 65555, 65534, 1048584, 131070, 65534, 1441800, 131075, 65534, 1048578, 131077, 65534, 5, 131078, 65534, 4, 131091, 65534, 1048584, 196606, 65534, 1441800, 196611, 65534, 1048578, 196614, 65534, 5, 196615, 65534, 7, 196616, 65534, 655370, 196617, 65534, 7, 196618, 65534, 7, 196619, 65534, 7, 196620, 65534, 1441795, 196627, 65534, 1048584, 262142, 65534, 1441800, 262147, 65534, 1048578, 262152, 65534, 655372, 262156, 65534, 1441800, 262163, 65534, 1048584, 327678, 65534, 1441800, 327683, 65534, 1048584, 327688, 65534, 655373, 327692, 65534, 1441794, 327699, 65534, 1048584, 393214, 65534, 1441800, 393219, 65534, 1048584, 393228, 65534, 1441794, 393235, 65534, 1048584, 458750, 65534, 1441800, 458752, 65534, 1441799, 458753, 65534, 1441799, 458754, 65534, 1441799, 458755, 65534, 1048582, 458764, 65534, 1441794, 458771, 65534, 1048584, 524286, 65534, 1441798, 524287, 65534, 1441799, 524300, 65534, 1441798, 524301, 65534, 1048583, 524302, 65534, 1048583, 524303, 65534, 1048583, 524304, 65534, 1048583, 524305, 65534, 1048583, 524306, 65534, 1048583, 524307, 65534, 1048582, 4, 65535, 2, 5, 65535, 2, 6, 65535, 2, 7, 65535, 2, 8, 65535, 2, 9, 65535, 2, 10, 65535, 2, 11, 65535, 2, 19, 65535, 655368, 20, 65535, 655368, 21, 65535, 655368, 22, 65535, 655368, 23, 65535, 655368, 24, 65535, 655368, 25, 65535, 655368, 26, 65535, 655368, 27, 65535, 655368, 28, 65535, 655368, 29, 65535, 655368, 30, 65535, 655368, 31, 65535, 655368, 32, 65535, 655368, 33, 65535, 655368, 34, 65535, 655368, 35, 65535, 655368, 36, 65535, 655368, 37, 65535, 655368, 38, 65535, 655369, 65534, 65535, 1441800, 65539, 65535, 1048579, 65540, 65535, 6, 65541, 65535, 6, 65542, 65535, 9, 65543, 65535, 2, 65544, 65535, 2, 65545, 65535, 2, 65546, 65535, 2, 65547, 65535, 2, 65555, 65535, 1048584, 65556, 65535, 655366, 65557, 65535, 655366, 65558, 65535, 655366, 65559, 65535, 655366, 65560, 65535, 655366, 65561, 65535, 655366, 65562, 65535, 655366, 65563, 65535, 655366, 65564, 65535, 655366, 65565, 65535, 655366, 65566, 65535, 655366, 65567, 65535, 655366, 65568, 65535, 655366, 65569, 65535, 655366, 65570, 65535, 655366, 65571, 65535, 655366, 65572, 65535, 655366, 65573, 65535, 655366, 65574, 65535, 655365, 131070, 65535, 1441800, 131075, 65535, 1048578, 131078, 65535, 5, 131079, 65535, 9, 131080, 65535, 2, 131081, 65535, 2, 131082, 65535, 2, 131083, 65535, 2, 131091, 65535, 1048584, 196606, 65535, 1441800, 196611, 65535, 1048578, 196615, 65535, 5, 196616, 65535, 6, 196617, 65535, 6, 196618, 65535, 6, 196619, 65535, 6, 196620, 65535, 1441795, 196627, 65535, 1048584, 262142, 65535, 1441800, 262147, 65535, 1048578, 262156, 65535, 1441800, 262163, 65535, 1048584, 327678, 65535, 1441800, 327683, 65535, 1048584, 327692, 65535, 1441794, 327699, 65535, 1048584, 393214, 65535, 1441800, 393219, 65535, 1048584, 393228, 65535, 1441794, 393235, 65535, 1048584, 458750, 65535, 1441800, 458752, 65535, 1441799, 458753, 65535, 1441799, 458754, 65535, 1441799, 458755, 65535, 1048582, 458764, 65535, 1441794, 458771, 65535, 1048584, 524286, 65535, 1441798, 524287, 65535, 1441799, 524300, 65535, 1441798, 524301, 65535, 1048583, 524302, 65535, 1048583, 524303, 65535, 1048583, 524304, 65535, 1048583, 524305, 65535, 1048583, 524306, 65535, 1048583, 524307, 65535, 1048582, -65532, 65535, 3, -65531, 65535, 3, -65530, 65535, 3, -65529, 65535, 3, -65528, 65535, 3, -65527, 65535, 3, -65526, 65535, 3, -65525, 65535, 3 ) +"cells": PoolIntArray( 3, 0, 1048584, 12, 0, 1441800, 38, 0, 1048584, 65534, 0, 1441800, 65539, 0, 1048584, 65548, 0, 1441800, 65555, 0, 1048584, 65556, 0, 1048583, 65557, 0, 1048583, 65558, 0, 1048583, 65559, 0, 1048583, 65560, 0, 1048583, 65561, 0, 7, 65562, 0, 7, 65563, 0, 7, 65564, 0, 7, 65565, 0, 7, 65566, 0, 7, 65567, 0, 7, 65568, 0, 7, 65569, 0, 7, 65570, 0, 7, 65571, 0, 7, 65572, 0, 7, 65573, 0, 7, 65574, 0, 1048582, 131070, 0, 1441800, 131075, 0, 1048578, 131084, 0, 1441800, 131091, 0, 1048584, 196606, 0, 1441800, 196611, 0, 1048578, 196620, 0, 1441800, 196627, 0, 1048584, 262142, 0, 1441800, 262147, 0, 1048578, 262156, 0, 1441800, 262163, 0, 1048584, 327678, 0, 1441800, 327683, 0, 1048584, 327692, 0, 1441794, 327699, 0, 1048584, 393214, 0, 1441800, 393219, 0, 1048584, 393228, 0, 1441794, 393235, 0, 1048584, 458750, 0, 1441800, 458752, 0, 1441799, 458753, 0, 1441799, 458754, 0, 1441799, 458755, 0, 1048582, 458764, 0, 1441794, 458771, 0, 1048584, 524286, 0, 1441798, 524287, 0, 1441799, 524300, 0, 1441798, 524301, 0, 1048583, 524302, 0, 1048583, 524303, 0, 1048583, 524304, 0, 1048583, 524305, 0, 1048583, 524306, 0, 1048583, 524307, 0, 1048582, -65533, 0, 1048579, -65532, 0, 1441799, -65531, 0, 1441799, -65530, 0, 1441799, -65529, 0, 1441799, -65528, 0, 1441799, -65527, 0, 1441799, -65526, 0, 1441799, -65525, 0, 1441799, -65524, 0, 1441795, 3, 1, 1048584, 12, 1, 1441800, 29, 1, 8, 30, 1, 8, 31, 1, 8, 38, 1, 1048584, 65534, 1, 1441800, 65539, 1, 1048584, 65548, 1, 1441800, 65555, 1, 1048584, 65556, 1, 655367, 65557, 1, 655367, 65558, 1, 655367, 65559, 1, 655367, 65560, 1, 655367, 65561, 1, 655367, 65562, 1, 655367, 65563, 1, 655367, 65564, 1, 6, 65565, 1, 6, 65566, 1, 6, 65567, 1, 6, 65568, 1, 7, 65569, 1, 7, 65570, 1, 7, 65571, 1, 7, 65572, 1, 1048583, 65573, 1, 7, 65574, 1, 1048582, 131070, 1, 1441800, 131075, 1, 1048578, 131084, 1, 1441800, 131091, 1, 1048584, 196606, 1, 1441800, 196611, 1, 1048578, 196620, 1, 1441800, 196627, 1, 1048584, 262142, 1, 1441800, 262147, 1, 1048578, 262156, 1, 1441800, 262163, 1, 1048584, 327678, 1, 1441800, 327683, 1, 1048584, 327692, 1, 1441794, 327699, 1, 1048584, 393214, 1, 1441800, 393219, 1, 1048584, 393228, 1, 1441794, 393235, 1, 1048584, 458750, 1, 1441800, 458752, 1, 655367, 458753, 1, 1441799, 458754, 1, 1441799, 458755, 1, 1048582, 458764, 1, 1441794, 458771, 1, 1048584, 524286, 1, 1441798, 524287, 1, 1441799, 524300, 1, 1441798, 524301, 1, 1048583, 524302, 1, 1048583, 524303, 1, 1048583, 524304, 1, 1048583, 524305, 1, 1048583, 524306, 1, 1048583, 524307, 1, 1048582, -65533, 1, 1048579, -65532, 1, 1441799, -65531, 1, 1441799, -65530, 1, 1441799, -65529, 1, 1441799, -65528, 1, 1441799, -65527, 1, 1441799, -65526, 1, 1441799, -65525, 1, 1441799, -65524, 1, 1441795, -65507, 1, 3, -65506, 1, 3, -65505, 1, 3, 3, 2, 1048584, 5, 2, 1441797, 6, 2, 655365, 8, 2, 1441801, 9, 2, 655368, 10, 2, 655368, 11, 2, 655368, 12, 2, 1441800, 28, 2, 1048584, 32, 2, 9, 38, 2, 1048584, 65534, 2, 1441800, 65539, 2, 1048584, 65544, 2, 1441797, 65545, 2, 655366, 65546, 2, 655366, 65547, 2, 655366, 65548, 2, 1441800, 65555, 2, 1048584, 65556, 2, 655368, 65557, 2, 655368, 65558, 2, 655368, 65559, 2, 655368, 65560, 2, 655363, 65561, 2, 655363, 65562, 2, 655363, 65563, 2, 655363, 65564, 2, 655369, 65568, 2, 5, 65569, 2, 7, 65570, 2, 7, 65571, 2, 7, 65572, 2, 1048583, 65573, 2, 7, 65574, 2, 1048582, 131070, 2, 1441800, 131075, 2, 1048578, 131084, 2, 1441800, 131091, 2, 1048584, 131092, 2, 655368, 131093, 2, 655368, 131094, 2, 655368, 131095, 2, 655368, 131096, 2, 655368, 131097, 2, 655368, 131098, 2, 655368, 131099, 2, 655368, 131100, 2, 655369, 196606, 2, 1441800, 196611, 2, 1048578, 196620, 2, 1441800, 196627, 2, 1048584, 196628, 2, 655366, 196629, 2, 655366, 196630, 2, 655366, 196631, 2, 655366, 196632, 2, 655366, 196633, 2, 655366, 196634, 2, 655366, 196635, 2, 655366, 196636, 2, 655365, 262142, 2, 1441800, 262147, 2, 1048578, 262156, 2, 1441800, 262163, 2, 1048584, 327678, 2, 1441800, 327683, 2, 1048584, 327692, 2, 1441794, 327699, 2, 1048584, 393214, 2, 1441800, 393219, 2, 1048584, 393228, 2, 1441794, 393235, 2, 1048584, 458750, 2, 1441800, 458752, 2, 1441799, 458753, 2, 1441799, 458754, 2, 1441799, 458755, 2, 1048582, 458764, 2, 1441794, 458771, 2, 1048584, 524286, 2, 1441798, 524287, 2, 1441799, 524300, 2, 1441798, 524301, 2, 1048583, 524302, 2, 1048583, 524303, 2, 1048583, 524304, 2, 1048583, 524305, 2, 1048583, 524306, 2, 1048583, 524307, 2, 1048582, -65533, 2, 1048579, -65532, 2, 1048583, -65531, 2, 1441796, -65530, 2, 655364, -65529, 2, 1441799, -65528, 2, 1441796, -65527, 2, 655363, -65526, 2, 655363, -65525, 2, 655363, -65524, 2, 1441800, -65508, 2, 1048579, -65507, 2, 1441799, -65506, 2, 1441799, -65505, 2, 1441799, -65504, 2, 4, 3, 3, 1048584, 5, 3, 5, 6, 3, 1048581, 8, 3, 9, 9, 3, 8, 10, 3, 8, 11, 3, 8, 12, 3, 1441800, 28, 3, 1048585, 33, 3, 9, 38, 3, 1048584, 65534, 3, 1441800, 65539, 3, 1048584, 65544, 3, 5, 65545, 3, 6, 65546, 3, 6, 65547, 3, 6, 65548, 3, 1441800, 65555, 3, 1048584, 65564, 3, 1048585, 65569, 3, 5, 65570, 3, 7, 65571, 3, 7, 65572, 3, 1048583, 65573, 3, 7, 65574, 3, 1048582, 131070, 3, 1441800, 131075, 3, 1048578, 131084, 3, 1441800, 131091, 3, 1048584, 131100, 3, 1048585, 196606, 3, 1441800, 196611, 3, 1048578, 196620, 3, 1441800, 196627, 3, 1048584, 196628, 3, 655368, 196629, 3, 655368, 196630, 3, 655368, 196631, 3, 655368, 196632, 3, 655363, 196633, 3, 655363, 196634, 3, 655363, 196635, 3, 655364, 196636, 3, 1048581, 262142, 3, 1441800, 262147, 3, 1048578, 262156, 3, 1441800, 262163, 3, 1048584, 262164, 3, 655366, 262165, 3, 655366, 262166, 3, 655366, 262167, 3, 655366, 262168, 3, 655366, 262169, 3, 655366, 262170, 3, 655366, 262171, 3, 655365, 327678, 3, 1441800, 327683, 3, 1048584, 327692, 3, 1441794, 327699, 3, 1048584, 393214, 3, 1441800, 393219, 3, 1048584, 393228, 3, 1441794, 393235, 3, 1048584, 458750, 3, 1441800, 458752, 3, 1441799, 458753, 3, 1441799, 458754, 3, 1441799, 458755, 3, 1048582, 458764, 3, 1441794, 458771, 3, 1048578, 524286, 3, 1441798, 524287, 3, 655367, 524300, 3, 1441798, 524301, 3, 1048583, 524302, 3, 1048583, 524303, 3, 1048583, 524304, 3, 1048583, 524305, 3, 1048583, 524306, 3, 1048583, 524307, 3, 1048582, -65533, 3, 1048579, -65532, 3, 1048583, -65531, 3, 4, -65530, 3, 1048580, -65529, 3, 1441799, -65528, 3, 4, -65527, 3, 3, -65526, 3, 3, -65525, 3, 3, -65524, 3, 1441800, -65508, 3, 1048580, -65507, 3, 1441799, -65506, 3, 1441799, -65505, 3, 1441799, -65504, 3, 1441799, -65503, 3, 4, 3, 4, 1048584, 12, 4, 1441800, 27, 4, 1048584, 34, 4, 1441800, 38, 4, 1048584, 65534, 4, 1441800, 65539, 4, 1048584, 65548, 4, 1441800, 65563, 4, 1048584, 65570, 4, 1441798, 65571, 4, 7, 65572, 4, 1048583, 65573, 4, 7, 65574, 4, 1048582, 131070, 4, 1441800, 131075, 4, 1048578, 131084, 4, 9, 131085, 4, 3, 131086, 4, 3, 131087, 4, 3, 131088, 4, 3, 131089, 4, 3, 131090, 4, 3, 131099, 4, 1048584, 196606, 4, 1441800, 196611, 4, 1048578, 196620, 4, 9, 196621, 4, 8, 196622, 4, 8, 196623, 4, 8, 196624, 4, 8, 196625, 4, 8, 196626, 4, 8, 196628, 4, 655368, 196629, 4, 655368, 196630, 4, 655368, 196631, 4, 655368, 196632, 4, 655368, 196635, 4, 1048584, 262142, 4, 1441800, 262147, 4, 1048578, 262156, 4, 1441800, 262164, 4, 655368, 262165, 4, 655368, 262166, 4, 655368, 262167, 4, 655368, 262168, 4, 655363, 262169, 4, 655363, 262170, 4, 655364, 262171, 4, 1048582, 327678, 4, 1441800, 327680, 4, 8, 327681, 4, 8, 327682, 4, 8, 327683, 4, 1048585, 327691, 4, 1441808, 327692, 4, 9, 327693, 4, 3, 327694, 4, 3, 327695, 4, 3, 327696, 4, 3, 327697, 4, 3, 327700, 4, 655368, 327701, 4, 655368, 327702, 4, 655368, 327703, 4, 655368, 327704, 4, 655368, 327705, 4, 655368, 327706, 4, 655369, 393214, 4, 1441800, 393216, 4, 8, 393217, 4, 8, 393218, 4, 8, 393219, 4, 1048585, 393228, 4, 9, 393229, 4, 2, 393230, 4, 2, 393231, 4, 2, 393232, 4, 2, 393233, 4, 2, 393236, 4, 655368, 393237, 4, 655368, 393238, 4, 655368, 393239, 4, 655368, 393240, 4, 655368, 393241, 4, 655368, 393242, 4, 655369, 458750, 4, 1441800, 458752, 4, 6, 458753, 4, 6, 458754, 4, 6, 458755, 4, 1048581, 458764, 4, 1441800, 458771, 4, 1048578, 458772, 4, 655366, 458773, 4, 655366, 458774, 4, 655366, 458775, 4, 655366, 458776, 4, 655366, 458777, 4, 655366, 458778, 4, 655365, 524286, 4, 1441798, 524287, 4, 1048583, 524300, 4, 1441798, 524301, 4, 1048583, 524302, 4, 1048583, 524303, 4, 1048583, 524304, 4, 1048583, 524305, 4, 1048583, 524306, 4, 1048583, 524307, 4, 1048582, -65533, 4, 1048579, -65532, 4, 7, -65531, 4, 7, -65530, 4, 7, -65529, 4, 7, -65528, 4, 1441799, -65527, 4, 1441799, -65526, 4, 1441799, -65525, 4, 1441799, -65524, 4, 1441800, -65509, 4, 1048579, -65508, 4, 1441799, -65507, 4, 1441799, -65506, 4, 1441799, -65505, 4, 1441799, -65504, 4, 1441799, -65503, 4, 1441799, -65502, 4, 1441795, 3, 5, 1048584, 11, 5, 1441801, 27, 5, 1048584, 34, 5, 9, 38, 5, 1048584, 65534, 5, 1441800, 65538, 5, 3, 65539, 5, 1048580, 65547, 5, 1441801, 65563, 5, 1048584, 65570, 5, 5, 65571, 5, 7, 65572, 5, 7, 65573, 5, 7, 65574, 5, 1048582, 131070, 5, 1441800, 131074, 5, 2, 131075, 5, 1048585, 131083, 5, 1441797, 131084, 5, 7, 131085, 5, 7, 131086, 5, 7, 131087, 5, 7, 131088, 5, 7, 131089, 5, 7, 131090, 5, 7, 131091, 5, 1441795, 131099, 5, 1048584, 196606, 5, 1441800, 196610, 5, 2, 196611, 5, 1048585, 196627, 5, 1441800, 196635, 5, 1048584, 262142, 5, 1441800, 262146, 5, 2, 262147, 5, 1048585, 262156, 5, 1441806, 262157, 5, 1, 262158, 5, 1, 262159, 5, 1, 262160, 5, 1, 262161, 5, 655361, 262162, 5, 655361, 262170, 5, 1048579, 262171, 5, 1048582, 327678, 5, 1441800, 327680, 5, 1048583, 327681, 5, 1441798, 327682, 5, 6, 327683, 5, 1048581, 327692, 5, 1441798, 327693, 5, 7, 327694, 5, 1441795, 327695, 5, 7, 327696, 5, 7, 327697, 5, 1048583, 327698, 5, 1441795, 327706, 5, 1048584, 393214, 5, 1441800, 393215, 5, 1048584, 393230, 5, 1441800, 393234, 5, 1441794, 393242, 5, 1048584, 458750, 5, 1441800, 458751, 5, 1048584, 458764, 5, 1441806, 458765, 5, 655361, 458766, 5, 655361, 458767, 5, 655361, 458768, 5, 655361, 458769, 5, 655361, 458771, 5, 1048578, 458772, 5, 1048583, 458773, 5, 1048583, 458774, 5, 1048583, 458775, 5, 1048583, 458776, 5, 1048583, 458777, 5, 1048583, 458778, 5, 1048582, 524286, 5, 1441798, 524287, 5, 1048582, 524300, 5, 1441798, 524301, 5, 1441799, 524302, 5, 1441799, 524303, 5, 1441799, 524304, 5, 1441799, 524305, 5, 1441799, 524306, 5, 1441799, 524307, 5, 1048582, -65533, 5, 1048579, -65532, 5, 7, -65531, 5, 7, -65530, 5, 7, -65529, 5, 1048583, -65528, 5, 1441799, -65527, 5, 1441799, -65526, 5, 1441799, -65525, 5, 1441796, -65509, 5, 1048579, -65508, 5, 1441799, -65507, 5, 1441799, -65506, 5, 1441799, -65505, 5, 1441799, -65504, 5, 1441799, -65503, 5, 1441799, -65502, 5, 4, 2, 6, 655368, 3, 6, 655368, 4, 6, 655369, 11, 6, 1441794, 27, 6, 1048584, 35, 6, 1441800, 38, 6, 1048584, 65534, 6, 1441800, 65537, 6, 1048579, 65538, 6, 655366, 65539, 6, 655366, 65540, 6, 655365, 65547, 6, 1441794, 65563, 6, 1048584, 65571, 6, 1441798, 65572, 6, 7, 65573, 6, 7, 65574, 6, 1048582, 131070, 6, 1441800, 131073, 6, 1048584, 131083, 6, 1441798, 131084, 6, 7, 131085, 6, 7, 131086, 6, 7, 131087, 6, 7, 131088, 6, 7, 131089, 6, 7, 131090, 6, 7, 131091, 6, 1441795, 131099, 6, 1048584, 196606, 6, 1441800, 196609, 6, 1048584, 196627, 6, 1441800, 196635, 6, 1048584, 262142, 6, 1441800, 262145, 6, 1048584, 262156, 6, 1441806, 262157, 6, 1, 262158, 6, 1, 262159, 6, 1, 262160, 6, 1, 262161, 6, 655361, 262162, 6, 655361, 262170, 6, 1048579, 262171, 6, 1048582, 327678, 6, 1441800, 327680, 6, 1441799, 327681, 6, 1048582, 327692, 6, 1441798, 327693, 6, 7, 327694, 6, 1441795, 327695, 6, 7, 327696, 6, 7, 327697, 6, 1048583, 327698, 6, 1441795, 327706, 6, 1048584, 393214, 6, 1441800, 393215, 6, 1048584, 393230, 6, 1441800, 393234, 6, 1441794, 393242, 6, 1048584, 458750, 6, 1441800, 458751, 6, 1048584, 458764, 6, 1441806, 458765, 6, 655361, 458766, 6, 655361, 458767, 6, 655361, 458768, 6, 655361, 458769, 6, 655361, 458771, 6, 1048578, 458772, 6, 1048583, 458773, 6, 1048583, 458774, 6, 1048583, 458775, 6, 1048583, 458776, 6, 1048583, 458777, 6, 1048583, 458778, 6, 1048582, 524286, 6, 1441798, 524287, 6, 1048582, 524300, 6, 1441798, 524301, 6, 1441799, 524302, 6, 1441799, 524303, 6, 1441799, 524304, 6, 1441799, 524305, 6, 1441799, 524306, 6, 1441799, 524307, 6, 1048582, -65534, 6, 655363, -65533, 6, 655363, -65532, 6, 655364, -65531, 6, 655367, -65530, 6, 655367, -65529, 6, 1048583, -65528, 6, 7, -65527, 6, 1441799, -65526, 6, 1441799, -65525, 6, 1441795, -65509, 6, 1048579, -65508, 6, 1441799, -65507, 6, 1441799, -65506, 6, 1441799, -65505, 6, 1441799, -65504, 6, 1441799, -65503, 6, 1441799, -65502, 6, 1441799, -65501, 6, 1441795, 4, 7, 1048584, 6, 7, 11, 11, 7, 9, 27, 7, 1048584, 35, 7, 1441800, 39, 7, 655369, 65534, 7, 1441800, 65537, 7, 1048579, 65538, 7, 1441799, 65539, 7, 1441799, 65540, 7, 1048582, 65542, 7, 12, 65547, 7, 9, 65563, 7, 1048584, 65571, 7, 1441798, 65572, 7, 7, 65573, 7, 7, 65574, 7, 7, 65575, 7, 655365, 131070, 7, 1441800, 131073, 7, 1048584, 131078, 7, 1441804, 131083, 7, 5, 131084, 7, 7, 131085, 7, 1441796, 131086, 7, 655363, 131087, 7, 655363, 131088, 7, 655364, 131089, 7, 7, 131090, 7, 7, 131091, 7, 1441795, 131099, 7, 1048584, 196606, 7, 1441800, 196609, 7, 1048584, 196614, 7, 13, 196621, 7, 1441801, 196622, 7, 655362, 196623, 7, 655362, 196624, 7, 655369, 196627, 7, 1441800, 196635, 7, 1048584, 262142, 7, 1441800, 262145, 7, 1048584, 262156, 7, 1441806, 262157, 7, 1441806, 262158, 7, 1, 262159, 7, 1, 262160, 7, 1, 262161, 7, 655361, 262162, 7, 655361, 262170, 7, 1048579, 262171, 7, 1048582, 327678, 7, 1441800, 327680, 7, 1441799, 327681, 7, 1048582, 327691, 7, 1441809, 327692, 7, 1441801, 327693, 7, 655363, 327694, 7, 655363, 327695, 7, 655363, 327696, 7, 655364, 327697, 7, 1048583, 327698, 7, 1441795, 327706, 7, 1048584, 393214, 7, 1441800, 393215, 7, 1048584, 393228, 7, 1441801, 393229, 7, 655368, 393230, 7, 655368, 393231, 7, 655368, 393232, 7, 655369, 393234, 7, 1441794, 393242, 7, 1048584, 458750, 7, 1441800, 458751, 7, 1048584, 458764, 7, 1441800, 458768, 7, 655361, 458769, 7, 655361, 458771, 7, 1048578, 458772, 7, 1048583, 458773, 7, 1048583, 458774, 7, 1048583, 458775, 7, 1048583, 458776, 7, 1048583, 458777, 7, 1048583, 458778, 7, 1048582, 524286, 7, 1441798, 524287, 7, 1048582, 524300, 7, 1441798, 524301, 7, 1441799, 524302, 7, 1441799, 524303, 7, 1441799, 524304, 7, 1441799, 524305, 7, 1441799, 524306, 7, 1441799, 524307, 7, 1048582, -65532, 7, 1048579, -65531, 7, 1048583, -65530, 7, 10, -65529, 7, 1441799, -65528, 7, 1441799, -65527, 7, 1441799, -65526, 7, 1441799, -65525, 7, 4, -65509, 7, 1048579, -65508, 7, 1441799, -65507, 7, 1441799, -65506, 7, 1441799, -65505, 7, 1441799, -65504, 7, 1441799, -65503, 7, 1441799, -65502, 7, 1441799, -65501, 7, 1441795, 2, 8, 3, 3, 8, 3, 4, 8, 1048585, 12, 8, 1441800, 27, 8, 1048584, 35, 8, 1441800, 40, 8, 655369, 65534, 8, 1441800, 65537, 8, 1048579, 65538, 8, 6, 65539, 8, 6, 65540, 8, 1048581, 65548, 8, 1441800, 65563, 8, 1048584, 65571, 8, 1441798, 65572, 8, 7, 65573, 8, 7, 65574, 8, 7, 65575, 8, 7, 65576, 8, 655365, 131070, 8, 1441800, 131073, 8, 1048584, 131084, 8, 1441796, 131088, 8, 1048579, 131089, 8, 7, 131090, 8, 7, 131091, 8, 1441795, 131099, 8, 1048584, 196606, 8, 1441800, 196609, 8, 1048584, 196620, 8, 1441801, 196624, 8, 1048584, 196627, 8, 1441800, 196635, 8, 1048584, 262142, 8, 1441800, 262145, 8, 1048584, 262156, 8, 1441800, 262161, 8, 655361, 262162, 8, 655361, 262170, 8, 1048579, 262171, 8, 1048582, 327678, 8, 1441800, 327680, 8, 1441799, 327681, 8, 1048582, 327692, 8, 1441800, 327695, 8, 3, 327696, 8, 1048580, 327697, 8, 1048583, 327698, 8, 1441795, 327706, 8, 1048584, 393214, 8, 1441800, 393215, 8, 1048584, 393228, 8, 1441800, 393231, 8, 8, 393232, 8, 1048585, 393234, 8, 1441794, 393242, 8, 1048584, 458750, 8, 1441800, 458751, 8, 1048584, 458764, 8, 9, 458769, 8, 655361, 458771, 8, 1048578, 458772, 8, 1048583, 458773, 8, 1048583, 458774, 8, 1048583, 458775, 8, 1048583, 458776, 8, 1048583, 458777, 8, 1048583, 458778, 8, 1048582, 524286, 8, 1441798, 524287, 8, 1048582, 524300, 8, 5, 524301, 8, 1441799, 524302, 8, 1441799, 524303, 8, 1441799, 524304, 8, 1441799, 524305, 8, 1441799, 524306, 8, 1441799, 524307, 8, 1048582, -65534, 8, 3, -65533, 8, 3, -65532, 8, 1048580, -65531, 8, 655367, -65530, 8, 655367, -65529, 8, 655367, -65528, 8, 1441799, -65527, 8, 1441799, -65526, 8, 1441799, -65525, 8, 655367, -65524, 8, 1441795, -65509, 8, 1048579, -65508, 8, 1441799, -65507, 8, 1441799, -65506, 8, 1441799, -65505, 8, 1441799, -65504, 8, 1441799, -65503, 8, 1441799, -65502, 8, 1441799, -65501, 8, 1441795, 1, 9, 1048579, 2, 9, 5, 3, 9, 1048581, 8, 9, 11, 12, 9, 1441800, 27, 9, 1048584, 35, 9, 1441800, 40, 9, 1048584, 65534, 9, 1441800, 65537, 9, 1048578, 65544, 9, 12, 65548, 9, 1441800, 65563, 9, 1048584, 65570, 9, 1441809, 65571, 9, 1441801, 65572, 9, 655363, 65573, 9, 655363, 65574, 9, 655363, 65575, 9, 655363, 65576, 9, 655364, 131070, 9, 1441800, 131073, 9, 1048578, 131080, 9, 1048588, 131084, 9, 1441800, 131088, 9, 1048579, 131089, 9, 7, 131090, 9, 7, 131091, 9, 1441795, 131099, 9, 1048584, 131107, 9, 1441797, 131108, 9, 655366, 131109, 9, 655366, 131110, 9, 655366, 131111, 9, 655366, 131112, 9, 655365, 196606, 9, 1441800, 196609, 9, 1048578, 196616, 9, 1048588, 196620, 9, 1441800, 196624, 9, 1048584, 196627, 9, 1441800, 196635, 9, 1048584, 262142, 9, 1441800, 262145, 9, 1048578, 262152, 9, 1048589, 262156, 9, 1441800, 262161, 9, 655361, 262162, 9, 655361, 262169, 9, 3, 262170, 9, 1048580, 262171, 9, 1048582, 327678, 9, 1441800, 327680, 9, 655368, 327681, 9, 655369, 327682, 9, 1048592, 327692, 9, 1441800, 327694, 9, 1048579, 327695, 9, 1441799, 327696, 9, 1441799, 327697, 9, 1441799, 327698, 9, 1441795, 327705, 9, 8, 327706, 9, 1048585, 393214, 9, 1441800, 393216, 9, 655368, 393217, 9, 655369, 393228, 9, 1441800, 393230, 9, 1048584, 393234, 9, 1441794, 393241, 9, 8, 393242, 9, 1048585, 458750, 9, 1441800, 458752, 9, 655366, 458753, 9, 655365, 458764, 9, 1441798, 458765, 9, 1441795, 458767, 9, 655361, 458768, 9, 655361, 458769, 9, 655361, 458771, 9, 1048578, 458772, 9, 1048583, 458773, 9, 1048583, 458774, 9, 1048583, 458775, 9, 1048583, 458776, 9, 1048583, 458777, 9, 6, 458778, 9, 1048581, 524286, 9, 1441798, 524287, 9, 655367, 524301, 9, 1441798, 524302, 9, 1441799, 524303, 9, 1441799, 524304, 9, 1441799, 524305, 9, 1441799, 524306, 9, 1441799, 524307, 9, 1048582, -65535, 9, 1048584, -65534, 9, 4, -65533, 9, 1048580, -65532, 9, 7, -65531, 9, 7, -65530, 9, 7, -65529, 9, 7, -65528, 9, 10, -65527, 9, 1441799, -65526, 9, 1441799, -65525, 9, 655367, -65524, 9, 1441795, -65509, 9, 1048579, -65508, 9, 1441799, -65507, 9, 1441799, -65506, 9, 1441799, -65505, 9, 1441799, -65504, 9, 1441799, -65503, 9, 1441799, -65502, 9, 1441799, -65501, 9, 1441795, 1, 10, 1048578, 12, 10, 1441800, 26, 10, 8, 27, 10, 1048585, 35, 10, 1441800, 40, 10, 1048584, 65534, 10, 1441800, 65537, 10, 1048578, 65548, 10, 1441800, 65561, 10, 3, 65562, 10, 3, 65563, 10, 1048585, 65571, 10, 1441800, 65576, 10, 1048584, 131070, 10, 1441800, 131073, 10, 1048578, 131084, 10, 1441800, 131088, 10, 1048580, 131089, 10, 1048583, 131090, 10, 1048583, 131091, 10, 4, 131097, 10, 8, 131098, 10, 8, 131099, 10, 1048585, 131106, 10, 1441809, 131107, 10, 1441801, 131108, 10, 655363, 131109, 10, 655363, 131110, 10, 655363, 131111, 10, 655363, 131112, 10, 655364, 196606, 10, 1441800, 196609, 10, 1048578, 196620, 10, 1441800, 196624, 10, 1048585, 196627, 10, 9, 196633, 10, 8, 196634, 10, 8, 196635, 10, 1048585, 196643, 10, 1441797, 196644, 10, 655366, 196645, 10, 655366, 196646, 10, 655366, 196647, 10, 655366, 196648, 10, 655365, 262142, 10, 1441800, 262145, 10, 1048578, 262156, 10, 1441800, 262161, 10, 1, 262162, 10, 1, 262168, 10, 1048579, 262169, 10, 6, 262170, 10, 6, 262171, 10, 1048581, 327678, 10, 1441800, 327681, 10, 1048578, 327685, 10, 655377, 327689, 10, 655376, 327692, 10, 1441800, 327694, 10, 1048579, 327695, 10, 1441799, 327696, 10, 1441796, 327697, 10, 655363, 327704, 10, 1048584, 393214, 10, 1441800, 393217, 10, 1048584, 393228, 10, 1441800, 393230, 10, 1048584, 393232, 10, 1441801, 393233, 10, 655362, 393240, 10, 1048584, 458750, 10, 1441800, 458752, 10, 6, 458753, 10, 1048582, 458764, 10, 1441798, 458765, 10, 4, 458766, 10, 3, 458767, 10, 14, 458768, 10, 3, 458769, 10, 8, 458770, 10, 8, 458771, 10, 1048585, 458772, 10, 1048583, 458773, 10, 1048583, 458774, 10, 1048583, 458775, 10, 1048583, 458776, 10, 1048582, 524286, 10, 1441798, 524287, 10, 655367, 524301, 10, 5, 524302, 10, 6, 524303, 10, 6, 524304, 10, 6, 524305, 10, 6, 524306, 10, 6, 524307, 10, 1048581, -65535, 10, 1048579, -65534, 10, 1048583, -65533, 10, 7, -65532, 10, 7, -65531, 10, 7, -65530, 10, 7, -65529, 10, 7, -65528, 10, 655367, -65527, 10, 655367, -65526, 10, 655367, -65525, 10, 655367, -65524, 10, 1441795, -65511, 10, 3, -65510, 10, 3, -65509, 10, 1048580, -65508, 10, 7, -65507, 10, 7, -65506, 10, 7, -65505, 10, 7, -65504, 10, 7, -65503, 10, 7, -65502, 10, 1441799, -65501, 10, 1441795, 2, 11, 655368, 3, 11, 655368, 4, 11, 655368, 5, 11, 655368, 6, 11, 655368, 7, 11, 655368, 8, 11, 655368, 9, 11, 655368, 10, 11, 655368, 11, 11, 655368, 21, 11, 8, 22, 11, 8, 23, 11, 8, 24, 11, 1048585, 25, 11, 1441801, 26, 11, 655369, 35, 11, 1441800, 40, 11, 1048584, 65534, 11, 1441800, 65538, 11, 655368, 65539, 11, 655368, 65540, 11, 655368, 65541, 11, 655368, 65542, 11, 655368, 65543, 11, 655368, 65544, 11, 655368, 65545, 11, 655368, 65546, 11, 655368, 65547, 11, 655368, 65549, 11, 8, 65550, 11, 8, 65551, 11, 8, 65552, 11, 8, 65553, 11, 8, 65554, 11, 8, 65555, 11, 8, 65556, 11, 8, 65557, 11, 8, 65558, 11, 8, 65559, 11, 8, 65560, 11, 1048585, 65561, 11, 1441797, 65562, 11, 655365, 65571, 11, 1441800, 65576, 11, 1048584, 131070, 11, 1441800, 131074, 11, 655368, 131075, 11, 655368, 131076, 11, 655368, 131077, 11, 655368, 131078, 11, 655368, 131079, 11, 655368, 131080, 11, 655368, 131081, 11, 655368, 131082, 11, 655368, 131083, 11, 655368, 131085, 11, 8, 131086, 11, 8, 131087, 11, 1048585, 131088, 11, 6, 131089, 11, 6, 131090, 11, 6, 131091, 11, 6, 131092, 11, 9, 131093, 11, 8, 131094, 11, 8, 131095, 11, 8, 131096, 11, 1048585, 131107, 11, 1441800, 131112, 11, 1048584, 196606, 11, 1441800, 196610, 11, 655368, 196611, 11, 655368, 196612, 11, 655368, 196613, 11, 655368, 196614, 11, 655368, 196615, 11, 655368, 196616, 11, 655368, 196617, 11, 655368, 196618, 11, 655368, 196619, 11, 655368, 196621, 11, 8, 196622, 11, 8, 196623, 11, 1048585, 196628, 11, 9, 196629, 11, 8, 196630, 11, 8, 196631, 11, 8, 196632, 11, 1048585, 196642, 11, 1441809, 196643, 11, 1441801, 196644, 11, 655363, 196645, 11, 655363, 196646, 11, 655363, 196647, 11, 655363, 196648, 11, 655364, 262142, 11, 1441800, 262146, 11, 655368, 262147, 11, 655368, 262148, 11, 655368, 262149, 11, 655368, 262150, 11, 655368, 262151, 11, 655368, 262152, 11, 655368, 262153, 11, 655368, 262154, 11, 655368, 262155, 11, 655368, 262157, 11, 8, 262158, 11, 8, 262159, 11, 8, 262160, 11, 14, 262161, 11, 14, 262162, 11, 14, 262163, 11, 14, 262164, 11, 8, 262165, 11, 8, 262166, 11, 8, 262167, 11, 8, 262168, 11, 1048585, 262179, 11, 1441797, 262180, 11, 655366, 262181, 11, 655366, 262182, 11, 655366, 262183, 11, 655366, 262184, 11, 655365, 327678, 11, 1441800, 327682, 11, 655362, 327683, 11, 655362, 327684, 11, 655362, 327685, 11, 655369, 327686, 11, 655366, 327687, 11, 655366, 327688, 11, 655366, 327689, 11, 1441801, 327690, 11, 655368, 327691, 11, 655368, 327693, 11, 8, 327694, 11, 1048585, 327695, 11, 6, 327696, 11, 9, 327697, 11, 8, 327698, 11, 8, 327699, 11, 8, 327700, 11, 8, 327701, 11, 8, 327702, 11, 8, 327703, 11, 8, 327704, 11, 1048585, 393214, 11, 1441800, 393218, 11, 655362, 393219, 11, 655362, 393220, 11, 655362, 393221, 11, 655369, 393225, 11, 1441801, 393226, 11, 655368, 393227, 11, 655368, 393229, 11, 8, 393230, 11, 1048585, 393232, 11, 9, 393233, 11, 2, 393234, 11, 2, 393235, 11, 2, 393236, 11, 2, 393237, 11, 8, 393238, 11, 8, 393239, 11, 8, 393240, 11, 1048585, 458750, 11, 1441800, 458752, 11, 655367, 458753, 11, 655367, 458754, 11, 655366, 458755, 11, 655366, 458756, 11, 655366, 458757, 11, 655366, 458761, 11, 1441797, 458762, 11, 655366, 458763, 11, 655366, 458764, 11, 1441799, 458765, 11, 6, 458766, 11, 1048581, 458768, 11, 5, 458769, 11, 6, 458770, 11, 6, 458771, 11, 6, 458772, 11, 6, 458773, 11, 6, 458774, 11, 6, 458775, 11, 6, 458776, 11, 1048581, 524286, 11, 1441798, 524287, 11, 655367, -65534, 11, 655363, -65533, 11, 655363, -65532, 11, 655363, -65531, 11, 655363, -65530, 11, 655363, -65529, 11, 655363, -65528, 11, 655363, -65527, 11, 655363, -65526, 11, 655363, -65525, 11, 655363, -65512, 11, 1048580, -65511, 11, 1441796, -65510, 11, 655364, -65509, 11, 7, -65508, 11, 7, -65507, 11, 7, -65506, 11, 7, -65505, 11, 7, -65504, 11, 7, -65503, 11, 7, -65502, 11, 7, -65501, 11, 1441795, 21, 12, 15, 23, 12, 1048582, 25, 12, 9, 26, 12, 1048585, 35, 12, 1441800, 40, 12, 1048584, 65534, 12, 1441800, 65548, 12, 1048584, 65549, 12, 1048583, 65550, 12, 1048583, 65551, 12, 1048583, 65552, 12, 1048583, 65553, 12, 1048583, 65554, 12, 1048583, 65555, 12, 1048583, 65556, 12, 1048583, 65561, 12, 5, 65562, 12, 1048581, 65571, 12, 1441800, 65576, 12, 1048584, 131070, 12, 1441800, 131084, 12, 1048584, 131087, 12, 16, 131092, 12, 17, 131107, 12, 1441800, 131112, 12, 1048584, 196606, 12, 1441800, 196620, 12, 1048584, 196643, 12, 1441800, 196648, 12, 1048584, 262142, 12, 1441800, 262156, 12, 1048584, 262178, 12, 1441809, 262179, 12, 1441801, 262180, 12, 655363, 262181, 12, 655363, 262182, 12, 655363, 262183, 12, 655363, 262184, 12, 655364, 327678, 12, 1441800, 327686, 12, 655363, 327687, 12, 655363, 327688, 12, 655363, 327692, 12, 1048584, 327694, 12, 16, 327696, 12, 17, 327715, 12, 1441797, 327716, 12, 655366, 327717, 12, 655366, 327718, 12, 655366, 327719, 12, 655366, 327720, 12, 655365, 393214, 12, 1441800, 393222, 12, 655368, 393223, 12, 655368, 393224, 12, 655368, 393228, 12, 1048584, 458750, 12, 1441800, 458752, 12, 655367, 458753, 12, 655367, 458754, 12, 655367, 458755, 12, 655367, 458756, 12, 655367, 458757, 12, 655367, 458758, 12, 655366, 458759, 12, 655366, 458760, 12, 655366, 458761, 12, 1441799, 458762, 12, 1441799, 458763, 12, 1441799, 458764, 12, 655366, 524286, 12, 1441798, 524287, 12, 655367, -65513, 12, 1048579, -65512, 12, 7, -65511, 12, 4, -65510, 12, 1048580, -65509, 12, 7, -65508, 12, 7, -65507, 12, 7, -65506, 12, 7, -65505, 12, 7, -65504, 12, 7, -65503, 12, 7, -65502, 12, 7, -65501, 12, 1441795, 21, 13, 15, 23, 13, 1048582, 28, 13, 1441801, 29, 13, 655369, 35, 13, 1441800, 38, 13, 8, 39, 13, 8, 40, 13, 1048585, 65534, 13, 1441800, 65548, 13, 1048584, 65549, 13, 1048583, 65550, 13, 1048583, 65551, 13, 1048583, 65552, 13, 1048583, 65553, 13, 1048583, 65554, 13, 1048583, 65555, 13, 1048583, 65556, 13, 1048583, 65564, 13, 1441801, 65565, 13, 655369, 65571, 13, 1441800, 65574, 13, 8, 65575, 13, 8, 65576, 13, 1048585, 131070, 13, 1441800, 131084, 13, 1048584, 131100, 13, 1441797, 131101, 13, 655365, 131107, 13, 1441800, 131110, 13, 8, 131111, 13, 8, 131112, 13, 1048585, 196606, 13, 1441800, 196620, 13, 1048584, 196643, 13, 1441800, 196646, 13, 8, 196647, 13, 8, 196648, 13, 1048585, 262142, 13, 1441800, 262156, 13, 1048584, 262179, 13, 1441800, 262182, 13, 8, 262183, 13, 8, 262184, 13, 1048585, 327678, 13, 1441800, 327692, 13, 1048584, 327715, 13, 1441798, 327716, 13, 7, 327717, 13, 7, 327718, 13, 6, 327719, 13, 6, 327720, 13, 1048581, 393214, 13, 1441800, 393228, 13, 1048584, 458750, 13, 1441800, 458752, 13, 655367, 458753, 13, 655367, 458754, 13, 655367, 458755, 13, 655367, 458756, 13, 655367, 458757, 13, 655367, 458758, 13, 655367, 458759, 13, 655367, 458760, 13, 655367, 458761, 13, 655367, 458762, 13, 1441799, 458763, 13, 1441799, 458764, 13, 655366, 524286, 13, 1441798, 524287, 13, 655367, -65513, 13, 1048579, -65512, 13, 7, -65511, 13, 7, -65510, 13, 7, -65509, 13, 7, -65508, 13, 1441796, -65507, 13, 655364, -65506, 13, 7, -65505, 13, 7, -65504, 13, 7, -65503, 13, 7, -65502, 13, 7, -65501, 13, 1441795, 21, 14, 15, 23, 14, 1048582, 28, 14, 9, 29, 14, 1048585, 35, 14, 1441800, 37, 14, 1048584, 65534, 14, 1441800, 65548, 14, 1048584, 65549, 14, 1048583, 65550, 14, 1048583, 65551, 14, 1048583, 65552, 14, 1048583, 65553, 14, 655373, 65554, 14, 655373, 65555, 14, 1048583, 65556, 14, 1048583, 65564, 14, 9, 65565, 14, 1048585, 65571, 14, 1441800, 65573, 14, 1048584, 131070, 14, 1441800, 131084, 14, 1048584, 131090, 14, 655373, 131100, 14, 5, 131101, 14, 1048581, 131107, 14, 1441800, 131109, 14, 1048584, 196606, 14, 1441800, 196620, 14, 1048584, 196643, 14, 1441800, 196645, 14, 1048584, 262142, 14, 1441800, 262156, 14, 1048584, 262179, 14, 1441800, 262181, 14, 1048584, 327678, 14, 1441800, 327692, 14, 1048584, 327715, 14, 1441798, 327716, 14, 7, 327717, 14, 1048582, 393214, 14, 1441800, 393228, 14, 1048584, 458750, 14, 1441800, 458752, 14, 655367, 458753, 14, 655367, 458754, 14, 655367, 458755, 14, 655367, 458756, 14, 655367, 458757, 14, 655367, 458758, 14, 655367, 458759, 14, 655367, 458760, 14, 655367, 458761, 14, 655367, 458762, 14, 1441799, 458763, 14, 1441799, 458764, 14, 655366, 524286, 14, 1441798, 524287, 14, 655367, -65513, 14, 1048579, -65512, 14, 7, -65511, 14, 7, -65510, 14, 7, -65509, 14, 7, -65508, 14, 4, -65507, 14, 1048580, -65506, 14, 7, -65505, 14, 7, -65504, 14, 7, -65503, 14, 7, -65502, 14, 7, -65501, 14, 1441795, 21, 15, 655368, 22, 15, 655368, 23, 15, 655368, 24, 15, 655369, 31, 15, 1441801, 32, 15, 655369, 35, 15, 1441800, 37, 15, 1048584, 65534, 15, 1441800, 65548, 15, 1048584, 65549, 15, 655368, 65550, 15, 655368, 65551, 15, 655368, 65552, 15, 655368, 65553, 15, 655368, 65554, 15, 655368, 65555, 15, 655368, 65556, 15, 655368, 65557, 15, 655368, 65558, 15, 655368, 65559, 15, 655368, 65560, 15, 655369, 65567, 15, 1441801, 65568, 15, 655369, 65571, 15, 1441800, 65573, 15, 1048584, 131070, 15, 1441800, 131084, 15, 1048584, 131085, 15, 655368, 131086, 15, 655368, 131087, 15, 655368, 131088, 15, 655368, 131089, 15, 655368, 131090, 15, 655368, 131091, 15, 655368, 131092, 15, 655368, 131093, 15, 655368, 131094, 15, 655368, 131095, 15, 655368, 131096, 15, 655369, 131103, 15, 1441801, 131104, 15, 655369, 131107, 15, 1441800, 131109, 15, 1048584, 196606, 15, 1441800, 196620, 15, 1048584, 196621, 15, 655368, 196622, 15, 655368, 196623, 15, 655368, 196624, 15, 655368, 196625, 15, 655368, 196626, 15, 655368, 196627, 15, 655368, 196628, 15, 655368, 196629, 15, 655368, 196630, 15, 655368, 196631, 15, 655368, 196632, 15, 655369, 196639, 15, 1441797, 196640, 15, 655365, 196643, 15, 1441800, 196645, 15, 1048584, 262142, 15, 1441800, 262156, 15, 1048584, 262157, 15, 655368, 262158, 15, 655368, 262159, 15, 655368, 262160, 15, 655368, 262161, 15, 655368, 262162, 15, 655368, 262163, 15, 655368, 262164, 15, 655368, 262165, 15, 655368, 262166, 15, 655368, 262167, 15, 655368, 262168, 15, 655369, 262179, 15, 1441800, 262181, 15, 1048584, 327678, 15, 1441800, 327692, 15, 1048584, 327693, 15, 655368, 327694, 15, 655368, 327695, 15, 655368, 327696, 15, 655368, 327697, 15, 655368, 327698, 15, 655368, 327699, 15, 1310729, 327700, 15, 655366, 327701, 15, 655366, 327702, 15, 655366, 327703, 15, 655366, 327704, 15, 655365, 327715, 15, 1441798, 327716, 15, 7, 327717, 15, 1048582, 393214, 15, 1441800, 393228, 15, 1048584, 393229, 15, 655368, 393230, 15, 655368, 393231, 15, 655368, 393232, 15, 655368, 393233, 15, 655368, 393234, 15, 655368, 393235, 15, 1310729, 458750, 15, 1441800, 458752, 15, 655367, 458753, 15, 655367, 458754, 15, 655367, 458755, 15, 655367, 458756, 15, 655367, 458757, 15, 655367, 458758, 15, 655367, 458759, 15, 655367, 458760, 15, 655367, 458761, 15, 655367, 458762, 15, 1441799, 458763, 15, 1441799, 458764, 15, 655366, 458765, 15, 655366, 458766, 15, 655366, 458767, 15, 655366, 458768, 15, 655366, 458769, 15, 655366, 458770, 15, 655366, 458771, 15, 655365, 524286, 15, 1441798, 524287, 15, 655367, -65512, 15, 655364, -65511, 15, 7, -65510, 15, 7, -65509, 15, 7, -65508, 15, 7, -65507, 15, 7, -65506, 15, 7, -65505, 15, 1441796, -65504, 15, 655364, -65503, 15, 7, -65502, 15, 7, -65501, 15, 1441795, 25, 16, 655369, 31, 16, 9, 32, 16, 1048585, 34, 16, 1441801, 37, 16, 1048584, 65534, 16, 1441800, 65548, 16, 1048584, 65561, 16, 655369, 65567, 16, 9, 65568, 16, 1048585, 65570, 16, 1441801, 65573, 16, 1048584, 131070, 16, 1441800, 131084, 16, 1048584, 131097, 16, 655369, 131103, 16, 9, 131104, 16, 1048585, 131106, 16, 1441801, 131109, 16, 1048584, 196606, 16, 1441800, 196620, 16, 1048584, 196633, 16, 655369, 196639, 16, 5, 196640, 16, 1048581, 196642, 16, 1441801, 196645, 16, 1048584, 262142, 16, 1441800, 262156, 16, 1048584, 262169, 16, 655369, 262178, 16, 1441801, 262181, 16, 1048584, 327678, 16, 1441800, 327692, 16, 1048584, 327699, 16, 1048584, 327700, 16, 1048583, 327701, 16, 1048583, 327702, 16, 1048583, 327703, 16, 1048583, 327704, 16, 1048583, 327705, 16, 655365, 327714, 16, 1441797, 327715, 16, 7, 327716, 16, 7, 327717, 16, 1048582, 393214, 16, 1441800, 393228, 16, 1048584, 393235, 16, 1048584, 458750, 16, 1441800, 458752, 16, 655367, 458753, 16, 655367, 458754, 16, 655367, 458755, 16, 655367, 458756, 16, 655367, 458757, 16, 655367, 458758, 16, 655367, 458759, 16, 655367, 458760, 16, 655367, 458761, 16, 655367, 458762, 16, 1441799, 458763, 16, 1441799, 458764, 16, 655366, 458765, 16, 7, 458766, 16, 7, 458767, 16, 7, 458768, 16, 7, 458769, 16, 7, 458770, 16, 7, 458771, 16, 1048582, 524286, 16, 1441798, 524287, 16, 655367, -65511, 16, 655364, -65510, 16, 7, -65509, 16, 7, -65508, 16, 7, -65507, 16, 7, -65506, 16, 7, -65505, 16, 4, -65504, 16, 1048580, -65503, 16, 7, -65502, 16, 1441796, 0, 17, 8, 1, 17, 8, 2, 17, 8, 3, 17, 8, 4, 17, 8, 5, 17, 8, 6, 17, 8, 7, 17, 8, 8, 17, 8, 9, 17, 8, 10, 17, 8, 11, 17, 8, 12, 17, 8, 13, 17, 8, 14, 17, 8, 15, 17, 8, 16, 17, 8, 17, 17, 8, 18, 17, 8, 19, 17, 8, 20, 17, 8, 21, 17, 8, 22, 17, 8, 25, 17, 1048584, 34, 17, 1441800, 37, 17, 1048584, 65534, 17, 9, 65535, 17, 8, 65536, 17, 8, 65537, 17, 8, 65538, 17, 8, 65539, 17, 8, 65540, 17, 8, 65541, 17, 8, 65542, 17, 8, 65543, 17, 8, 65544, 17, 8, 65545, 17, 8, 65546, 17, 8, 65547, 17, 8, 65548, 17, 8, 65549, 17, 8, 65550, 17, 8, 65551, 17, 8, 65552, 17, 8, 65553, 17, 8, 65554, 17, 8, 65555, 17, 8, 65556, 17, 8, 65557, 17, 8, 65558, 17, 8, 65561, 17, 1048584, 65570, 17, 1441800, 65573, 17, 1048584, 131070, 17, 9, 131071, 17, 8, 131072, 17, 8, 131073, 17, 8, 131074, 17, 8, 131075, 17, 8, 131076, 17, 8, 131077, 17, 8, 131078, 17, 8, 131079, 17, 8, 131080, 17, 8, 131081, 17, 8, 131082, 17, 8, 131083, 17, 8, 131084, 17, 8, 131085, 17, 8, 131086, 17, 8, 131087, 17, 8, 131088, 17, 8, 131089, 17, 8, 131090, 17, 8, 131091, 17, 8, 131092, 17, 8, 131093, 17, 8, 131094, 17, 8, 131097, 17, 1048584, 131106, 17, 1441800, 131109, 17, 1048584, 196606, 17, 9, 196607, 17, 8, 196608, 17, 8, 196609, 17, 8, 196610, 17, 8, 196611, 17, 8, 196612, 17, 8, 196613, 17, 8, 196614, 17, 8, 196615, 17, 8, 196616, 17, 8, 196617, 17, 8, 196618, 17, 8, 196619, 17, 8, 196620, 17, 8, 196621, 17, 8, 196622, 17, 8, 196623, 17, 8, 196624, 17, 8, 196625, 17, 8, 196626, 17, 8, 196627, 17, 8, 196628, 17, 8, 196629, 17, 8, 196630, 17, 8, 196633, 17, 1048584, 196642, 17, 1441800, 196645, 17, 1048584, 262142, 17, 9, 262143, 17, 8, 262144, 17, 8, 262145, 17, 8, 262146, 17, 8, 262147, 17, 8, 262148, 17, 8, 262149, 17, 8, 262150, 17, 8, 262151, 17, 8, 262152, 17, 8, 262153, 17, 8, 262154, 17, 8, 262155, 17, 8, 262156, 17, 8, 262157, 17, 8, 262158, 17, 8, 262159, 17, 8, 262160, 17, 8, 262161, 17, 8, 262162, 17, 8, 262163, 17, 8, 262164, 17, 8, 262165, 17, 8, 262166, 17, 8, 262169, 17, 1048584, 262178, 17, 1441800, 262181, 17, 1048584, 327678, 17, 9, 327679, 17, 8, 327680, 17, 8, 327681, 17, 8, 327682, 17, 8, 327683, 17, 8, 327684, 17, 8, 327685, 17, 8, 327686, 17, 8, 327687, 17, 8, 327688, 17, 8, 327689, 17, 8, 327690, 17, 8, 327691, 17, 8, 327692, 17, 8, 327693, 17, 8, 327694, 17, 8, 327695, 17, 8, 327696, 17, 8, 327697, 17, 8, 327698, 17, 8, 327699, 17, 1048580, 327700, 17, 6, 327701, 17, 6, 327702, 17, 6, 327703, 17, 1048583, 327704, 17, 1048583, 327705, 17, 1048582, 327714, 17, 1441798, 327715, 17, 7, 327716, 17, 7, 327717, 17, 1048582, 393214, 17, 9, 393215, 17, 8, 393216, 17, 8, 393217, 17, 8, 393218, 17, 8, 393219, 17, 8, 393220, 17, 8, 393221, 17, 8, 393222, 17, 8, 393223, 17, 8, 393224, 17, 8, 393225, 17, 8, 393226, 17, 8, 393227, 17, 8, 393228, 17, 8, 393229, 17, 8, 393230, 17, 8, 393231, 17, 8, 393232, 17, 8, 393233, 17, 8, 393234, 17, 8, 393235, 17, 1048585, 458750, 17, 9, 458751, 17, 8, 458752, 17, 6, 458753, 17, 6, 458754, 17, 6, 458755, 17, 6, 458756, 17, 6, 458757, 17, 6, 458758, 17, 6, 458759, 17, 6, 458760, 17, 6, 458761, 17, 6, 458762, 17, 6, 458763, 17, 6, 458764, 17, 6, 458765, 17, 6, 458766, 17, 6, 458767, 17, 6, 458768, 17, 6, 458769, 17, 6, 458770, 17, 6, 458771, 17, 1048581, 524286, 17, 5, 524287, 17, 6, -65511, 17, 1048579, -65510, 17, 7, -65509, 17, 7, -65508, 17, 7, -65507, 17, 7, -65506, 17, 7, -65505, 17, 7, -65504, 17, 7, -65503, 17, 7, -65502, 17, 1441795, 23, 18, 1441800, 26, 18, 655368, 27, 18, 655368, 28, 18, 655368, 29, 18, 655368, 30, 18, 655368, 31, 18, 655368, 32, 18, 655368, 33, 18, 655368, 37, 18, 1048584, 65559, 18, 1441800, 65562, 18, 655368, 65563, 18, 655368, 65564, 18, 655368, 65565, 18, 655368, 65566, 18, 655368, 65567, 18, 655368, 65568, 18, 655368, 65569, 18, 655368, 65573, 18, 1048584, 131095, 18, 1441800, 131098, 18, 655368, 131099, 18, 655368, 131100, 18, 655368, 131101, 18, 655368, 131102, 18, 655368, 131103, 18, 655368, 131104, 18, 655368, 131105, 18, 655368, 131109, 18, 1048584, 196631, 18, 1441800, 196634, 18, 655368, 196635, 18, 655368, 196636, 18, 655368, 196637, 18, 655368, 196638, 18, 655368, 196639, 18, 655368, 196640, 18, 655368, 196641, 18, 655368, 196645, 18, 1048584, 262167, 18, 1441800, 262170, 18, 655368, 262171, 18, 655368, 262172, 18, 655368, 262173, 18, 655368, 262174, 18, 655368, 262175, 18, 655368, 262176, 18, 655368, 262177, 18, 655368, 262181, 18, 1048584, 327703, 18, 1441798, 327704, 18, 1048583, 327705, 18, 1048583, 327706, 18, 655366, 327707, 18, 655366, 327708, 18, 655366, 327709, 18, 655366, 327710, 18, 655366, 327711, 18, 655366, 327712, 18, 655366, 327713, 18, 655366, 327714, 18, 1048583, 327715, 18, 7, 327716, 18, 7, 327717, 18, 1048582, -65510, 18, 655363, -65509, 18, 655363, -65508, 18, 655363, -65507, 18, 655363, -65506, 18, 655363, -65505, 18, 655363, -65504, 18, 655363, -65503, 18, 655363, 23, 19, 9, 24, 19, 8, 25, 19, 8, 26, 19, 8, 27, 19, 8, 28, 19, 8, 29, 19, 8, 30, 19, 8, 31, 19, 8, 32, 19, 8, 33, 19, 8, 34, 19, 8, 35, 19, 8, 36, 19, 8, 37, 19, 1048585, 65559, 19, 9, 65560, 19, 8, 65561, 19, 8, 65562, 19, 8, 65563, 19, 8, 65564, 19, 8, 65565, 19, 8, 65566, 19, 8, 65567, 19, 8, 65568, 19, 8, 65569, 19, 8, 65570, 19, 8, 65571, 19, 8, 65572, 19, 8, 65573, 19, 1048585, 131095, 19, 9, 131096, 19, 8, 131097, 19, 8, 131098, 19, 8, 131099, 19, 8, 131100, 19, 8, 131101, 19, 8, 131102, 19, 8, 131103, 19, 8, 131104, 19, 8, 131105, 19, 8, 131106, 19, 8, 131107, 19, 8, 131108, 19, 8, 131109, 19, 1048585, 196631, 19, 9, 196632, 19, 8, 196633, 19, 8, 196634, 19, 8, 196635, 19, 8, 196636, 19, 8, 196637, 19, 8, 196638, 19, 8, 196639, 19, 8, 196640, 19, 8, 196641, 19, 8, 196642, 19, 8, 196643, 19, 8, 196644, 19, 8, 196645, 19, 1048585, 262167, 19, 9, 262168, 19, 8, 262169, 19, 8, 262170, 19, 8, 262171, 19, 8, 262172, 19, 8, 262173, 19, 8, 262174, 19, 8, 262175, 19, 8, 262176, 19, 8, 262177, 19, 8, 262178, 19, 8, 262179, 19, 8, 262180, 19, 8, 262181, 19, 1048585, 327703, 19, 5, 327704, 19, 6, 327705, 19, 6, 327706, 19, 6, 327707, 19, 6, 327708, 19, 6, 327709, 19, 6, 327710, 19, 6, 327711, 19, 6, 327712, 19, 6, 327713, 19, 6, 327714, 19, 6, 327715, 19, 6, 327716, 19, 6, 327717, 19, 1048581, 0, 65531, 655368, 1, 65531, 655368, 2, 65531, 655368, 3, 65531, 655368, 4, 65531, 655368, 5, 65531, 655368, 6, 65531, 655368, 7, 65531, 655368, 8, 65531, 655368, 9, 65531, 655368, 10, 65531, 655368, 11, 65531, 655368, 12, 65531, 655368, 13, 65531, 655368, 14, 65531, 655369, 65534, 65531, 1441801, 65535, 65531, 655368, 65536, 65531, 655368, 65537, 65531, 655368, 65538, 65531, 655368, 65539, 65531, 655368, 65540, 65531, 655368, 65541, 65531, 655368, 65542, 65531, 655368, 65543, 65531, 655368, 65544, 65531, 655368, 65545, 65531, 655368, 65546, 65531, 655368, 65547, 65531, 655368, 65548, 65531, 655368, 65549, 65531, 655368, 65550, 65531, 655369, 131070, 65531, 1441801, 131071, 65531, 655368, 131072, 65531, 655368, 131073, 65531, 655368, 131074, 65531, 655368, 131075, 65531, 655368, 131076, 65531, 655368, 131077, 65531, 655368, 131078, 65531, 655368, 131079, 65531, 655368, 131080, 65531, 655368, 131081, 65531, 655368, 131082, 65531, 655368, 131083, 65531, 655368, 131084, 65531, 655368, 131085, 65531, 655368, 131086, 65531, 655369, 196606, 65531, 1441801, 196607, 65531, 655368, 196608, 65531, 655368, 196609, 65531, 655368, 196610, 65531, 655368, 196611, 65531, 655364, 196612, 65531, 655367, 196613, 65531, 655367, 196614, 65531, 655367, 196615, 65531, 655367, 196616, 65531, 655367, 196617, 65531, 655367, 196618, 65531, 655367, 196619, 65531, 655367, 196620, 65531, 1441796, 196621, 65531, 655368, 196622, 65531, 655369, 262142, 65531, 1441801, 262143, 65531, 655368, 262144, 65531, 655368, 262145, 65531, 655368, 262146, 65531, 655368, 262147, 65531, 655369, 262156, 65531, 1441801, 262157, 65531, 655368, 262158, 65531, 655369, 327678, 65531, 1441801, 327679, 65531, 655368, 327680, 65531, 655368, 327681, 65531, 655368, 327682, 65531, 655368, 327683, 65531, 655369, 327692, 65531, 1441801, 327693, 65531, 655368, 327694, 65531, 655369, 393214, 65531, 1441801, 393215, 65531, 655368, 393216, 65531, 655368, 393217, 65531, 655368, 393218, 65531, 655368, 393219, 65531, 655369, 393228, 65531, 1441801, 393229, 65531, 655368, 393230, 65531, 655369, 458750, 65531, 1441801, 458751, 65531, 655368, 458752, 65531, 655366, 458753, 65531, 655366, 458754, 65531, 655366, 458755, 65531, 655365, 458764, 65531, 1441801, 458765, 65531, 655368, 458766, 65531, 655369, 524286, 65531, 1441797, 524287, 65531, 655366, 524300, 65531, 1441797, 524301, 65531, 655366, 524302, 65531, 655365, 14, 65532, 1048584, 65534, 65532, 1441800, 65550, 65532, 1048584, 131070, 65532, 1441800, 131086, 65532, 1048584, 196606, 65532, 1441800, 196611, 65532, 1048579, 196612, 65532, 655367, 196613, 65532, 1441799, 196614, 65532, 1441799, 196615, 65532, 1441799, 196616, 65532, 1441799, 196617, 65532, 1441799, 196618, 65532, 1441799, 196619, 65532, 1441799, 196620, 65532, 1441795, 196622, 65532, 1048584, 262142, 65532, 1441800, 262147, 65532, 1048584, 262156, 65532, 1441800, 262158, 65532, 1048584, 327678, 65532, 1441800, 327683, 65532, 1048584, 327692, 65532, 1441800, 327694, 65532, 1048584, 393214, 65532, 1441800, 393219, 65532, 1048584, 393228, 65532, 1441800, 393230, 65532, 1048584, 458750, 65532, 1441800, 458752, 65532, 1441799, 458753, 65532, 1441799, 458754, 65532, 1441799, 458755, 65532, 1048582, 458764, 65532, 1441800, 458766, 65532, 1048584, 524286, 65532, 1441798, 524287, 65532, 1441799, 524300, 65532, 1441798, 524301, 65532, 1048583, 524302, 65532, 1048582, 15, 65533, 655368, 16, 65533, 655368, 17, 65533, 655368, 18, 65533, 655368, 19, 65533, 655369, 65534, 65533, 1441800, 65540, 65533, 3, 65551, 65533, 655368, 65552, 65533, 655368, 65553, 65533, 655368, 65554, 65533, 655368, 65555, 65533, 655369, 131070, 65533, 1441800, 131076, 65533, 2, 131077, 65533, 3, 131087, 65533, 655368, 131088, 65533, 655368, 131089, 65533, 655368, 131090, 65533, 655368, 131091, 65533, 655369, 196606, 65533, 1441800, 196611, 65533, 1048579, 196612, 65533, 6, 196613, 65533, 6, 196614, 65533, 655366, 196615, 65533, 655366, 196616, 65533, 655366, 196617, 65533, 655366, 196618, 65533, 7, 196619, 65533, 655366, 196620, 65533, 1441795, 196623, 65533, 655368, 196624, 65533, 655368, 196625, 65533, 655368, 196626, 65533, 655368, 196627, 65533, 655369, 262142, 65533, 1441800, 262147, 65533, 1048578, 262156, 65533, 1441800, 262159, 65533, 655368, 262160, 65533, 655368, 262161, 65533, 655368, 262162, 65533, 655368, 262163, 65533, 655369, 327678, 65533, 1441800, 327683, 65533, 1048584, 327692, 65533, 1441800, 327695, 65533, 655368, 327696, 65533, 655368, 327697, 65533, 655368, 327698, 65533, 655368, 327699, 65533, 655369, 393214, 65533, 1441800, 393219, 65533, 1048584, 393228, 65533, 1441800, 393231, 65533, 655368, 393232, 65533, 655368, 393233, 65533, 655368, 393234, 65533, 655368, 393235, 65533, 655369, 458750, 65533, 1441800, 458752, 65533, 1441799, 458753, 65533, 1441799, 458754, 65533, 1441799, 458755, 65533, 1048582, 458764, 65533, 1441800, 458767, 65533, 655368, 458768, 65533, 655368, 458769, 65533, 655368, 458770, 65533, 655368, 458771, 65533, 655369, 524286, 65533, 1441798, 524287, 65533, 1441799, 524300, 65533, 1441798, 524301, 65533, 655366, 524302, 65533, 655366, 524303, 65533, 655366, 524304, 65533, 655366, 524305, 65533, 655366, 524306, 65533, 655366, 524307, 65533, 655365, 19, 65534, 1048584, 65534, 65534, 1441800, 65539, 65534, 1048579, 65540, 65534, 1048583, 65541, 65534, 4, 65555, 65534, 1048584, 131070, 65534, 1441800, 131075, 65534, 1048578, 131077, 65534, 5, 131078, 65534, 4, 131091, 65534, 1048584, 196606, 65534, 1441800, 196611, 65534, 1048578, 196614, 65534, 5, 196615, 65534, 7, 196616, 65534, 655370, 196617, 65534, 7, 196618, 65534, 7, 196619, 65534, 7, 196620, 65534, 1441795, 196627, 65534, 1048584, 262142, 65534, 1441800, 262147, 65534, 1048578, 262152, 65534, 655372, 262156, 65534, 1441800, 262163, 65534, 1048584, 327678, 65534, 1441800, 327683, 65534, 1048584, 327688, 65534, 655373, 327692, 65534, 1441794, 327699, 65534, 1048584, 393214, 65534, 1441800, 393219, 65534, 1048584, 393228, 65534, 1441794, 393235, 65534, 1048584, 458750, 65534, 1441800, 458752, 65534, 1441799, 458753, 65534, 1441799, 458754, 65534, 1441799, 458755, 65534, 1048582, 458764, 65534, 1441794, 458771, 65534, 1048584, 524286, 65534, 1441798, 524287, 65534, 1441799, 524300, 65534, 1441798, 524301, 65534, 1048583, 524302, 65534, 1048583, 524303, 65534, 1048583, 524304, 65534, 1048583, 524305, 65534, 1048583, 524306, 65534, 1048583, 524307, 65534, 1048582, 4, 65535, 2, 5, 65535, 2, 6, 65535, 2, 7, 65535, 2, 8, 65535, 2, 9, 65535, 2, 10, 65535, 2, 11, 65535, 2, 19, 65535, 655368, 20, 65535, 655368, 21, 65535, 655368, 22, 65535, 655368, 23, 65535, 655368, 24, 65535, 655368, 25, 65535, 655368, 26, 65535, 655368, 27, 65535, 655368, 28, 65535, 655368, 29, 65535, 655368, 30, 65535, 655368, 31, 65535, 655368, 32, 65535, 655368, 33, 65535, 655368, 34, 65535, 655368, 35, 65535, 655368, 36, 65535, 655368, 37, 65535, 655368, 38, 65535, 655369, 65534, 65535, 1441800, 65539, 65535, 1048579, 65540, 65535, 6, 65541, 65535, 6, 65542, 65535, 9, 65543, 65535, 2, 65544, 65535, 2, 65545, 65535, 2, 65546, 65535, 2, 65547, 65535, 2, 65555, 65535, 1048584, 65556, 65535, 655366, 65557, 65535, 655366, 65558, 65535, 655366, 65559, 65535, 655366, 65560, 65535, 655366, 65561, 65535, 655366, 65562, 65535, 655366, 65563, 65535, 655366, 65564, 65535, 655366, 65565, 65535, 655366, 65566, 65535, 655366, 65567, 65535, 655366, 65568, 65535, 655366, 65569, 65535, 655366, 65570, 65535, 655366, 65571, 65535, 655366, 65572, 65535, 655366, 65573, 65535, 655366, 65574, 65535, 655365, 131070, 65535, 1441800, 131075, 65535, 1048578, 131078, 65535, 5, 131079, 65535, 9, 131080, 65535, 2, 131081, 65535, 2, 131082, 65535, 2, 131083, 65535, 2, 131091, 65535, 1048584, 196606, 65535, 1441800, 196611, 65535, 1048578, 196615, 65535, 5, 196616, 65535, 6, 196617, 65535, 6, 196618, 65535, 6, 196619, 65535, 6, 196620, 65535, 1441795, 196627, 65535, 1048584, 262142, 65535, 1441800, 262147, 65535, 1048578, 262156, 65535, 1441800, 262163, 65535, 1048584, 327678, 65535, 1441800, 327683, 65535, 1048584, 327692, 65535, 1441794, 327699, 65535, 1048584, 393214, 65535, 1441800, 393219, 65535, 1048584, 393228, 65535, 1441794, 393235, 65535, 1048584, 458750, 65535, 1441800, 458752, 65535, 1441799, 458753, 65535, 1441799, 458754, 65535, 1441799, 458755, 65535, 1048582, 458764, 65535, 1441794, 458771, 65535, 1048584, 524286, 65535, 1441798, 524287, 65535, 1441799, 524300, 65535, 1441798, 524301, 65535, 1048583, 524302, 65535, 1048583, 524303, 65535, 1048583, 524304, 65535, 1048583, 524305, 65535, 1048583, 524306, 65535, 1048583, 524307, 65535, 1048582, -65532, 65535, 3, -65531, 65535, 3, -65530, 65535, 3, -65529, 65535, 3, -65528, 65535, 3, -65527, 65535, 3, -65526, 65535, 3, -65525, 65535, 3 ) } __meta__ = { "_editor_clip_": 0, @@ -118,42 +118,34 @@ __meta__ = { [node name="ExtraFloor1" type="MeshInstance" parent="GridMap"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 5, 9 ) mesh = ExtResource( 2 ) -material/0 = null [node name="ExtraFloor2" type="MeshInstance" parent="GridMap"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 35, 3, 29 ) mesh = ExtResource( 2 ) -material/0 = null [node name="ExtraFloor3" type="MeshInstance" parent="GridMap"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 37, 3, 29 ) mesh = ExtResource( 2 ) -material/0 = null [node name="ExtraFloor4" type="MeshInstance" parent="GridMap"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 39, 11, 31 ) mesh = ExtResource( 2 ) -material/0 = null [node name="ExtraFloor5" type="MeshInstance" parent="GridMap"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 51, 3, 23 ) mesh = ExtResource( 2 ) -material/0 = null [node name="ExtraFloor6" type="MeshInstance" parent="GridMap"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 5, -1 ) mesh = ExtResource( 2 ) -material/0 = null [node name="ExtraFloor7" type="MeshInstance" parent="GridMap"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 3, -1 ) mesh = ExtResource( 2 ) -material/0 = null [node name="ExtraFloor8" type="MeshInstance" parent="GridMap"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 11, 9 ) mesh = ExtResource( 2 ) -material/0 = null [node name="Coins" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -6, -12 ) diff --git a/3d/platformer/stage/tiles.tres b/3d/platformer/stage/tiles.tres index dc9d50e4..aba48aa0 100644 --- a/3d/platformer/stage/tiles.tres +++ b/3d/platformer/stage/tiles.tres @@ -547,109 +547,109 @@ data = PoolVector3Array( -0.9999, 1, 0.55, -0.9999, -0.9999, -0.9999, -0.9999, 1 [resource] item/0/name = "CeilingCorner" item/0/mesh = SubResource( 2 ) -item/0/mesh_transform = null +item/0/mesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/0/shapes = [ SubResource( 5 ), Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) ] item/0/navmesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/0/preview = SubResource( 4 ) item/1/name = "Ceiling" item/1/mesh = SubResource( 6 ) -item/1/mesh_transform = null +item/1/mesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/1/shapes = [ SubResource( 9 ), Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) ] item/1/navmesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/1/preview = SubResource( 8 ) item/2/name = "WallVar" item/2/mesh = SubResource( 42 ) -item/2/mesh_transform = null +item/2/mesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/2/shapes = [ SubResource( 45 ), Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) ] item/2/navmesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/2/preview = SubResource( 44 ) item/3/name = "WallFloor" item/3/mesh = SubResource( 46 ) -item/3/mesh_transform = null +item/3/mesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/3/shapes = [ SubResource( 49 ), Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) ] item/3/navmesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/3/preview = SubResource( 48 ) item/4/name = "CornerFloor" item/4/mesh = SubResource( 50 ) -item/4/mesh_transform = null +item/4/mesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/4/shapes = [ SubResource( 53 ), Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) ] item/4/navmesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/4/preview = SubResource( 52 ) item/5/name = "FloorCorner" item/5/mesh = SubResource( 54 ) -item/5/mesh_transform = null +item/5/mesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/5/shapes = [ SubResource( 57 ), Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) ] item/5/navmesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/5/preview = SubResource( 56 ) item/6/name = "FloorEdge" item/6/mesh = SubResource( 58 ) -item/6/mesh_transform = null +item/6/mesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/6/shapes = [ SubResource( 61 ), Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) ] item/6/navmesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/6/preview = SubResource( 60 ) item/7/name = "Floor" item/7/mesh = ExtResource( 3 ) -item/7/mesh_transform = null +item/7/mesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/7/shapes = [ SubResource( 64 ), Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) ] item/7/navmesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/7/preview = SubResource( 63 ) item/8/name = "Wall" item/8/mesh = SubResource( 65 ) -item/8/mesh_transform = null +item/8/mesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/8/shapes = [ SubResource( 68 ), Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) ] item/8/navmesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/8/preview = SubResource( 67 ) item/9/name = "Corner" item/9/mesh = SubResource( 69 ) -item/9/mesh_transform = null +item/9/mesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/9/shapes = [ SubResource( 72 ), Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) ] item/9/navmesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/9/preview = SubResource( 71 ) item/10/name = "TrunkFloor" item/10/mesh = SubResource( 10 ) -item/10/mesh_transform = null +item/10/mesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/10/shapes = [ SubResource( 13 ), Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) ] item/10/navmesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/10/preview = SubResource( 12 ) item/11/name = "Trunk" item/11/mesh = SubResource( 14 ) -item/11/mesh_transform = null +item/11/mesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/11/shapes = [ SubResource( 17 ), Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) ] item/11/navmesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/11/preview = SubResource( 16 ) item/12/name = "TrunkDeco" item/12/mesh = SubResource( 18 ) -item/12/mesh_transform = null +item/12/mesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/12/shapes = [ SubResource( 21 ), Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) ] item/12/navmesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/12/preview = SubResource( 20 ) item/13/name = "TreeTop" item/13/mesh = SubResource( 22 ) -item/13/mesh_transform = null +item/13/mesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/13/shapes = [ SubResource( 25 ), Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) ] item/13/navmesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/13/preview = SubResource( 24 ) item/14/name = "CeilingWall" item/14/mesh = SubResource( 26 ) -item/14/mesh_transform = null +item/14/mesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/14/shapes = [ SubResource( 29 ), Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) ] item/14/navmesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/14/preview = SubResource( 28 ) item/15/name = "Ramp" item/15/mesh = SubResource( 30 ) -item/15/mesh_transform = null +item/15/mesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/15/shapes = [ SubResource( 33 ), Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) ] item/15/navmesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/15/preview = SubResource( 32 ) item/16/name = "CornerFix" item/16/mesh = SubResource( 34 ) -item/16/mesh_transform = null +item/16/mesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/16/shapes = [ SubResource( 37 ), Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) ] item/16/navmesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/16/preview = SubResource( 36 ) item/17/name = "CornerFixr" item/17/mesh = SubResource( 38 ) -item/17/mesh_transform = null +item/17/mesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/17/shapes = [ SubResource( 41 ), Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) ] item/17/navmesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) item/17/preview = SubResource( 40 ) diff --git a/3d/rigidbody_character/cube_rigidbody.tscn b/3d/rigidbody_character/cube_rigidbody.tscn index ad42c18f..2a3fb208 100644 --- a/3d/rigidbody_character/cube_rigidbody.tscn +++ b/3d/rigidbody_character/cube_rigidbody.tscn @@ -22,4 +22,3 @@ shape = SubResource( 1 ) [node name="MeshInstance" type="MeshInstance" parent="."] mesh = SubResource( 2 ) -material/0 = null diff --git a/3d/rigidbody_character/level.gd b/3d/rigidbody_character/level.gd index d48eb8df..b582731b 100644 --- a/3d/rigidbody_character/level.gd +++ b/3d/rigidbody_character/level.gd @@ -1,5 +1,6 @@ extends Spatial + # Random spawn of Rigidbody cubes. func _on_SpawnTimer_timeout(): var new_rb = preload("res://cube_rigidbody.tscn").instance() diff --git a/3d/rigidbody_character/level.tscn b/3d/rigidbody_character/level.tscn index ba116c17..eccc44cc 100644 --- a/3d/rigidbody_character/level.tscn +++ b/3d/rigidbody_character/level.tscn @@ -82,7 +82,6 @@ input_capture_on_drag = true [node name="Mesh" type="MeshInstance" parent="Elevator1"] mesh = ExtResource( 3 ) -material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Elevator1"] shape = SubResource( 1 ) @@ -97,7 +96,6 @@ transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -3.5, 8.5, 4.5 ) [node name="Mesh" type="MeshInstance" parent="Elevator2"] mesh = ExtResource( 3 ) -material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Elevator2"] shape = SubResource( 1 ) diff --git a/3d/rigidbody_character/player/cubio.gd b/3d/rigidbody_character/player/cubio.gd index a9f9ce70..7bb069ad 100644 --- a/3d/rigidbody_character/player/cubio.gd +++ b/3d/rigidbody_character/player/cubio.gd @@ -1,9 +1,11 @@ extends RigidBody + onready var raycast = $RayCast onready var camera = $Target/Camera onready var start_position = translation + func _physics_process(_delta): if Input.is_action_just_pressed("exit"): get_tree().quit() diff --git a/3d/rigidbody_character/player/follow_camera.gd b/3d/rigidbody_character/player/follow_camera.gd index 00a11a8a..fdb9bedd 100644 --- a/3d/rigidbody_character/player/follow_camera.gd +++ b/3d/rigidbody_character/player/follow_camera.gd @@ -1,9 +1,10 @@ extends Camera -var collision_exception = [] + export var min_distance = 0.5 export var max_distance = 3.0 export var angle_v_adjust = 0.0 +var collision_exception = [] var max_height = 2.0 var min_height = 0 onready var target_node: Spatial = get_parent() diff --git a/3d/truck_town/car_base.tscn b/3d/truck_town/car_base.tscn index 092e0dc4..d0bcbe47 100644 --- a/3d/truck_town/car_base.tscn +++ b/3d/truck_town/car_base.tscn @@ -138,7 +138,6 @@ damping_compression = 0.88 [node name="Wheel1" type="MeshInstance" parent="Body/Wheel1"] _import_path = NodePath("BODY-vehicle/wheel1-wheel") mesh = SubResource( 2 ) -material/0 = null [node name="Wheel2" type="VehicleWheel" parent="Body"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.573678, 0.115169, -0.783403 ) @@ -153,7 +152,6 @@ damping_compression = 0.88 [node name="Wheel2" type="MeshInstance" parent="Body/Wheel2"] _import_path = NodePath("BODY-vehicle/wheel2-wheel") mesh = SubResource( 3 ) -material/0 = null [node name="Wheel3" type="VehicleWheel" parent="Body"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.573678, 0.115169, 1.10416 ) @@ -169,7 +167,6 @@ damping_compression = 0.88 [node name="Wheel3" type="MeshInstance" parent="Body/Wheel3"] _import_path = NodePath("BODY-vehicle/wheel3-wheel") mesh = SubResource( 4 ) -material/0 = null [node name="Wheel4" type="VehicleWheel" parent="Body"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.573678, 0.115169, -0.783403 ) @@ -184,14 +181,10 @@ damping_compression = 0.88 [node name="Wheel4" type="MeshInstance" parent="Body/Wheel4"] _import_path = NodePath("BODY-vehicle/wheel4-wheel") mesh = SubResource( 5 ) -material/0 = null [node name="Body" type="MeshInstance" parent="Body"] _import_path = NodePath("BODY-vehicle") mesh = SubResource( 6 ) -material/0 = null -material/1 = null -material/2 = null [node name="CollisionShape" type="CollisionShape" parent="Body"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.588269, 0.0774262 ) diff --git a/3d/truck_town/car_select.gd b/3d/truck_town/car_select.gd index 0bb96d74..b04d80b1 100644 --- a/3d/truck_town/car_select.gd +++ b/3d/truck_town/car_select.gd @@ -1,7 +1,9 @@ extends Control + var town = null + func _process(_delta): if Input.is_action_just_pressed("back"): _on_Back_pressed() diff --git a/3d/truck_town/car_select.tscn b/3d/truck_town/car_select.tscn index 0f6dcb65..c26b21f8 100644 --- a/3d/truck_town/car_select.tscn +++ b/3d/truck_town/car_select.tscn @@ -18,8 +18,7 @@ size_flags_horizontal = 2 size_flags_vertical = 2 script = ExtResource( 1 ) __meta__ = { -"__editor_plugin_screen__": "2D", -"_edit_use_anchors_": false +"__editor_plugin_screen__": "2D" } [node name="MiniVan" type="Button" parent="."] diff --git a/3d/truck_town/follow_camera.gd b/3d/truck_town/follow_camera.gd index e15f27e7..da4bbd3c 100644 --- a/3d/truck_town/follow_camera.gd +++ b/3d/truck_town/follow_camera.gd @@ -1,11 +1,13 @@ extends Camera + export var min_distance = 2.0 export var max_distance = 4.0 export var angle_v_adjust = 0.0 -var collision_exception = [] export var height = 1.5 +var collision_exception = [] + func _ready(): # Find collision exceptions for ray. diff --git a/3d/truck_town/spedometer.gd b/3d/truck_town/spedometer.gd index a0fcb3fe..3ca177e7 100644 --- a/3d/truck_town/spedometer.gd +++ b/3d/truck_town/spedometer.gd @@ -1,5 +1,6 @@ extends Button + enum SpeedUnit { METERS_PER_SECOND = 0, KILOMETERS_PER_HOUR = 1, @@ -8,6 +9,7 @@ enum SpeedUnit { export(SpeedUnit) var speed_unit = 0 + func _process(_delta): var speed = get_parent().get_parent().get_child(1).get_child(0).linear_velocity.length() if speed_unit == SpeedUnit.METERS_PER_SECOND: diff --git a/3d/truck_town/tow_truck.tscn b/3d/truck_town/tow_truck.tscn index 0f34f831..0be2e7da 100644 --- a/3d/truck_town/tow_truck.tscn +++ b/3d/truck_town/tow_truck.tscn @@ -271,7 +271,6 @@ damping_compression = 0.88 _import_path = NodePath("BODY-vehicle/wheel1-wheel") use_in_baked_light = true mesh = SubResource( 1 ) -material/0 = null [node name="Wheel2" type="VehicleWheel" parent="Body"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.573678, 0.000773743, -0.783403 ) @@ -286,7 +285,6 @@ damping_compression = 0.88 _import_path = NodePath("BODY-vehicle/wheel2-wheel") use_in_baked_light = true mesh = SubResource( 2 ) -material/0 = null [node name="Wheel3" type="VehicleWheel" parent="Body"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.573678, 0.000773743, 1.10416 ) @@ -302,7 +300,6 @@ damping_compression = 0.88 _import_path = NodePath("BODY-vehicle/wheel3-wheel") use_in_baked_light = true mesh = SubResource( 3 ) -material/0 = null [node name="Wheel4" type="VehicleWheel" parent="Body"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.573678, 0.000773743, -0.783403 ) @@ -317,15 +314,11 @@ damping_compression = 0.88 _import_path = NodePath("BODY-vehicle/wheel4-wheel") use_in_baked_light = true mesh = SubResource( 4 ) -material/0 = null [node name="Body" type="MeshInstance" parent="Body"] _import_path = NodePath("BODY-vehicle") use_in_baked_light = true mesh = SubResource( 5 ) -material/0 = null -material/1 = null -material/2 = null [node name="CameraBase" type="Spatial" parent="Body"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.97449, 0 ) @@ -355,7 +348,6 @@ _import_path = NodePath("chain1") transform = Transform( 0.0355859, 0, 0, 0, 0.0355859, 0, 0, 0, 0.0355859, 0, 0, 0 ) use_in_baked_light = true mesh = SubResource( 7 ) -material/0 = null [node name="CollisionShape" type="CollisionShape" parent="ChainB1"] transform = Transform( 1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0 ) @@ -369,7 +361,6 @@ _import_path = NodePath("chain1") transform = Transform( 0.0355859, 0, 0, 0, 0.0355859, 0, 0, 0, 0.0355859, 0, 0, 0 ) use_in_baked_light = true mesh = SubResource( 7 ) -material/0 = null [node name="CollisionShape" type="CollisionShape" parent="ChainB2"] transform = Transform( 1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0 ) @@ -383,7 +374,6 @@ _import_path = NodePath("chain1") transform = Transform( 0.0355859, 0, 0, 0, 0.0355859, 0, 0, 0, 0.0355859, 0, 0, 0 ) use_in_baked_light = true mesh = SubResource( 7 ) -material/0 = null [node name="CollisionShape" type="CollisionShape" parent="ChainB3"] transform = Transform( 1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0 ) @@ -397,7 +387,6 @@ _import_path = NodePath("chain1") transform = Transform( 0.0355859, 0, 0, 0, 0.0355859, 0, 0, 0, 0.0355859, 0, 0, 0 ) use_in_baked_light = true mesh = SubResource( 7 ) -material/0 = null [node name="CollisionShape" type="CollisionShape" parent="ChainB4"] transform = Transform( 1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0 ) @@ -411,7 +400,6 @@ _import_path = NodePath("chain1") transform = Transform( 0.0355859, 0, 0, 0, 0.0355859, 0, 0, 0, 0.0355859, 0, 0, 0 ) use_in_baked_light = true mesh = SubResource( 7 ) -material/0 = null [node name="CollisionShape" type="CollisionShape" parent="ChainB5"] transform = Transform( 1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0 ) @@ -469,7 +457,6 @@ damping_compression = 0.88 [node name="Wheel1" type="MeshInstance" parent="Body2/Wheel1"] _import_path = NodePath("BODY-vehicle/wheel1-wheel") mesh = SubResource( 10 ) -material/0 = null [node name="Wheel2" type="VehicleWheel" parent="Body2"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.573678, 0.115169, -0.783403 ) @@ -484,7 +471,6 @@ damping_compression = 0.88 [node name="Wheel2" type="MeshInstance" parent="Body2/Wheel2"] _import_path = NodePath("BODY-vehicle/wheel2-wheel") mesh = SubResource( 11 ) -material/0 = null [node name="Wheel3" type="VehicleWheel" parent="Body2"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.573678, 0.115169, 1.10416 ) @@ -500,7 +486,6 @@ damping_compression = 0.88 [node name="Wheel3" type="MeshInstance" parent="Body2/Wheel3"] _import_path = NodePath("BODY-vehicle/wheel3-wheel") mesh = SubResource( 12 ) -material/0 = null [node name="Wheel4" type="VehicleWheel" parent="Body2"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.573678, 0.115169, -0.783403 ) @@ -515,14 +500,10 @@ damping_compression = 0.88 [node name="Wheel4" type="MeshInstance" parent="Body2/Wheel4"] _import_path = NodePath("BODY-vehicle/wheel4-wheel") mesh = SubResource( 13 ) -material/0 = null [node name="Body" type="MeshInstance" parent="Body2"] _import_path = NodePath("BODY-vehicle") mesh = SubResource( 16 ) -material/0 = null -material/1 = null -material/2 = null [node name="CollisionShape" type="CollisionShape" parent="Body2"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.588269, 0.0774262 ) diff --git a/3d/truck_town/town_mesh.tscn b/3d/truck_town/town_mesh.tscn index 23ef37f3..9c6490e7 100644 --- a/3d/truck_town/town_mesh.tscn +++ b/3d/truck_town/town_mesh.tscn @@ -541,70 +541,60 @@ _import_path = NodePath("house_01a_GEO.002") transform = Transform( -43.6047, 0, -5.57929e-05, 0, 43.6047, 0, 5.57929e-05, 0, -43.6047, -42.0954, -0.0975664, -28.5866 ) use_in_baked_light = true mesh = SubResource( 1 ) -material/0 = null [node name="house_02_GEO.001" type="MeshInstance" parent="."] _import_path = NodePath("house_02_GEO.001") transform = Transform( -0.833531, 0, -43.5967, 0, 43.6047, 0, 43.5967, 0, -0.833531, -75.884, 2.80561, -25.8623 ) use_in_baked_light = true mesh = SubResource( 2 ) -material/0 = null [node name="house_03a_GEO.001" type="MeshInstance" parent="."] _import_path = NodePath("house_03a_GEO.001") transform = Transform( -2.78964e-05, 0, 43.6047, 0, 43.6047, 0, -43.6047, 0, -2.78964e-05, 20.2362, 5.91343, -47.4137 ) use_in_baked_light = true mesh = SubResource( 3 ) -material/0 = null [node name="house_02a_GEO.001" type="MeshInstance" parent="."] _import_path = NodePath("house_02a_GEO.001") transform = Transform( 8.36893e-05, 0, -43.6047, 0, 43.6047, 0, 43.6047, 0, 8.36893e-05, -73.5869, 2.78376, -47.8419 ) use_in_baked_light = true mesh = SubResource( 4 ) -material/0 = null [node name="house_05a_GEO.001" type="MeshInstance" parent="."] _import_path = NodePath("house_05a_GEO.001") transform = Transform( 43.6047, 0, 0, 0, 43.6047, 0, 0, 0, 43.6047, -12.1119, 4.02536, -42.671 ) use_in_baked_light = true mesh = SubResource( 5 ) -material/0 = null [node name="house_05_GEO.001" type="MeshInstance" parent="."] _import_path = NodePath("house_05_GEO.001") transform = Transform( -0.0279572, 0, -43.6047, 0, 43.6047, 0, 43.6047, 0, -0.0279572, 9.26931, 5.91452, -41.5705 ) use_in_baked_light = true mesh = SubResource( 6 ) -material/0 = null [node name="house_01_GEO.001" type="MeshInstance" parent="."] _import_path = NodePath("house_01_GEO.001") transform = Transform( -0.50329, 0, 43.6018, 0, 43.6047, 0, -43.6018, 0, -0.50329, 14.6854, 3.32976, -16.0483 ) use_in_baked_light = true mesh = SubResource( 7 ) -material/0 = null [node name="house_04a_GEO.001" type="MeshInstance" parent="."] _import_path = NodePath("house_04a_GEO.001") transform = Transform( -43.6046, 0, 0.0722779, 0, 43.6047, 0, -0.0722779, 0, -43.6046, -14.9966, 4.83627, -1.81873 ) use_in_baked_light = true mesh = SubResource( 8 ) -material/0 = null [node name="house_03_GEO.001" type="MeshInstance" parent="."] _import_path = NodePath("house_03_GEO.001") transform = Transform( 43.6047, 0, 0, 0, 43.6047, 0, 0, 0, 43.6047, -40.1375, -0.203611, -5.43416 ) use_in_baked_light = true mesh = SubResource( 9 ) -material/0 = null [node name="house_04_GEO.001" type="MeshInstance" parent="."] _import_path = NodePath("house_04_GEO.001") transform = Transform( 43.6047, 0, 0, 0, 43.6047, 0, 0, 0, 43.6047, -54.4039, -0.269261, -30.6303 ) use_in_baked_light = true mesh = SubResource( 10 ) -material/0 = null [node name="house_01a_GEO.001" type="MeshInstance" parent="."] _import_path = NodePath("house_01a_GEO.001") @@ -617,7 +607,6 @@ _import_path = NodePath("road-col") transform = Transform( 3.55498, 0, 0, 0, 3.55498, 0, 0, 0, 3.55498, 3.24208, 0.00395584, 0.181654 ) use_in_baked_light = true mesh = SubResource( 12 ) -material/0 = null [node name="col" type="StaticBody" parent="road"] @@ -629,7 +618,6 @@ _import_path = NodePath("grass-col") transform = Transform( 3.55498, 0, 0, 0, 3.55498, 0, 0, 0, 3.55498, 3.24208, 0.00395584, 0.181654 ) use_in_baked_light = true mesh = SubResource( 14 ) -material/0 = null [node name="col" type="StaticBody" parent="grass"] @@ -647,77 +635,66 @@ _import_path = NodePath("house7-col") transform = Transform( -43.6047, 0, -5.57929e-05, 0, 43.6047, 0, 5.57929e-05, 0, -43.6047, -42.0954, -0.0975664, -28.5866 ) use_in_baked_light = true mesh = SubResource( 17 ) -material/0 = null [node name="door_01_GEO.006" type="MeshInstance" parent="house7"] _import_path = NodePath("house7-col/door_01_GEO.006") transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1.19209e-07, 0, -0.0385268 ) use_in_baked_light = true mesh = SubResource( 18 ) -material/0 = null [node name="window_01_GEO.021" type="MeshInstance" parent="house7"] _import_path = NodePath("house7-col/window_01_GEO.021") transform = Transform( 1, 0, -3.38813e-21, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0352638, 0.0373665, -0.0385268 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_01_GEO.022" type="MeshInstance" parent="house7"] _import_path = NodePath("house7-col/window_01_GEO.022") transform = Transform( 1, 0, -3.38813e-21, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0377976, 0.0373665, -0.0385268 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_01_GEO.023" type="MeshInstance" parent="house7"] _import_path = NodePath("house7-col/window_01_GEO.023") transform = Transform( 1, 0, -3.38813e-21, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0377976, 0.090053, -0.0385268 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_01_GEO.024" type="MeshInstance" parent="house7"] _import_path = NodePath("house7-col/window_01_GEO.024") transform = Transform( 1, 0, -3.38813e-21, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0352638, 0.090053, -0.0385268 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.032" type="MeshInstance" parent="house7"] _import_path = NodePath("house7-col/window_02_GEO.032") transform = Transform( -4.37113e-08, 1, 4.37114e-08, 0, -4.37114e-08, 1, 1, 4.37113e-08, 1.91068e-15, 0.0614011, 0.0373665, 0.0161048 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.033" type="MeshInstance" parent="house7"] _import_path = NodePath("house7-col/window_02_GEO.033") transform = Transform( -4.37113e-08, 1, 4.37114e-08, 0, -4.37114e-08, 1, 1, 4.37113e-08, 1.91068e-15, 0.0614011, 0.0909522, 0.00224483 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.034" type="MeshInstance" parent="house7"] _import_path = NodePath("house7-col/window_02_GEO.034") transform = Transform( 7.54978e-08, -1, -4.37114e-08, 0, -4.37114e-08, 1, -1, -7.54978e-08, -3.30011e-15, -0.0613385, 0.0907937, 0.00224477 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_03_GEO.015" type="MeshInstance" parent="house7"] _import_path = NodePath("house7-col/window_03_GEO.015") transform = Transform( 7.54978e-08, -1, -4.37114e-08, 0, -4.37114e-08, 1, -1, -7.54978e-08, -3.30011e-15, -0.0613385, 0.0373665, 0.0176313 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="window_03_GEO.016" type="MeshInstance" parent="house7"] _import_path = NodePath("house7-col/window_03_GEO.016") transform = Transform( -4.37113e-08, 1, 4.37114e-08, 0, -4.37114e-08, 1, 1, 4.37113e-08, 1.91068e-15, 0.0613388, 0.0373665, -0.0162845 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="col" type="StaticBody" parent="house7"] @@ -729,105 +706,90 @@ _import_path = NodePath("house10-col") transform = Transform( 8.36893e-05, 0, -43.6047, 0, 43.6047, 0, 43.6047, 0, 8.36893e-05, -73.5869, 2.78376, -47.8419 ) use_in_baked_light = true mesh = SubResource( 23 ) -material/0 = null [node name="door_04_GEO.005" type="MeshInstance" parent="house10"] _import_path = NodePath("house10-col/door_04_GEO.005") transform = Transform( 1, 0, 1.06029e-08, 4.84109e-15, 1, 9.29138e-21, 0, 0, 1, 0.0147618, 0, 0.00162244 ) use_in_baked_light = true mesh = SubResource( 24 ) -material/0 = null [node name="window_01_GEO.019" type="MeshInstance" parent="house10"] _import_path = NodePath("house10-col/window_01_GEO.019") transform = Transform( 1, -5.18721e-08, -5.82013e-15, 8.3938e-15, -4.37114e-08, 1, -4.12692e-08, -1, -4.37114e-08, -0.0493164, 0.0383933, -0.0474851 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_01_GEO.020" type="MeshInstance" parent="house10"] _import_path = NodePath("house10-col/window_01_GEO.020") transform = Transform( 8.61007e-08, 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 1, -7.54978e-08, -4.37114e-08, -0.02475, 0.0383933, -0.0243369 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_01_GEO.025" type="MeshInstance" parent="house10"] _import_path = NodePath("house10-col/window_01_GEO.025") transform = Transform( 8.61007e-08, 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 1, -7.54978e-08, -4.37114e-08, -0.02475, 0.0890986, -0.0243369 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_01_GEO.026" type="MeshInstance" parent="house10"] _import_path = NodePath("house10-col/window_01_GEO.026") transform = Transform( 1, -5.18721e-08, -5.82013e-15, 8.3938e-15, -4.37114e-08, 1, -4.12692e-08, -1, -4.37114e-08, -0.0493164, 0.0890986, -0.0474851 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_01_GEO.027" type="MeshInstance" parent="house10"] _import_path = NodePath("house10-col/window_01_GEO.027") transform = Transform( 1, -5.18721e-08, -5.82013e-15, 8.3938e-15, -4.37114e-08, 1, -4.12692e-08, -1, -4.37114e-08, 0.0388702, 0.0890986, 0.00162244 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_01_GEO.028" type="MeshInstance" parent="house10"] _import_path = NodePath("house10-col/window_01_GEO.028") transform = Transform( 1, -5.18721e-08, -5.82013e-15, 8.3938e-15, -4.37114e-08, 1, -4.12692e-08, -1, -4.37114e-08, -0.00660038, 0.0890986, 0.00162244 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="window_02_GEO.029" type="MeshInstance" parent="house10"] _import_path = NodePath("house10-col/window_02_GEO.029") transform = Transform( 6.48949e-08, -1, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1, -7.54978e-08, -4.37114e-08, -0.0720218, 0.0369723, 0.0314384 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.030" type="MeshInstance" parent="house10"] _import_path = NodePath("house10-col/window_02_GEO.030") transform = Transform( 6.48949e-08, -1, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1, -7.54978e-08, -4.37114e-08, -0.0720217, 0.0369723, -0.0149536 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.031" type="MeshInstance" parent="house10"] _import_path = NodePath("house10-col/window_02_GEO.031") transform = Transform( 8.61007e-08, 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 1, -7.54978e-08, -4.37114e-08, 0.0607295, 0.0369723, 0.0305176 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.035" type="MeshInstance" parent="house10"] _import_path = NodePath("house10-col/window_02_GEO.035") transform = Transform( 8.61007e-08, 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 1, -7.54978e-08, -4.37114e-08, 0.0607295, 0.0876775, 0.0305176 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.036" type="MeshInstance" parent="house10"] _import_path = NodePath("house10-col/window_02_GEO.036") transform = Transform( 6.48949e-08, -1, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1, -7.54978e-08, -4.37114e-08, -0.0720217, 0.0876775, -0.0149536 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.037" type="MeshInstance" parent="house10"] _import_path = NodePath("house10-col/window_02_GEO.037") transform = Transform( 6.48949e-08, -1, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1, -7.54978e-08, -4.37114e-08, -0.0720218, 0.0876775, 0.0314384 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_03_GEO.014" type="MeshInstance" parent="house10"] _import_path = NodePath("house10-col/window_03_GEO.014") transform = Transform( 1, -1.06029e-08, -4.63463e-16, 4.84109e-15, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0415633, 0.0383933, 0.00158703 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="col" type="StaticBody" parent="house10"] @@ -839,98 +801,84 @@ _import_path = NodePath("house3-col") transform = Transform( -2.78964e-05, 0, 43.6047, 0, 43.6047, 0, -43.6047, 0, -2.78964e-05, 20.2362, 5.91343, -47.4137 ) use_in_baked_light = true mesh = SubResource( 26 ) -material/0 = null [node name="door_03_GEO.002" type="MeshInstance" parent="house3"] _import_path = NodePath("house3-col/door_03_GEO.002") transform = Transform( 1, 0, 0, -3.09713e-21, 1, 4.84109e-15, -3.06077e-08, 0, 1, 0.0334511, 0, -0.0125916 ) use_in_baked_light = true mesh = SubResource( 27 ) -material/0 = null [node name="window_01_GEO.015" type="MeshInstance" parent="house3"] _import_path = NodePath("house3-col/window_01_GEO.015") transform = Transform( 7.54979e-08, -1, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1, -4.48902e-08, -4.37114e-08, -0.172729, 0.0383933, 0.031372 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_01_GEO.016" type="MeshInstance" parent="house3"] _import_path = NodePath("house3-col/window_01_GEO.016") transform = Transform( 1, 0, 0, -3.09713e-21, -4.37114e-08, 1, -3.06077e-08, -1, -4.37114e-08, -0.13697, 0.0383933, -0.000610381 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_01_GEO.017" type="MeshInstance" parent="house3"] _import_path = NodePath("house3-col/window_01_GEO.017") transform = Transform( 1, 0, 0, -3.09713e-21, -4.37114e-08, 1, -3.06077e-08, -1, -4.37114e-08, -0.0844759, 0.0383933, -0.000610411 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_01_GEO.018" type="MeshInstance" parent="house3"] _import_path = NodePath("house3-col/window_01_GEO.018") transform = Transform( 1, 0, 0, -3.09713e-21, -4.37114e-08, 1, -3.06077e-08, -1, -4.37114e-08, -0.0319825, 0.0383933, -0.000610381 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_01_GEO.029" type="MeshInstance" parent="house3"] _import_path = NodePath("house3-col/window_01_GEO.029") transform = Transform( 1, 0, 0, -3.09713e-21, -4.37114e-08, 1, -3.06077e-08, -1, -4.37114e-08, -0.0319825, 0.0873911, -0.000610381 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_01_GEO.030" type="MeshInstance" parent="house3"] _import_path = NodePath("house3-col/window_01_GEO.030") transform = Transform( 1, 0, 0, -3.09713e-21, -4.37114e-08, 1, -3.06077e-08, -1, -4.37114e-08, -0.0844759, 0.0873911, -0.000610411 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_01_GEO.031" type="MeshInstance" parent="house3"] _import_path = NodePath("house3-col/window_01_GEO.031") transform = Transform( 1, 0, 0, -3.09713e-21, -4.37114e-08, 1, -3.06077e-08, -1, -4.37114e-08, -0.13697, 0.0873911, -0.000610381 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_01_GEO.032" type="MeshInstance" parent="house3"] _import_path = NodePath("house3-col/window_01_GEO.032") transform = Transform( 7.54979e-08, -1, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1, -4.48902e-08, -4.37114e-08, -0.172729, 0.0873911, 0.031372 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.028" type="MeshInstance" parent="house3"] _import_path = NodePath("house3-col/window_02_GEO.028") transform = Transform( 7.5498e-08, 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 1, -1.06106e-07, -4.37114e-08, 0.0630491, 0.0369723, 0.026001 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.038" type="MeshInstance" parent="house3"] _import_path = NodePath("house3-col/window_02_GEO.038") transform = Transform( 7.5498e-08, 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 1, -1.06106e-07, -4.37114e-08, 0.0630491, 0.0859701, 0.00763479 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="window_02_GEO.039" type="MeshInstance" parent="house3"] _import_path = NodePath("house3-col/window_02_GEO.039") transform = Transform( 1, -4.12694e-08, -5.35666e-15, 3.55271e-15, -4.37114e-08, 1, -7.18771e-08, -1, -4.37114e-08, 0.0341114, 0.0859701, -0.0125916 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.040" type="MeshInstance" parent="house3"] _import_path = NodePath("house3-col/window_02_GEO.040") transform = Transform( 7.5498e-08, 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 1, -1.06106e-07, -4.37114e-08, 0.0630491, 0.0859701, 0.0408069 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="col" type="StaticBody" parent="house3"] @@ -942,133 +890,114 @@ _import_path = NodePath("house5-col") transform = Transform( -43.6046, 0, 0.0722779, 0, 43.6047, 0, -0.0722779, 0, -43.6046, -14.9966, 4.83627, -1.81873 ) use_in_baked_light = true mesh = SubResource( 29 ) -material/0 = null [node name="door_01_GEO.004" type="MeshInstance" parent="house5"] _import_path = NodePath("house5-col/door_01_GEO.004") transform = Transform( -1, 0, 1.50874e-07, 0, 1, 0, -1.51107e-07, 0, -1, -0.0404529, 0, 0.109078 ) use_in_baked_light = true mesh = SubResource( 18 ) -material/0 = null [node name="door_02_GEO.002" type="MeshInstance" parent="house5"] _import_path = NodePath("house5-col/door_02_GEO.002") transform = Transform( 1, 0, 1.16415e-10, 0, 1, 0, 0, 0, 1, -0.00326717, 0, 0.00193861 ) use_in_baked_light = true mesh = SubResource( 30 ) -material/0 = null [node name="window_01_GEO.013" type="MeshInstance" parent="house5"] _import_path = NodePath("house5-col/window_01_GEO.013") transform = Transform( 1, -1.16415e-10, -6.93889e-18, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0339863, 0.0383933, 0.00195311 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_01_GEO.014" type="MeshInstance" parent="house5"] _import_path = NodePath("house5-col/window_01_GEO.014") transform = Transform( 1, -1.16415e-10, -6.93889e-18, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0506914, 0.0383933, 0.0019531 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_01_GEO.033" type="MeshInstance" parent="house5"] _import_path = NodePath("house5-col/window_01_GEO.033") transform = Transform( 1, -1.16415e-10, -6.93889e-18, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0130545, 0.0892521, 0.00195309 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_01_GEO.034" type="MeshInstance" parent="house5"] _import_path = NodePath("house5-col/window_01_GEO.034") transform = Transform( 1, -1.16415e-10, -6.93889e-18, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0339863, 0.0892521, 0.00195311 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.026" type="MeshInstance" parent="house5"] _import_path = NodePath("house5-col/window_02_GEO.026") transform = Transform( -1, 1.51224e-07, -9.09149e-08, -9.09149e-08, -4.37114e-08, 1, 1.50991e-07, 1, 4.37114e-08, 0.0263977, 0.0369723, 0.0909424 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.027" type="MeshInstance" parent="house5"] _import_path = NodePath("house5-col/window_02_GEO.027") transform = Transform( 7.567e-08, 1, -7.54979e-08, -1.5417e-08, 7.54979e-08, 1, 1, -7.55535e-08, 1.5417e-08, 0.060486, 0.0369723, 0.029067 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.041" type="MeshInstance" parent="house5"] _import_path = NodePath("house5-col/window_02_GEO.041") transform = Transform( 7.567e-08, 1, -7.54979e-08, -1.5417e-08, 7.54979e-08, 1, 1, -7.55535e-08, 1.5417e-08, 0.060486, 0.087831, 0.029067 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.042" type="MeshInstance" parent="house5"] _import_path = NodePath("house5-col/window_02_GEO.042") transform = Transform( -1, 1.51224e-07, -9.09149e-08, -9.09149e-08, -4.37114e-08, 1, 1.50991e-07, 1, 4.37114e-08, 0.0263977, 0.087831, 0.0909424 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_03_GEO.011" type="MeshInstance" parent="house5"] _import_path = NodePath("house5-col/window_03_GEO.011") transform = Transform( 7.567e-08, 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 1, -7.55535e-08, -4.37114e-08, 0.0604251, 0.03686, 0.0685784 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="window_03_GEO.012" type="MeshInstance" parent="house5"] _import_path = NodePath("house5-col/window_03_GEO.012") transform = Transform( 7.54371e-08, -1, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1, -7.55535e-08, -4.37114e-08, -0.0778809, 0.0383933, 0.0691764 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="window_03_GEO.013" type="MeshInstance" parent="house5"] _import_path = NodePath("house5-col/window_03_GEO.013") transform = Transform( 7.54371e-08, -1, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1, -7.55535e-08, -4.37114e-08, -0.077881, 0.0383933, 0.0326046 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_03_GEO.017" type="MeshInstance" parent="house5"] _import_path = NodePath("house5-col/window_03_GEO.017") transform = Transform( 7.54371e-08, -1, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1, -7.55535e-08, -4.37114e-08, -0.0778807, 0.0892521, 0.025177 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="window_03_GEO.018" type="MeshInstance" parent="house5"] _import_path = NodePath("house5-col/window_03_GEO.018") transform = Transform( 7.54371e-08, -1, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1, -7.55535e-08, -4.37114e-08, -0.077881, 0.0892521, 0.0670242 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_03_GEO.019" type="MeshInstance" parent="house5"] _import_path = NodePath("house5-col/window_03_GEO.019") transform = Transform( 7.567e-08, 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 1, -7.55535e-08, -4.37114e-08, 0.0604251, 0.0877188, 0.0685784 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="window_03_GEO.020" type="MeshInstance" parent="house5"] _import_path = NodePath("house5-col/window_03_GEO.020") transform = Transform( 1, 4.1211e-08, 1.31306e-08, -1.31306e-08, -4.37114e-08, 1, 4.13274e-08, -1, -4.37114e-08, -0.0586339, 0.0892521, 0.00193866 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="window_03_GEO.021" type="MeshInstance" parent="house5"] _import_path = NodePath("house5-col/window_03_GEO.021") transform = Transform( -1, -1.50874e-07, -8.74228e-08, -8.74228e-08, -4.37114e-08, 1, -1.51107e-07, 1, 4.37114e-08, -0.0390904, 0.0892521, 0.121015 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="col" type="StaticBody" parent="house5"] @@ -1080,196 +1009,168 @@ _import_path = NodePath("house1-col") transform = Transform( 43.6047, 0, 0, 0, 43.6047, 0, 0, 0, 43.6047, -12.1119, 4.02536, -42.671 ) use_in_baked_light = true mesh = SubResource( 32 ) -material/0 = null [node name="door_01_GEO.005" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/door_01_GEO.005") transform = Transform( -1, 0, 1.50996e-07, 0, 1, 0, -1.50996e-07, 0, -1, -0.00937384, 0, 0.0891412 ) use_in_baked_light = true mesh = SubResource( 18 ) -material/0 = null [node name="door_04_GEO.004" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/door_04_GEO.004") transform = Transform( 0.720091, 0, -0.69388, 0, 1, 0, 0.69388, 0, 0.720091, 0.108514, 0, 0.0281604 ) use_in_baked_light = true mesh = SubResource( 33 ) -material/0 = null [node name="window_01_GEO.012" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_01_GEO.012") transform = Transform( -1, 1.13999e-14, -1.50996e-07, -1.50996e-07, -7.54979e-08, 1, 0, 1, 7.54979e-08, 0.084346, 0.0383933, 0.208313 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_01_GEO.035" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_01_GEO.035") transform = Transform( -1, 1.13999e-14, -1.50996e-07, -1.50996e-07, -7.54979e-08, 1, 0, 1, 7.54979e-08, 0.084346, 0.0930055, 0.208313 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.017" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_02_GEO.017") transform = Transform( -4.37114e-08, -1, -4.37114e-08, -1.06581e-14, -4.37114e-08, 1, -1, 4.37114e-08, -8.74746e-15, 0.05426, 0.0369723, 0.177452 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.018" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_02_GEO.018") transform = Transform( -1, -1.50996e-07, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1.50996e-07, 1, 4.37114e-08, 0.0260007, 0.0369723, 0.0891725 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.019" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_02_GEO.019") transform = Transform( 7.54979e-08, -1, -4.37114e-08, 3.55271e-15, -4.37114e-08, 1, -1, -7.54979e-08, 2.52596e-16, -0.0762943, 0.0369723, 0.0330316 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.020" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_02_GEO.020") transform = Transform( 1, 1.91069e-15, -4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0596448, 0.0369723, 0.0037232 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.021" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_02_GEO.021") transform = Transform( 1, 1.91069e-15, -4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.00377846, 0.0369723, 0.0037232 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.022" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_02_GEO.022") transform = Transform( 1, 1.91069e-15, -4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0520872, 0.0369723, 0.0037232 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.023" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_02_GEO.023") transform = Transform( 7.54979e-08, 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 1, -7.54979e-08, -4.37114e-08, 0.130066, 0.0369723, 0.185434 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.024" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_02_GEO.024") transform = Transform( 7.54979e-08, 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 1, -7.54979e-08, -4.37114e-08, 0.130066, 0.0369723, 0.129569 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.025" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_02_GEO.025") transform = Transform( 7.54979e-08, 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 1, -7.54979e-08, -4.37114e-08, 0.130066, 0.0369723, 0.0737026 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.043" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_02_GEO.043") transform = Transform( 7.54979e-08, 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 1, -7.54979e-08, -4.37114e-08, 0.130066, 0.0915845, 0.0737026 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.044" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_02_GEO.044") transform = Transform( 7.54979e-08, 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 1, -7.54979e-08, -4.37114e-08, 0.130066, 0.0915845, 0.129569 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.045" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_02_GEO.045") transform = Transform( 7.54979e-08, 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 1, -7.54979e-08, -4.37114e-08, 0.130066, 0.0915845, 0.185434 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.046" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_02_GEO.046") transform = Transform( 1, 1.91069e-15, -4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0520872, 0.0915845, 0.0037232 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.047" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_02_GEO.047") transform = Transform( 1, 1.91069e-15, -4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.00377846, 0.0915845, 0.0037232 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.048" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_02_GEO.048") transform = Transform( 1, 1.91069e-15, -4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0596448, 0.0915845, 0.0037232 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.049" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_02_GEO.049") transform = Transform( 7.54979e-08, -1, -4.37114e-08, 3.55271e-15, -4.37114e-08, 1, -1, -7.54979e-08, 2.52596e-16, -0.0762943, 0.0915845, 0.0330316 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.050" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_02_GEO.050") transform = Transform( -1, -1.50996e-07, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1.50996e-07, 1, 4.37114e-08, 0.0260007, 0.0915845, 0.0891725 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.051" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_02_GEO.051") transform = Transform( -4.37114e-08, -1, -4.37114e-08, -1.06581e-14, -4.37114e-08, 1, -1, 4.37114e-08, -8.74746e-15, 0.05426, 0.0915845, 0.177452 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.052" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_02_GEO.052") transform = Transform( 0.717658, 0.696395, -1.36478e-08, 6.14334e-08, -4.37114e-08, 1, 0.696395, -0.717658, -7.41518e-08, 0.106201, 0.0915845, 0.0257876 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_03_GEO.009" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_03_GEO.009") transform = Transform( -1, -1.50996e-07, -8.74228e-08, -8.74228e-08, -4.37114e-08, 1, -1.50996e-07, 1, 4.37114e-08, -0.0517201, 0.0364428, 0.0891725 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="window_03_GEO.010" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_03_GEO.010") transform = Transform( 7.54979e-08, -1, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1, -7.54979e-08, -4.37114e-08, -0.0763552, 0.0364428, 0.069336 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="window_03_GEO.022" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_03_GEO.022") transform = Transform( 7.54979e-08, -1, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1, -7.54979e-08, -4.37114e-08, -0.0763552, 0.0910551, 0.069336 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="window_03_GEO.023" type="MeshInstance" parent="house1"] _import_path = NodePath("house1-col/window_03_GEO.023") transform = Transform( -1, -1.50996e-07, -8.74228e-08, -8.74228e-08, -4.37114e-08, 1, -1.50996e-07, 1, 4.37114e-08, -0.0517201, 0.0910551, 0.0891725 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="col" type="StaticBody" parent="house1"] @@ -1281,105 +1182,90 @@ _import_path = NodePath("house2-col") transform = Transform( -0.0279572, 0, -43.6047, 0, 43.6047, 0, 43.6047, 0, -0.0279572, 9.26931, 5.91452, -41.5705 ) use_in_baked_light = true mesh = SubResource( 35 ) -material/0 = null [node name="door_01_GEO.002" type="MeshInstance" parent="house2"] _import_path = NodePath("house2-col/door_01_GEO.002") transform = Transform( -1, 0, 1.51049e-07, 0, 1, 0, -1.51049e-07, 0, -1, -0.00937349, 0, 0.0891411 ) use_in_baked_light = true mesh = SubResource( 18 ) -material/0 = null [node name="door_04_GEO.003" type="MeshInstance" parent="house2"] _import_path = NodePath("house2-col/door_04_GEO.003") transform = Transform( 0.720091, 0, -0.69388, 0, 1, 0, 0.69388, 0, 0.720091, 0.108514, 0, 0.0281602 ) use_in_baked_light = true mesh = SubResource( 33 ) -material/0 = null [node name="window_01_GEO.011" type="MeshInstance" parent="house2"] _import_path = NodePath("house2-col/window_01_GEO.011") transform = Transform( -1, -5.82077e-11, -1.50996e-07, -1.50996e-07, -7.54979e-08, 1, -5.82077e-11, 1, 7.54979e-08, 0.0843465, 0.0383933, 0.208313 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_02_GEO.008" type="MeshInstance" parent="house2"] _import_path = NodePath("house2-col/window_02_GEO.008") transform = Transform( 7.54371e-08, 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 1, -7.54371e-08, -4.37114e-08, 0.130066, 0.0369723, 0.0737024 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.009" type="MeshInstance" parent="house2"] _import_path = NodePath("house2-col/window_02_GEO.009") transform = Transform( 7.54371e-08, 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 1, -7.54371e-08, -4.37114e-08, 0.130066, 0.0369723, 0.129568 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.010" type="MeshInstance" parent="house2"] _import_path = NodePath("house2-col/window_02_GEO.010") transform = Transform( 7.54371e-08, 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 1, -7.54371e-08, -4.37114e-08, 0.130066, 0.0369723, 0.185434 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.011" type="MeshInstance" parent="house2"] _import_path = NodePath("house2-col/window_02_GEO.011") transform = Transform( 7.54953e-08, -1, -4.37114e-08, 3.55271e-15, -4.37114e-08, 1, -1, -7.54953e-08, 2.498e-16, -0.0762936, 0.0369723, 0.0330314 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.012" type="MeshInstance" parent="house2"] _import_path = NodePath("house2-col/window_02_GEO.012") transform = Transform( -1, -1.51049e-07, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1.51049e-07, 1, 4.37114e-08, 0.0260011, 0.0369723, 0.0891724 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.013" type="MeshInstance" parent="house2"] _import_path = NodePath("house2-col/window_02_GEO.013") transform = Transform( -4.36557e-08, -1, -4.37114e-08, -1.06581e-14, -4.37114e-08, 1, -1, 4.36557e-08, -8.74995e-15, 0.0542604, 0.0369723, 0.177452 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.014" type="MeshInstance" parent="house2"] _import_path = NodePath("house2-col/window_02_GEO.014") transform = Transform( 1, 5.82077e-11, -4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 5.82077e-11, -1, -4.37114e-08, -0.0520867, 0.0369723, 0.00372311 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.015" type="MeshInstance" parent="house2"] _import_path = NodePath("house2-col/window_02_GEO.015") transform = Transform( 1, 5.82077e-11, -4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 5.82077e-11, -1, -4.37114e-08, 0.00377893, 0.0369723, 0.00372316 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.016" type="MeshInstance" parent="house2"] _import_path = NodePath("house2-col/window_02_GEO.016") transform = Transform( 1, 5.82077e-11, -4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 5.82077e-11, -1, -4.37114e-08, 0.0596454, 0.0369723, 0.00372311 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_03_GEO.007" type="MeshInstance" parent="house2"] _import_path = NodePath("house2-col/window_03_GEO.007") transform = Transform( 7.54953e-08, -1, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1, -7.54953e-08, -4.37114e-08, -0.076355, 0.0364428, 0.069336 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="window_03_GEO.008" type="MeshInstance" parent="house2"] _import_path = NodePath("house2-col/window_03_GEO.008") transform = Transform( -1, -1.51049e-07, -8.74228e-08, -8.74228e-08, -4.37114e-08, 1, -1.51049e-07, 1, 4.37114e-08, -0.0517194, 0.0364428, 0.0891723 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="col" type="StaticBody" parent="house2"] @@ -1391,70 +1277,60 @@ _import_path = NodePath("house8-col") transform = Transform( 43.6047, 0, 0, 0, 43.6047, 0, 0, 0, 43.6047, -54.4039, -0.269261, -30.6303 ) use_in_baked_light = true mesh = SubResource( 37 ) -material/0 = null [node name="door_01_GEO.003" type="MeshInstance" parent="house8"] _import_path = NodePath("house8-col/door_01_GEO.003") transform = Transform( -1, 0, 1.50996e-07, 0, 1, 0, -1.10386e-07, 0, -1, -0.0404528, 4.65661e-10, 0.109078 ) use_in_baked_light = true mesh = SubResource( 18 ) -material/0 = null [node name="door_02_GEO.001" type="MeshInstance" parent="house8"] _import_path = NodePath("house8-col/door_02_GEO.001") transform = Transform( 1, 0, 0, 0, 1, 0, -4.061e-08, 0, 1, -0.00326705, 4.65661e-10, 0.0019387 ) use_in_baked_light = true mesh = SubResource( 30 ) -material/0 = null [node name="window_01_GEO.009" type="MeshInstance" parent="house8"] _import_path = NodePath("house8-col/window_01_GEO.009") transform = Transform( 1, 0, 0, 0, -4.37114e-08, 1, -4.061e-08, -1, -4.37114e-08, -0.0506916, 0.0383933, 0.00195318 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_01_GEO.010" type="MeshInstance" parent="house8"] _import_path = NodePath("house8-col/window_01_GEO.010") transform = Transform( 1, 0, 0, 0, -4.37114e-08, 1, -4.061e-08, -1, -4.37114e-08, 0.0339863, 0.0383933, 0.00195318 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_02_GEO.006" type="MeshInstance" parent="house8"] _import_path = NodePath("house8-col/window_02_GEO.006") transform = Transform( 7.54979e-08, 1, -7.54979e-08, -1.5417e-08, 7.54979e-08, 1, 1, -1.16108e-07, 1.5417e-08, 0.0604858, 0.0369723, 0.029067 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.007" type="MeshInstance" parent="house8"] _import_path = NodePath("house8-col/window_02_GEO.007") transform = Transform( -1, 1.50996e-07, -9.09149e-08, -9.09149e-08, -4.37114e-08, 1, 1.91606e-07, 1, 4.37114e-08, 0.0263981, 0.0369723, 0.0909424 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_03_GEO.004" type="MeshInstance" parent="house8"] _import_path = NodePath("house8-col/window_03_GEO.004") transform = Transform( 7.54979e-08, -1, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1, -3.48879e-08, -4.37114e-08, -0.0778807, 0.0383933, 0.0251771 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="window_03_GEO.005" type="MeshInstance" parent="house8"] _import_path = NodePath("house8-col/window_03_GEO.005") transform = Transform( 7.54979e-08, -1, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1, -3.48879e-08, -4.37114e-08, -0.0778807, 0.0383933, 0.0691765 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="window_03_GEO.006" type="MeshInstance" parent="house8"] _import_path = NodePath("house8-col/window_03_GEO.006") transform = Transform( 7.54979e-08, 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 1, -1.16108e-07, -4.37114e-08, 0.0604249, 0.03686, 0.0685785 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="col" type="StaticBody" parent="house8"] @@ -1466,49 +1342,42 @@ _import_path = NodePath("house6-col") transform = Transform( 43.6047, 0, 0, 0, 43.6047, 0, 0, 0, 43.6047, -40.1375, -0.203611, -5.43416 ) use_in_baked_light = true mesh = SubResource( 39 ) -material/0 = null [node name="door_03_GEO.001" type="MeshInstance" parent="house6"] _import_path = NodePath("house6-col/door_03_GEO.001") transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0334513, 0, -0.0125916 ) use_in_baked_light = true mesh = SubResource( 27 ) -material/0 = null [node name="window_01_GEO.005" type="MeshInstance" parent="house6"] _import_path = NodePath("house6-col/window_01_GEO.005") transform = Transform( 1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0319823, 0.0383933, -0.000610389 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_01_GEO.006" type="MeshInstance" parent="house6"] _import_path = NodePath("house6-col/window_01_GEO.006") transform = Transform( 1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.084476, 0.0383933, -0.000610389 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_01_GEO.007" type="MeshInstance" parent="house6"] _import_path = NodePath("house6-col/window_01_GEO.007") transform = Transform( 1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.136969, 0.0383933, -0.000610389 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_01_GEO.008" type="MeshInstance" parent="house6"] _import_path = NodePath("house6-col/window_01_GEO.008") transform = Transform( 7.54979e-08, -1, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1, -7.54979e-08, -4.37114e-08, -0.172729, 0.0383933, 0.031372 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_02_GEO.005" type="MeshInstance" parent="house6"] _import_path = NodePath("house6-col/window_02_GEO.005") transform = Transform( 7.54979e-08, 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, 1, 1, -7.54979e-08, -4.37114e-08, 0.0630495, 0.0369723, 0.026001 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="col" type="StaticBody" parent="house6"] @@ -1520,56 +1389,48 @@ _import_path = NodePath("house9-col") transform = Transform( -0.833531, 0, -43.5967, 0, 43.6047, 0, 43.5967, 0, -0.833531, -75.884, 2.80561, -25.8623 ) use_in_baked_light = true mesh = SubResource( 41 ) -material/0 = null [node name="door_04_GEO.002" type="MeshInstance" parent="house9"] _import_path = NodePath("house9-col/door_04_GEO.002") transform = Transform( 1, 0, 2.23517e-08, -4.85179e-11, 1, -2.53766e-09, 0, 0, 1, 0.014762, -7.45058e-09, 0.0016222 ) use_in_baked_light = true mesh = SubResource( 24 ) -material/0 = null [node name="window_01_GEO.003" type="MeshInstance" parent="house9"] _import_path = NodePath("house9-col/window_01_GEO.003") transform = Transform( 9.68575e-08, 1, 4.37114e-08, 4.11737e-08, -4.37599e-08, 1, 1, -7.45058e-08, -4.37114e-08, -0.0247497, 0.0383933, -0.0243371 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_01_GEO.004" type="MeshInstance" parent="house9"] _import_path = NodePath("house9-col/window_01_GEO.004") transform = Transform( 1, -6.33299e-08, -6.32827e-15, -4.85142e-11, -4.11737e-08, 1, -4.09782e-08, -1, -4.37114e-08, -0.0493163, 0.0383933, -0.0474854 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_02_GEO.002" type="MeshInstance" parent="house9"] _import_path = NodePath("house9-col/window_02_GEO.002") transform = Transform( 9.68575e-08, 1, 4.37114e-08, 4.11737e-08, -4.37599e-08, 1, 1, -7.45058e-08, -4.37114e-08, 0.06073, 0.0369723, 0.0305176 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.003" type="MeshInstance" parent="house9"] _import_path = NodePath("house9-col/window_02_GEO.003") transform = Transform( 5.40167e-08, -1, -4.37114e-08, -4.11737e-08, -4.36629e-08, 1, -1, -7.63685e-08, -4.37114e-08, -0.0720214, 0.0369723, -0.0149537 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_02_GEO.004" type="MeshInstance" parent="house9"] _import_path = NodePath("house9-col/window_02_GEO.004") transform = Transform( 5.40167e-08, -1, -4.37114e-08, -4.11737e-08, -4.36629e-08, 1, -1, -7.63685e-08, -4.37114e-08, -0.0720213, 0.0369723, 0.0314381 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_03_GEO.003" type="MeshInstance" parent="house9"] _import_path = NodePath("house9-col/window_03_GEO.003") transform = Transform( 1, -2.23517e-08, -9.99201e-16, -4.85179e-11, -4.11737e-08, 1, 0, -1, -4.37114e-08, 0.0415632, 0.0383933, 0.00158679 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="col" type="StaticBody" parent="house9"] @@ -1581,49 +1442,42 @@ _import_path = NodePath("house4-col") transform = Transform( -0.50329, 0, 43.6018, 0, 43.6047, 0, -43.6018, 0, -0.50329, 14.6854, 3.32976, -16.0483 ) use_in_baked_light = true mesh = SubResource( 43 ) -material/0 = null [node name="door_01_GEO.001" type="MeshInstance" parent="house4"] _import_path = NodePath("house4-col/door_01_GEO.001") transform = Transform( 1, 0, -9.31323e-10, 0, 1, 0, 0, 0, 1, -1.19209e-07, 0, -0.0385269 ) use_in_baked_light = true mesh = SubResource( 18 ) -material/0 = null [node name="window_01_GEO.001" type="MeshInstance" parent="house4"] _import_path = NodePath("house4-col/window_01_GEO.001") transform = Transform( 1, 9.31323e-10, 5.55112e-17, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0377978, 0.0373665, -0.0385269 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_01_GEO.002" type="MeshInstance" parent="house4"] _import_path = NodePath("house4-col/window_01_GEO.002") transform = Transform( 1, 9.31323e-10, 5.55112e-17, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0352637, 0.0373665, -0.0385268 ) use_in_baked_light = true mesh = SubResource( 19 ) -material/0 = null [node name="window_02_GEO.001" type="MeshInstance" parent="house4"] _import_path = NodePath("house4-col/window_02_GEO.001") transform = Transform( -4.47035e-08, 1, 4.37114e-08, 0, -4.37114e-08, 1, 1, 4.37722e-08, 1.94289e-15, 0.0614014, 0.0373665, 0.0161048 ) use_in_baked_light = true mesh = SubResource( 20 ) -material/0 = null [node name="window_03_GEO.001" type="MeshInstance" parent="house4"] _import_path = NodePath("house4-col/window_03_GEO.001") transform = Transform( -4.47035e-08, 1, 4.37114e-08, 0, -4.37114e-08, 1, 1, 4.37722e-08, 1.94289e-15, 0.0613389, 0.0373665, -0.0162845 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="window_03_GEO.002" type="MeshInstance" parent="house4"] _import_path = NodePath("house4-col/window_03_GEO.002") transform = Transform( 7.63685e-08, -1, -4.37114e-08, 0, -4.37114e-08, 1, -1, -7.54371e-08, -3.33067e-15, -0.0613381, 0.0373665, 0.0176313 ) use_in_baked_light = true mesh = SubResource( 21 ) -material/0 = null [node name="col" type="StaticBody" parent="house4"] diff --git a/3d/truck_town/trailer_truck.tscn b/3d/truck_town/trailer_truck.tscn index 1cf0dc0e..33fbb534 100644 --- a/3d/truck_town/trailer_truck.tscn +++ b/3d/truck_town/trailer_truck.tscn @@ -241,7 +241,6 @@ damping_compression = 0.88 _import_path = NodePath("TRAILER-vehicle/twheel1-wheel") use_in_baked_light = true mesh = SubResource( 1 ) -material/0 = null [node name="TWheel2" type="VehicleWheel" parent="Trailer"] transform = Transform( 1, 0, 0, 0, 1, -1.49012e-08, 0, 0, 1, 0.573678, -0.402732, -0.600809 ) @@ -255,7 +254,6 @@ damping_compression = 0.88 _import_path = NodePath("TRAILER-vehicle/twheel2-wheel") use_in_baked_light = true mesh = SubResource( 2 ) -material/0 = null [node name="TWheel3" type="VehicleWheel" parent="Trailer"] transform = Transform( 1, 0, 0, 0, 1, -1.49012e-08, 0, 0, 1, -0.573678, -0.402732, -1.53277 ) @@ -269,7 +267,6 @@ damping_compression = 0.88 _import_path = NodePath("TRAILER-vehicle/twheel3-wheel") use_in_baked_light = true mesh = SubResource( 3 ) -material/0 = null [node name="TWheel4" type="VehicleWheel" parent="Trailer"] transform = Transform( 1, 0, 0, 0, 1, -1.49012e-08, 0, 0, 1, -0.573678, -0.402732, -0.600809 ) @@ -283,15 +280,11 @@ damping_compression = 0.88 _import_path = NodePath("TRAILER-vehicle/twheel4-wheel") use_in_baked_light = true mesh = SubResource( 4 ) -material/0 = null [node name="Trailer" type="MeshInstance" parent="Trailer"] _import_path = NodePath("TRAILER-vehicle") use_in_baked_light = true mesh = SubResource( 5 ) -material/0 = null -material/1 = null -material/2 = null [node name="CollisionShape" type="CollisionShape" parent="Trailer"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.383046, -0.0335202 ) @@ -315,7 +308,6 @@ damping_compression = 0.88 _import_path = NodePath("BODY-vehicle/wheel1-wheel") use_in_baked_light = true mesh = SubResource( 7 ) -material/0 = null [node name="Wheel2" type="VehicleWheel" parent="Body"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.573678, 0.000773743, -0.783403 ) @@ -330,7 +322,6 @@ damping_compression = 0.88 _import_path = NodePath("BODY-vehicle/wheel2-wheel") use_in_baked_light = true mesh = SubResource( 8 ) -material/0 = null [node name="Wheel3" type="VehicleWheel" parent="Body"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.573678, 0.000773743, 1.10416 ) @@ -346,7 +337,6 @@ damping_compression = 0.88 _import_path = NodePath("BODY-vehicle/wheel3-wheel") use_in_baked_light = true mesh = SubResource( 9 ) -material/0 = null [node name="Wheel4" type="VehicleWheel" parent="Body"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.573678, 0.000773743, -0.783403 ) @@ -361,15 +351,11 @@ damping_compression = 0.88 _import_path = NodePath("BODY-vehicle/wheel4-wheel") use_in_baked_light = true mesh = SubResource( 10 ) -material/0 = null [node name="Body" type="MeshInstance" parent="Body"] _import_path = NodePath("BODY-vehicle") use_in_baked_light = true mesh = SubResource( 13 ) -material/0 = null -material/1 = null -material/2 = null [node name="CollisionShape" type="CollisionShape" parent="Body"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.571059, 0.132248 ) diff --git a/3d/truck_town/vehicle.gd b/3d/truck_town/vehicle.gd index 48143c8a..adb1b127 100644 --- a/3d/truck_town/vehicle.gd +++ b/3d/truck_town/vehicle.gd @@ -1,11 +1,13 @@ extends VehicleBody + const STEER_SPEED = 1.5 const STEER_LIMIT = 0.4 +export var engine_force_value = 40 + var steer_target = 0 -export var engine_force_value = 40 func _physics_process(delta): var fwd_mps = transform.basis.xform_inv(linear_velocity).x diff --git a/3d/voxel/menu/debug.gd b/3d/voxel/menu/debug.gd index 8a415d4f..96a51188 100644 --- a/3d/voxel/menu/debug.gd +++ b/3d/voxel/menu/debug.gd @@ -1,6 +1,7 @@ extends Label # Displays some useful debug information in a Label. + onready var player = $"../Player" onready var voxel_world = $"../VoxelWorld" diff --git a/3d/voxel/menu/ingame/pause_menu.gd b/3d/voxel/menu/ingame/pause_menu.gd index 09d9daa0..a45cbdb6 100644 --- a/3d/voxel/menu/ingame/pause_menu.gd +++ b/3d/voxel/menu/ingame/pause_menu.gd @@ -1,5 +1,6 @@ extends Control + onready var tree = get_tree() onready var crosshair = $Crosshair diff --git a/3d/voxel/menu/main/main_menu.gd b/3d/voxel/menu/main/main_menu.gd index 3cdce1fd..b00b18c2 100644 --- a/3d/voxel/menu/main/main_menu.gd +++ b/3d/voxel/menu/main/main_menu.gd @@ -1,5 +1,6 @@ extends Control + onready var tree = get_tree() onready var title = $TitleScreen diff --git a/3d/voxel/menu/main/splash_text.gd b/3d/voxel/menu/main/splash_text.gd index 06f7e03c..25250b41 100644 --- a/3d/voxel/menu/main/splash_text.gd +++ b/3d/voxel/menu/main/splash_text.gd @@ -1,5 +1,6 @@ extends Control + var time := 0.0 diff --git a/3d/voxel/menu/options/option_buttons.gd b/3d/voxel/menu/options/option_buttons.gd index 87e0c7b7..572563f5 100644 --- a/3d/voxel/menu/options/option_buttons.gd +++ b/3d/voxel/menu/options/option_buttons.gd @@ -1,5 +1,6 @@ extends Control + onready var render_distance_label = $RenderDistanceLabel onready var render_distance_slider = $RenderDistanceSlider onready var fog_checkbox = $FogCheckBox diff --git a/3d/voxel/menu/options/options.gd b/3d/voxel/menu/options/options.gd index bbf75b31..2bd53ae9 100644 --- a/3d/voxel/menu/options/options.gd +++ b/3d/voxel/menu/options/options.gd @@ -1,5 +1,6 @@ extends HBoxContainer + var prev_menu diff --git a/3d/voxel/player/player.gd b/3d/voxel/player/player.gd index 0e588505..e616f16a 100644 --- a/3d/voxel/player/player.gd +++ b/3d/voxel/player/player.gd @@ -1,5 +1,6 @@ extends KinematicBody + var velocity = Vector3() var _mouse_motion = Vector2() diff --git a/3d/voxel/player/player.tscn b/3d/voxel/player/player.tscn index 575f9be8..21450a59 100644 --- a/3d/voxel/player/player.tscn +++ b/3d/voxel/player/player.tscn @@ -4,8 +4,8 @@ [ext_resource path="res://world/textures/texture_sheet.png" type="Texture" id=2] [sub_resource type="CylinderShape" id=1] -radius = 0.4 height = 1.8 +radius = 0.4 [sub_resource type="AtlasTexture" id=2] flags = 11 diff --git a/3d/voxel/settings.gd b/3d/voxel/settings.gd index cc6a9b95..f1da11f8 100644 --- a/3d/voxel/settings.gd +++ b/3d/voxel/settings.gd @@ -1,5 +1,6 @@ extends Node + var render_distance = 7 var fog_enabled = true diff --git a/3d/voxel/world/chunk.gd b/3d/voxel/world/chunk.gd index 3e46169f..a0a5cc29 100644 --- a/3d/voxel/world/chunk.gd +++ b/3d/voxel/world/chunk.gd @@ -4,6 +4,7 @@ extends StaticBody # After that, chunks finish setting themselves up in the _ready() function. # If a chunk is changed, its "regenerate" method is called. + const CHUNK_SIZE = 16 # Keep in sync with TerrainGenerator. const TEXTURE_SHEET_WIDTH = 8 diff --git a/3d/voxel/world/environment.gd b/3d/voxel/world/environment.gd index fec9a04d..20d6fcc2 100644 --- a/3d/voxel/world/environment.gd +++ b/3d/voxel/world/environment.gd @@ -1,6 +1,7 @@ extends WorldEnvironment # This script controls fog based on the VoxelWorld's effective render distance. + onready var voxel_world = $"../VoxelWorld" diff --git a/3d/voxel/world/terrain_generator.gd b/3d/voxel/world/terrain_generator.gd index 9aa7cfa8..2a7fe41f 100644 --- a/3d/voxel/world/terrain_generator.gd +++ b/3d/voxel/world/terrain_generator.gd @@ -1,6 +1,7 @@ class_name TerrainGenerator extends Resource + # Can't be "Chunk.CHUNK_SIZE" due to cyclic dependency issues. # https://github.com/godotengine/godot/issues/21461 const CHUNK_SIZE = 16 diff --git a/3d/voxel/world/voxel_world.gd b/3d/voxel/world/voxel_world.gd index 7da73224..f5391712 100644 --- a/3d/voxel/world/voxel_world.gd +++ b/3d/voxel/world/voxel_world.gd @@ -1,6 +1,7 @@ extends Node # This file manages the creation and deletion of Chunks. + const CHUNK_MIDPOINT = Vector3(0.5, 0.5, 0.5) * Chunk.CHUNK_SIZE const CHUNK_END_SIZE = Chunk.CHUNK_SIZE - 1 diff --git a/3d/waypoints/camera.gd b/3d/waypoints/camera.gd index 859de512..8deea8b4 100644 --- a/3d/waypoints/camera.gd +++ b/3d/waypoints/camera.gd @@ -1,5 +1,6 @@ extends Camera + const MOUSE_SENSITIVITY = 0.002 const MOVE_SPEED = 0.6 diff --git a/3d/waypoints/main.tscn b/3d/waypoints/main.tscn index 63218dc7..2a683992 100644 --- a/3d/waypoints/main.tscn +++ b/3d/waypoints/main.tscn @@ -59,16 +59,13 @@ script = ExtResource( 1 ) [node name="Ground" type="MeshInstance" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.5, 0 ) mesh = SubResource( 2 ) -material/0 = null [node name="WhiteCube" type="MeshInstance" parent="."] mesh = SubResource( 4 ) -material/0 = null [node name="BlueCube" type="MeshInstance" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, -5 ) mesh = SubResource( 6 ) -material/0 = null [node name="WaypointAnchor" type="Position3D" parent="BlueCube"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0 ) @@ -80,7 +77,6 @@ text = "Blue Waypoint" [node name="GreenCube" type="MeshInstance" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 5 ) mesh = SubResource( 8 ) -material/0 = null [node name="WaypointAnchor" type="Position3D" parent="GreenCube"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0 ) @@ -92,7 +88,6 @@ text = "Green Waypoint" [node name="YellowCube" type="MeshInstance" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, 5 ) mesh = SubResource( 10 ) -material/0 = null [node name="WaypointAnchor" type="Position3D" parent="YellowCube"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0 ) @@ -105,7 +100,6 @@ sticky = false [node name="RedCube" type="MeshInstance" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, -5 ) mesh = SubResource( 12 ) -material/0 = null [node name="WaypointAnchor" type="Position3D" parent="RedCube"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0 ) diff --git a/3d/waypoints/waypoint.gd b/3d/waypoints/waypoint.gd index 36dbec9e..0bb56dc1 100644 --- a/3d/waypoints/waypoint.gd +++ b/3d/waypoints/waypoint.gd @@ -1,19 +1,20 @@ extends Control + # Some margin to keep the marker away from the screen's corners. const MARGIN = 8 -onready var camera = get_viewport().get_camera() -onready var parent = get_parent() -onready var label = $Label -onready var marker = $Marker - # The waypoint's text. export var text = "Waypoint" setget set_text # If `true`, the waypoint sticks to the viewport's edges when moving off-screen. export var sticky = true +onready var camera = get_viewport().get_camera() +onready var parent = get_parent() +onready var label = $Label +onready var marker = $Marker + func _ready() -> void: self.text = text diff --git a/3d/waypoints/waypoint.tscn b/3d/waypoints/waypoint.tscn index 66efbf85..31f27347 100644 --- a/3d/waypoints/waypoint.tscn +++ b/3d/waypoints/waypoint.tscn @@ -9,9 +9,6 @@ font_data = ExtResource( 3 ) [node name="Waypoint" type="Control"] script = ExtResource( 1 ) -__meta__ = { -"_edit_use_anchors_": false -} [node name="Label" type="Label" parent="."] margin_left = -200.0 diff --git a/audio/bpm_sync/bpm_sync.gd b/audio/bpm_sync/bpm_sync.gd index b16ba010..edf029c6 100644 --- a/audio/bpm_sync/bpm_sync.gd +++ b/audio/bpm_sync/bpm_sync.gd @@ -1,9 +1,9 @@ extends Panel + const BPM = 116 const BARS = 4 -var playing = false const COMPENSATE_FRAMES = 2 const COMPENSATE_HZ = 60.0 @@ -12,6 +12,7 @@ enum SyncSource { SOUND_CLOCK, } +var playing = false var sync_source = SyncSource.SYSTEM_CLOCK # Used by system clock. @@ -19,13 +20,6 @@ var time_begin var time_delay -func strsec(secs): - var s = str(secs) - if (secs < 10): - s = "0" + s - return s - - func _process(_delta): if not playing or not $Player.playing: return @@ -45,6 +39,14 @@ func _process(_delta): $Label.text = str("BEAT: ", beat % BARS + 1, "/", BARS, " TIME: ", seconds / 60, ":", strsec(seconds % 60), " / ", seconds_total / 60, ":", strsec(seconds_total % 60)) +func strsec(secs): + var s = str(secs) + if (secs < 10): + s = "0" + s + return s + + + func _on_PlaySystem_pressed(): sync_source = SyncSource.SYSTEM_CLOCK time_begin = OS.get_ticks_usec() diff --git a/audio/device_changer/Changer.gd b/audio/device_changer/Changer.gd index 86743cf1..579f70d6 100644 --- a/audio/device_changer/Changer.gd +++ b/audio/device_changer/Changer.gd @@ -1,5 +1,6 @@ extends Control + onready var item_list = get_node("ItemList") diff --git a/audio/generator/generator_demo.gd b/audio/generator/generator_demo.gd index 68679e29..44981505 100644 --- a/audio/generator/generator_demo.gd +++ b/audio/generator/generator_demo.gd @@ -1,11 +1,17 @@ extends Node + var sample_hz = 22050.0 # Keep the number of samples to mix low, GDScript is not super fast. var pulse_hz = 440.0 var phase = 0.0 var playback: AudioStreamPlayback = null # Actual playback stream, assigned in _ready(). + +func _process(_delta): + _fill_buffer() + + func _fill_buffer(): var increment = pulse_hz / sample_hz @@ -16,10 +22,6 @@ func _fill_buffer(): to_fill -= 1 -func _process(_delta): - _fill_buffer() - - func _ready(): $Player.stream.mix_rate = sample_hz # Setting mix rate is only possible before play(). playback = $Player.get_stream_playback() diff --git a/audio/mic_record/MicRecord.gd b/audio/mic_record/MicRecord.gd index fcb4eb92..8a2f9ada 100644 --- a/audio/mic_record/MicRecord.gd +++ b/audio/mic_record/MicRecord.gd @@ -1,8 +1,10 @@ extends Control + var effect var recording + func _ready(): var idx = AudioServer.get_bus_index("Record") effect = AudioServer.get_bus_effect(idx, 0) diff --git a/audio/midi_piano/piano.gd b/audio/midi_piano/piano.gd index 085ac74c..11215da5 100644 --- a/audio/midi_piano/piano.gd +++ b/audio/midi_piano/piano.gd @@ -1,5 +1,6 @@ extends Control + # A standard piano with 88 keys has keys from 21 to 108. # To get a different set of keys, modify these numbers. # A maximally extended 108-key piano goes from 12 to 119. @@ -17,6 +18,7 @@ var piano_key_dict := Dictionary() onready var white_keys = $WhiteKeys onready var black_keys = $BlackKeys + func _ready(): # Sanity checks. if _is_note_index_sharp(_pitch_index_to_note_index(START_KEY)): diff --git a/audio/midi_piano/piano_keys/A440.wav.import b/audio/midi_piano/piano_keys/A440.wav.import index 762c76a2..2a35ddce 100644 --- a/audio/midi_piano/piano_keys/A440.wav.import +++ b/audio/midi_piano/piano_keys/A440.wav.import @@ -17,5 +17,7 @@ force/max_rate=false force/max_rate_hz=44100 edit/trim=false edit/normalize=false -edit/loop=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 compress/mode=0 diff --git a/audio/midi_piano/piano_keys/piano_key.gd b/audio/midi_piano/piano_keys/piano_key.gd index 6c9807a5..46aab0b0 100644 --- a/audio/midi_piano/piano_keys/piano_key.gd +++ b/audio/midi_piano/piano_keys/piano_key.gd @@ -1,6 +1,7 @@ class_name PianoKey extends Control + var pitch_scale: float onready var key: ColorRect = $Key diff --git a/audio/midi_piano/piano_keys/piano_key_color.gd b/audio/midi_piano/piano_keys/piano_key_color.gd index da43720c..613155f8 100644 --- a/audio/midi_piano/piano_keys/piano_key_color.gd +++ b/audio/midi_piano/piano_keys/piano_key_color.gd @@ -1,7 +1,9 @@ extends ColorRect + onready var parent = get_parent() + # Yes, this script exists just for this one method. func _gui_input(input_event): if input_event is InputEventMouseButton and input_event.pressed: diff --git a/audio/spectrum/show_spectrum.gd b/audio/spectrum/show_spectrum.gd index 91d20567..2db7a4b8 100644 --- a/audio/spectrum/show_spectrum.gd +++ b/audio/spectrum/show_spectrum.gd @@ -1,5 +1,6 @@ extends Node2D + const VU_COUNT = 16 const FREQ_MAX = 11050.0 @@ -10,6 +11,15 @@ const MIN_DB = 60 var spectrum + +func _ready(): + spectrum = AudioServer.get_bus_effect_instance(0,0) + + +func _process(_delta): + update() + + func _draw(): #warning-ignore:integer_division var w = WIDTH / VU_COUNT @@ -21,11 +31,3 @@ func _draw(): var height = energy * HEIGHT draw_rect(Rect2(w * i, HEIGHT - height, w, height), Color.white) prev_hz = hz - - -func _process(_delta): - update() - - -func _ready(): - spectrum = AudioServer.get_bus_effect_instance(0,0) diff --git a/gui/drag_and_drop/drag_drop_script.gd b/gui/drag_and_drop/drag_drop_script.gd index 659d6b73..74f0f066 100644 --- a/gui/drag_and_drop/drag_drop_script.gd +++ b/gui/drag_and_drop/drag_drop_script.gd @@ -1,5 +1,6 @@ extends ColorPickerButton + func get_drag_data(_pos): # Use another colorpicker as drag preview. var cpb = ColorPickerButton.new() diff --git a/gui/input_mapping/ActionRemapButton.gd b/gui/input_mapping/ActionRemapButton.gd index 6aad90e5..4c6fe141 100644 --- a/gui/input_mapping/ActionRemapButton.gd +++ b/gui/input_mapping/ActionRemapButton.gd @@ -1,7 +1,9 @@ extends Button + export(String) var action = "ui_up" + func _ready(): assert(InputMap.has_action(action)) set_process_unhandled_key_input(false) diff --git a/gui/input_mapping/KeyPersistence.gd b/gui/input_mapping/KeyPersistence.gd index 15ad5850..3574d072 100644 --- a/gui/input_mapping/KeyPersistence.gd +++ b/gui/input_mapping/KeyPersistence.gd @@ -2,6 +2,7 @@ # the key maps in a simple way through a dictionary. extends Node + const keymaps_path = "user://keymaps.dat" var keymaps: Dictionary diff --git a/gui/multiple_resolutions/main.gd b/gui/multiple_resolutions/main.gd index bd562e27..a480c3eb 100644 --- a/gui/multiple_resolutions/main.gd +++ b/gui/multiple_resolutions/main.gd @@ -4,6 +4,7 @@ # (with their rect spread across the whole viewport, and Anchor set to Full Rect). extends Control + var base_window_size = Vector2(ProjectSettings.get_setting("display/window/size/width"), ProjectSettings.get_setting("display/window/size/height")) # These defaults match this demo's project settings. Adjust as needed if adapting this diff --git a/gui/regex/regex.gd b/gui/regex/regex.gd index ed1b6fd2..10a6702c 100644 --- a/gui/regex/regex.gd +++ b/gui/regex/regex.gd @@ -1,7 +1,9 @@ extends VBoxContainer + var regex = RegEx.new() + func _ready(): $Text.set_text("They asked me \"What's going on \\\"in the manor\\\"?\"") update_expression($Expression.text) diff --git a/gui/rich_text_bbcode/rich_text_bbcode.gd b/gui/rich_text_bbcode/rich_text_bbcode.gd index 93e37859..f3ae69c6 100644 --- a/gui/rich_text_bbcode/rich_text_bbcode.gd +++ b/gui/rich_text_bbcode/rich_text_bbcode.gd @@ -1,5 +1,6 @@ extends Control + func _on_RichTextLabel_meta_clicked(meta): var err = OS.shell_open(meta) if err == OK: diff --git a/gui/theming_override/test.gd b/gui/theming_override/test.gd index 130e6109..c3dacd0e 100644 --- a/gui/theming_override/test.gd +++ b/gui/theming_override/test.gd @@ -1,5 +1,6 @@ extends Control + # This script demonstrates how to alter StyleBoxes at runtime. # Custom theme item properties aren't considered Object properties per se. # This means that you should use `add_stylebox_override("normal", ...)` @@ -12,6 +13,7 @@ onready var reset_all_button = $VBoxContainer/ResetAllButton # Save the label color so it can be reset. onready var default_label_color = label.get_color("font_color") + func _ready(): # Focus the first button automatically for keyboard/controller-friendly navigation. button.grab_focus() diff --git a/gui/translation/hello_en.wav.import b/gui/translation/hello_en.wav.import index 32d59081..76924e7b 100644 --- a/gui/translation/hello_en.wav.import +++ b/gui/translation/hello_en.wav.import @@ -17,5 +17,7 @@ force/max_rate=false force/max_rate_hz=44100 edit/trim=true edit/normalize=true -edit/loop=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 compress/mode=0 diff --git a/gui/translation/hello_es.wav.import b/gui/translation/hello_es.wav.import index 2d1236b8..172a597f 100644 --- a/gui/translation/hello_es.wav.import +++ b/gui/translation/hello_es.wav.import @@ -17,5 +17,7 @@ force/max_rate=false force/max_rate_hz=44100 edit/trim=true edit/normalize=true -edit/loop=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 compress/mode=0 diff --git a/gui/translation/hello_jp.wav.import b/gui/translation/hello_jp.wav.import index 50dd285e..248b6cd8 100644 --- a/gui/translation/hello_jp.wav.import +++ b/gui/translation/hello_jp.wav.import @@ -17,5 +17,7 @@ force/max_rate=false force/max_rate_hz=44100 edit/trim=true edit/normalize=true -edit/loop=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 compress/mode=0 diff --git a/gui/translation/translation_demo.gd b/gui/translation/translation_demo.gd index 8e5c0099..265578fe 100644 --- a/gui/translation/translation_demo.gd +++ b/gui/translation/translation_demo.gd @@ -1,5 +1,6 @@ extends Control + func _on_english_pressed(): TranslationServer.set_locale("en") diff --git a/loading/autoload/global.gd b/loading/autoload/global.gd index 09c768b1..cec4747a 100644 --- a/loading/autoload/global.gd +++ b/loading/autoload/global.gd @@ -1,5 +1,6 @@ extends Node + # Changing scenes is most easily done using the functions `change_scene` # and `change_scene_to` of the SceneTree. This script demonstrates how to # change scenes without those helpers. diff --git a/loading/autoload/scene_a.gd b/loading/autoload/scene_a.gd index 1154197e..c05193a5 100644 --- a/loading/autoload/scene_a.gd +++ b/loading/autoload/scene_a.gd @@ -1,4 +1,5 @@ extends Panel + func _on_goto_scene_pressed(): get_node("/root/global").goto_scene("res://scene_b.tscn") diff --git a/loading/autoload/scene_b.gd b/loading/autoload/scene_b.gd index 52b7d21d..f081c20c 100644 --- a/loading/autoload/scene_b.gd +++ b/loading/autoload/scene_b.gd @@ -1,4 +1,5 @@ extends Panel + func _on_goto_scene_pressed(): get_node("/root/global").goto_scene("res://scene_a.tscn") diff --git a/loading/background_load/background_load.gd b/loading/background_load/background_load.gd index a07c013d..910e9726 100644 --- a/loading/background_load/background_load.gd +++ b/loading/background_load/background_load.gd @@ -1,11 +1,13 @@ extends Control + const SIMULATED_DELAY_SEC = 0.1 var thread = null onready var progress = $Progress + func _thread_load(path): var ril = ResourceLoader.load_interactive(path) assert(ril) @@ -57,6 +59,7 @@ func _thread_done(resource): progress.visible = false + func load_scene(path): thread = Thread.new() thread.start( self, "_thread_load", path) diff --git a/loading/background_load/background_load.tscn b/loading/background_load/background_load.tscn index 9adf6392..6a0510d9 100644 --- a/loading/background_load/background_load.tscn +++ b/loading/background_load/background_load.tscn @@ -4,9 +4,6 @@ [node name="BackgroundLoad" type="Control"] script = ExtResource( 1 ) -__meta__ = { -"_edit_use_anchors_": false -} [node name="Progress" type="ProgressBar" parent="."] visible = false diff --git a/loading/background_load/paintings.gd b/loading/background_load/paintings.gd index 74a59167..8ea7990c 100644 --- a/loading/background_load/paintings.gd +++ b/loading/background_load/paintings.gd @@ -1,5 +1,6 @@ extends Node2D + func _on_switch_pressed(): $CanvasLayer/Switch.hide() background_load.load_scene("res://sculptures.tscn") diff --git a/loading/background_load/sculptures.gd b/loading/background_load/sculptures.gd index 6274f646..81a9cd4b 100644 --- a/loading/background_load/sculptures.gd +++ b/loading/background_load/sculptures.gd @@ -1,5 +1,6 @@ extends Node2D + func _on_switch_pressed(): $CanvasLayer/Switch.hide() background_load.load_scene("res://paintings.tscn") diff --git a/loading/multiple_threads_loading/link_button.gd b/loading/multiple_threads_loading/link_button.gd index 736eafba..61200ff9 100644 --- a/loading/multiple_threads_loading/link_button.gd +++ b/loading/multiple_threads_loading/link_button.gd @@ -1,5 +1,6 @@ extends LinkButton + func _on_LinkButton_button_up(): # warning-ignore:return_value_discarded OS.shell_open("http://docs.godotengine.org/en/3.2/tutorials/io/background_loading.html#using-multiple-threads") diff --git a/loading/multiple_threads_loading/resource_queue.gd b/loading/multiple_threads_loading/resource_queue.gd index bb0a728b..0d076d44 100644 --- a/loading/multiple_threads_loading/resource_queue.gd +++ b/loading/multiple_threads_loading/resource_queue.gd @@ -7,6 +7,7 @@ var time_max = 100 # Milliseconds. var queue = [] var pending = {} + func _lock(_caller): mutex.lock() diff --git a/loading/scene_changer/scene_a.gd b/loading/scene_changer/scene_a.gd index f3e4efeb..d2e39ea6 100644 --- a/loading/scene_changer/scene_a.gd +++ b/loading/scene_changer/scene_a.gd @@ -1,4 +1,5 @@ extends Panel + func _on_goto_scene_pressed(): get_tree().change_scene("res://scene_b.tscn") diff --git a/loading/scene_changer/scene_b.gd b/loading/scene_changer/scene_b.gd index 80c3156d..98083f1e 100644 --- a/loading/scene_changer/scene_b.gd +++ b/loading/scene_changer/scene_b.gd @@ -1,4 +1,5 @@ extends Panel + func _on_goto_scene_pressed(): get_tree().change_scene("res://scene_a.tscn") diff --git a/loading/serialization/enemy.gd b/loading/serialization/enemy.gd index 78f481fc..ca09c746 100644 --- a/loading/serialization/enemy.gd +++ b/loading/serialization/enemy.gd @@ -1,5 +1,6 @@ extends KinematicBody2D + const MOVE_SPEED = 75 const DAMAGE_PER_SECOND = 15 diff --git a/loading/serialization/player.gd b/loading/serialization/player.gd index 68c6ccba..6e24beb5 100644 --- a/loading/serialization/player.gd +++ b/loading/serialization/player.gd @@ -1,5 +1,6 @@ extends KinematicBody2D + # The player's movement speed. const MOVE_SPEED = 240 @@ -20,6 +21,7 @@ func _process(delta): position.x = clamp(position.x, 32, 700) position.y = clamp(position.y, 32, 536) + func set_health(p_health): health = p_health progress_bar.value = health diff --git a/loading/serialization/save_load.tscn b/loading/serialization/save_load.tscn index 6cc59a30..4ef5312d 100644 --- a/loading/serialization/save_load.tscn +++ b/loading/serialization/save_load.tscn @@ -89,7 +89,7 @@ custom_constants/hseparation = 8 columns = 2 [node name="SaveConfigFile" type="Button" parent="Control/VBoxContainer/SaveLoad"] -margin_right = 130.0 +margin_right = 131.0 margin_bottom = 35.0 rect_min_size = Vector2( 0, 35 ) size_flags_horizontal = 3 @@ -99,8 +99,8 @@ game_node = NodePath("../../../../Game") player_node = NodePath("../../../../Game/Player") [node name="LoadConfigFile" type="Button" parent="Control/VBoxContainer/SaveLoad"] -margin_left = 138.0 -margin_right = 268.0 +margin_left = 139.0 +margin_right = 269.0 margin_bottom = 35.0 rect_min_size = Vector2( 0, 35 ) size_flags_horizontal = 3 @@ -111,7 +111,7 @@ player_node = NodePath("../../../../Game/Player") [node name="SaveJSON" type="Button" parent="Control/VBoxContainer/SaveLoad"] margin_top = 43.0 -margin_right = 130.0 +margin_right = 131.0 margin_bottom = 78.0 rect_min_size = Vector2( 0, 35 ) size_flags_horizontal = 3 @@ -121,9 +121,9 @@ game_node = NodePath("../../../../Game") player_node = NodePath("../../../../Game/Player") [node name="LoadJSON" type="Button" parent="Control/VBoxContainer/SaveLoad"] -margin_left = 138.0 +margin_left = 139.0 margin_top = 43.0 -margin_right = 268.0 +margin_right = 269.0 margin_bottom = 78.0 rect_min_size = Vector2( 0, 35 ) size_flags_horizontal = 3 diff --git a/loading/serialization/save_load_config_file.gd b/loading/serialization/save_load_config_file.gd index 00289a94..04153dbc 100644 --- a/loading/serialization/save_load_config_file.gd +++ b/loading/serialization/save_load_config_file.gd @@ -2,13 +2,14 @@ extends Button # This script shows how to save data using Godot's custom ConfigFile format. # ConfigFile can store any Godot type natively. + +const SAVE_PATH = "user://save_config_file.ini" + # The root game node (so we can get and instance enemies). export(NodePath) var game_node # The player node (so we can set/get its health and position). export(NodePath) var player_node -const SAVE_PATH = "user://save_config_file.ini" - func save_game(): var config = ConfigFile.new() diff --git a/loading/serialization/save_load_json.gd b/loading/serialization/save_load_json.gd index 87ff05d1..035e0cdc 100644 --- a/loading/serialization/save_load_json.gd +++ b/loading/serialization/save_load_json.gd @@ -4,13 +4,14 @@ extends Button # stored natively. For example, integers get converted into doubles, # and to store Vector2 and other non-JSON types you need `var2str()`. + +const SAVE_PATH = "user://save_json.json" + # The root game node (so we can get and instance enemies). export(NodePath) var game_node # The player node (so we can set/get its health and position). export(NodePath) var player_node -const SAVE_PATH = "user://save_json.json" - func save_game(): var file = File.new() diff --git a/loading/threads/thread.gd b/loading/threads/thread.gd index 31f52113..e35e5946 100644 --- a/loading/threads/thread.gd +++ b/loading/threads/thread.gd @@ -1,7 +1,9 @@ extends Node2D + var thread = Thread.new() + # This function runs in a thread! # Threads always take one userdata argument func _bg_load(path): diff --git a/misc/2.5d/addons/node25d/.broken-gdscripts/Basis25D.gd b/misc/2.5d/addons/node25d/.broken-gdscripts/Basis25D.gd index 6b7817fd..65e6e272 100644 --- a/misc/2.5d/addons/node25d/.broken-gdscripts/Basis25D.gd +++ b/misc/2.5d/addons/node25d/.broken-gdscripts/Basis25D.gd @@ -10,28 +10,36 @@ class_name Basis25D + var x: Vector2 = Vector2() var y: Vector2 = Vector2() var z: Vector2 = Vector2() + static func top_down(): return init(1, 0, 0, 0, 0, 1) + static func front_side(): return init(1, 0, 0, -1, 0, 0) + static func forty_five(): return init(1, 0, 0, -0.70710678118, 0, 0.70710678118) + static func isometric(): return init(0.86602540378, 0.5, 0, -1, -0.86602540378, 0.5) + static func oblique_y(): return init(1, 0, -1, -1, 0, 1) + static func oblique_z(): return init(1, 0, 0, -1, -1, 1) + # Creates a Dimetric Basis25D from the angle between the Y axis and the others. # Dimetric(2.09439510239) is the same as Isometric. # Try to keep this number away from a multiple of Tau/4 (or Pi/2) radians. @@ -40,12 +48,14 @@ static func dimetric(angle): var cosine = cos(angle) return init(sine, -cosine, 0, -1, -sine, -cosine) + static func init(xx, xy, yx, yy, zx, zy): var xv = Vector2(xx, xy) var yv = Vector2(yx, yy) var zv = Vector2(zx, zy) return Basis25D.new(xv, yv, zv) + func _init(xAxis: Vector2, yAxis: Vector2, zAxis: Vector2): x = xAxis y = yAxis diff --git a/misc/2.5d/addons/node25d/.broken-gdscripts/Transform25D.gd b/misc/2.5d/addons/node25d/.broken-gdscripts/Transform25D.gd index d4ed8810..bd49151a 100644 --- a/misc/2.5d/addons/node25d/.broken-gdscripts/Transform25D.gd +++ b/misc/2.5d/addons/node25d/.broken-gdscripts/Transform25D.gd @@ -6,17 +6,21 @@ class_name Transform25D + var spatial_position: Vector3 = Vector3() var basis #: Basis25D + func flat_transform(): return Transform2D(0, flat_position()) + func flat_position(): var pos = spatial_position.x * basis.x pos += spatial_position.y * basis.y pos += spatial_position.z * basis.z return pos + func _init(basis25d): basis = basis25d diff --git a/misc/2.5d/addons/node25d/main_screen/gizmo_25d.gd b/misc/2.5d/addons/node25d/main_screen/gizmo_25d.gd index 76f3743a..43b97d35 100644 --- a/misc/2.5d/addons/node25d/main_screen/gizmo_25d.gd +++ b/misc/2.5d/addons/node25d/main_screen/gizmo_25d.gd @@ -1,6 +1,7 @@ tool extends Node2D + # Not pixel perfect for all axes in all modes, but works well enough. # Rounding is not done until after the movement is finished. const ROUGHLY_ROUND_TO_PIXELS = true @@ -22,6 +23,7 @@ var dominant_axis onready var lines_root = $Lines onready var lines = [$Lines/X, $Lines/Y, $Lines/Z] + func _process(_delta): if not lines: return # Somehow this node hasn't been set up yet. diff --git a/misc/2.5d/addons/node25d/main_screen/main_screen_25d.tscn b/misc/2.5d/addons/node25d/main_screen/main_screen_25d.tscn index 4f142a86..3cc52b4a 100644 --- a/misc/2.5d/addons/node25d/main_screen/main_screen_25d.tscn +++ b/misc/2.5d/addons/node25d/main_screen/main_screen_25d.tscn @@ -14,9 +14,6 @@ anchor_right = 1.0 anchor_bottom = 1.0 size_flags_horizontal = 3 size_flags_vertical = 3 -__meta__ = { -"_edit_use_anchors_": false -} [node name="TopBar" type="HBoxContainer" parent="."] margin_right = 1600.0 diff --git a/misc/2.5d/addons/node25d/main_screen/viewport_25d.gd b/misc/2.5d/addons/node25d/main_screen/viewport_25d.gd index ad9e574e..8b11afb9 100644 --- a/misc/2.5d/addons/node25d/main_screen/viewport_25d.gd +++ b/misc/2.5d/addons/node25d/main_screen/viewport_25d.gd @@ -1,6 +1,7 @@ tool extends Control + var zoom_level := 0 var is_panning = false var pan_center: Vector2 @@ -16,6 +17,7 @@ onready var view_mode_button_group: ButtonGroup = $"../TopBar/ViewModeButtons/45 onready var zoom_label: Label = $"../TopBar/Zoom/ZoomPercent" onready var gizmo_25d_scene = preload("res://addons/node25d/main_screen/gizmo_25d.tscn") + func _ready(): # Give Godot a chance to fully load the scene. Should take two frames. yield(get_tree(), "idle_frame") diff --git a/misc/2.5d/addons/node25d/node25d_plugin.gd b/misc/2.5d/addons/node25d/node25d_plugin.gd index a1fd24c5..ffcbf490 100644 --- a/misc/2.5d/addons/node25d/node25d_plugin.gd +++ b/misc/2.5d/addons/node25d/node25d_plugin.gd @@ -1,10 +1,12 @@ tool extends EditorPlugin + const MainPanel = preload("res://addons/node25d/main_screen/main_screen_25d.tscn") var main_panel_instance + func _enter_tree(): main_panel_instance = MainPanel.instance() main_panel_instance.get_child(1).editor_interface = get_editor_interface() diff --git a/misc/2.5d/addons/node25d/node_25d.gd b/misc/2.5d/addons/node25d/node_25d.gd index 060ca379..481b9afc 100644 --- a/misc/2.5d/addons/node25d/node_25d.gd +++ b/misc/2.5d/addons/node25d/node_25d.gd @@ -4,6 +4,7 @@ tool extends Node2D class_name Node25D, "res://addons/node25d/icons/node_25d_icon.png" + # SCALE is the number of 2D units in one 3D unit. Ideally, but not necessarily, an integer. const SCALE = 32 diff --git a/misc/2.5d/addons/node25d/shadow_math_25d.gd b/misc/2.5d/addons/node25d/shadow_math_25d.gd index 2646c2b1..99a39905 100644 --- a/misc/2.5d/addons/node25d/shadow_math_25d.gd +++ b/misc/2.5d/addons/node25d/shadow_math_25d.gd @@ -5,6 +5,7 @@ tool extends KinematicBody class_name ShadowMath25D, "res://addons/node25d/icons/shadow_math_25d_icon.png" + # The maximum distance below objects that shadows will appear (in 3D units). var shadow_length = 1000.0 var _shadow_root: Node25D diff --git a/misc/2.5d/addons/node25d/y_sort_25d.gd b/misc/2.5d/addons/node25d/y_sort_25d.gd index 6e0a2093..7626492f 100644 --- a/misc/2.5d/addons/node25d/y_sort_25d.gd +++ b/misc/2.5d/addons/node25d/y_sort_25d.gd @@ -6,6 +6,7 @@ tool extends Node # Note: NOT Node2D, Node25D, or YSort class_name YSort25D, "res://addons/node25d/icons/y_sort_25d_icon.png" + # Whether or not to automatically call sort() in _process(). export(bool) var sort_enabled := true var _parent_node: Node2D # NOT Node25D diff --git a/misc/2.5d/assets/cube/cube_math.gd b/misc/2.5d/assets/cube/cube_math.gd index c2ed6a11..1595d651 100644 --- a/misc/2.5d/assets/cube/cube_math.gd +++ b/misc/2.5d/assets/cube/cube_math.gd @@ -1,11 +1,13 @@ extends Spatial -onready var _cube_point_scene: PackedScene = preload("res://assets/cube/cube_point.tscn") -onready var _parent = get_parent() var _is_parent_ready := false var _cube_points_math = [] var _cube_math_spatials = [] +onready var _cube_point_scene: PackedScene = preload("res://assets/cube/cube_point.tscn") + +onready var _parent = get_parent() + func _ready(): _parent = get_parent() diff --git a/misc/2.5d/assets/demo_scene.tscn b/misc/2.5d/assets/demo_scene.tscn index 798e22b1..38878444 100644 --- a/misc/2.5d/assets/demo_scene.tscn +++ b/misc/2.5d/assets/demo_scene.tscn @@ -25,17 +25,16 @@ extents = Vector3( 5, 0.5, 5 ) [node name="Overlay" parent="." instance=ExtResource( 1 )] [node name="Player25D" parent="." instance=ExtResource( 2 )] -position = Vector2( 0, -226.274 ) +position = Vector2( 0, 0 ) z_index = -3952 [node name="Shadow25D" parent="." instance=ExtResource( 3 )] visible = true -position = Vector2( 0, 11.2685 ) +position = Vector2( 0, 0 ) z_index = -3958 -spatial_position = Vector3( 0, -0.498, 0 ) +spatial_position = Vector3( 3.13315e-08, -0.498, 3.13315e-08 ) [node name="Platform0" type="Node2D" parent="."] -position = Vector2( -256, -113.137 ) z_index = -3954 script = ExtResource( 4 ) __meta__ = { @@ -60,7 +59,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform1" type="Node2D" parent="."] -position = Vector2( -256, -339.411 ) z_index = -3956 script = ExtResource( 4 ) __meta__ = { @@ -85,7 +83,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform2" type="Node2D" parent="."] -position = Vector2( 0, 22.6274 ) z_index = -3962 script = ExtResource( 4 ) __meta__ = { @@ -110,7 +107,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform3" type="Node2D" parent="."] -position = Vector2( 320, 22.6274 ) z_index = -3960 script = ExtResource( 4 ) __meta__ = { @@ -135,7 +131,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform4" type="Node2D" parent="."] -position = Vector2( 0, -203.647 ) z_index = -3966 script = ExtResource( 4 ) __meta__ = { @@ -160,7 +155,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform5" type="Node2D" parent="."] -position = Vector2( 320, -113.137 ) z_index = -3984 script = ExtResource( 4 ) __meta__ = { @@ -185,7 +179,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform6" type="Node2D" parent="."] -position = Vector2( 320, 113.137 ) z_index = -3982 script = ExtResource( 4 ) __meta__ = { @@ -210,7 +203,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform7" type="Node2D" parent="."] -position = Vector2( 320, 339.411 ) z_index = -3978 script = ExtResource( 4 ) __meta__ = { @@ -235,7 +227,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform20" type="Node2D" parent="."] -position = Vector2( 320, 565.685 ) z_index = -3976 script = ExtResource( 4 ) __meta__ = { @@ -260,7 +251,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform21" type="Node2D" parent="."] -position = Vector2( 320, 791.96 ) z_index = -3972 script = ExtResource( 4 ) __meta__ = { @@ -285,7 +275,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform22" type="Node2D" parent="."] -position = Vector2( 320, 1018.23 ) z_index = -3970 script = ExtResource( 4 ) __meta__ = { @@ -310,7 +299,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform9" type="Node2D" parent="."] -position = Vector2( 640, 339.411 ) z_index = -3974 script = ExtResource( 4 ) __meta__ = { @@ -335,7 +323,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform10" type="Node2D" parent="."] -position = Vector2( 896, 294.156 ) z_index = -3994 script = ExtResource( 4 ) __meta__ = { @@ -360,7 +347,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform11" type="Node2D" parent="."] -position = Vector2( 896, 520.431 ) z_index = -3992 script = ExtResource( 4 ) __meta__ = { @@ -385,7 +371,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform12" type="Node2D" parent="."] -position = Vector2( 896, 746.705 ) z_index = -3988 script = ExtResource( 4 ) __meta__ = { @@ -410,7 +395,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform13" type="Node2D" parent="."] -position = Vector2( 576, 746.705 ) z_index = -3990 script = ExtResource( 4 ) __meta__ = { @@ -435,7 +419,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform14" type="Node2D" parent="."] -position = Vector2( 256, 746.705 ) z_index = -3996 script = ExtResource( 4 ) __meta__ = { @@ -460,7 +443,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform15" type="Node2D" parent="."] -position = Vector2( -64, 746.705 ) z_index = -3998 script = ExtResource( 4 ) __meta__ = { @@ -485,7 +467,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform23" type="Node2D" parent="."] -position = Vector2( -384, 746.705 ) z_index = -4000 script = ExtResource( 4 ) __meta__ = { @@ -510,7 +491,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform16" type="Node2D" parent="."] -position = Vector2( -320, 565.685 ) z_index = -3980 script = ExtResource( 4 ) __meta__ = { @@ -535,7 +515,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform19" type="Node2D" parent="."] -position = Vector2( -320, 339.411 ) z_index = -3986 script = ExtResource( 4 ) __meta__ = { @@ -560,7 +539,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform17" type="Node2D" parent="."] -position = Vector2( -480, 248.902 ) z_index = -3964 script = ExtResource( 4 ) __meta__ = { @@ -585,7 +563,6 @@ texture = ExtResource( 6 ) script = ExtResource( 7 ) [node name="Platform18" type="Node2D" parent="."] -position = Vector2( -480, 22.6274 ) z_index = -3968 script = ExtResource( 4 ) __meta__ = { diff --git a/misc/2.5d/assets/platform/platform_sprite.gd b/misc/2.5d/assets/platform/platform_sprite.gd index e3868e6e..d74e3fca 100644 --- a/misc/2.5d/assets/platform/platform_sprite.gd +++ b/misc/2.5d/assets/platform/platform_sprite.gd @@ -1,6 +1,7 @@ tool extends Sprite + onready var _forty_five = preload("res://assets/platform/textures/forty_five.png") onready var _isometric = preload("res://assets/platform/textures/isometric.png") onready var _top_down = preload("res://assets/platform/textures/top_down.png") @@ -8,6 +9,7 @@ onready var _front_side = preload("res://assets/platform/textures/front_side.png onready var _oblique_y = preload("res://assets/platform/textures/oblique_y.png") onready var _oblique_z = preload("res://assets/platform/textures/oblique_z.png") + func _process(_delta): if not Engine.editor_hint: if Input.is_action_pressed("forty_five_mode"): diff --git a/misc/2.5d/assets/player/player_math_25d.gd b/misc/2.5d/assets/player/player_math_25d.gd index 78480856..f9e8c33a 100644 --- a/misc/2.5d/assets/player/player_math_25d.gd +++ b/misc/2.5d/assets/player/player_math_25d.gd @@ -2,10 +2,12 @@ extends KinematicBody class_name PlayerMath25D # No icon necessary + var vertical_speed := 0.0 var isometric_controls := true onready var _parent_node25d: Node25D = get_parent() + func _process(delta): if Input.is_action_pressed("exit"): get_tree().quit() diff --git a/misc/2.5d/assets/player/player_sprite.gd b/misc/2.5d/assets/player/player_sprite.gd index 5b1e9398..de915cbd 100644 --- a/misc/2.5d/assets/player/player_sprite.gd +++ b/misc/2.5d/assets/player/player_sprite.gd @@ -1,9 +1,6 @@ tool extends Sprite -onready var _stand = preload("res://assets/player/textures/stand.png") -onready var _jump = preload("res://assets/player/textures/jump.png") -onready var _run = preload("res://assets/player/textures/run.png") const FRAMERATE = 15 @@ -12,6 +9,11 @@ var _progress := 0.0 var _parent_node25d: Node25D var _parent_math: PlayerMath25D +onready var _stand = preload("res://assets/player/textures/stand.png") +onready var _jump = preload("res://assets/player/textures/jump.png") +onready var _run = preload("res://assets/player/textures/run.png") + + func _ready(): _parent_node25d = get_parent() _parent_math = _parent_node25d.get_child(0) diff --git a/misc/2.5d/assets/shadow/shadow_sprite.gd b/misc/2.5d/assets/shadow/shadow_sprite.gd index f84f0e13..6863aff4 100644 --- a/misc/2.5d/assets/shadow/shadow_sprite.gd +++ b/misc/2.5d/assets/shadow/shadow_sprite.gd @@ -1,6 +1,7 @@ tool extends Sprite + onready var _forty_five = preload("res://assets/shadow/textures/forty_five.png") onready var _isometric = preload("res://assets/shadow/textures/isometric.png") onready var _top_down = preload("res://assets/shadow/textures/top_down.png") @@ -8,6 +9,7 @@ onready var _front_side = preload("res://assets/shadow/textures/front_side.png") onready var _oblique_y = preload("res://assets/shadow/textures/oblique_y.png") onready var _oblique_z = preload("res://assets/shadow/textures/oblique_z.png") + func _process(_delta): if not Engine.editor_hint: if Input.is_action_pressed("forty_five_mode"): diff --git a/misc/2.5d/assets/ui/control_hints.gd b/misc/2.5d/assets/ui/control_hints.gd index e234cb40..da6d7ed9 100644 --- a/misc/2.5d/assets/ui/control_hints.gd +++ b/misc/2.5d/assets/ui/control_hints.gd @@ -1,5 +1,6 @@ extends Control + func _process(_delta): if Input.is_action_just_pressed("toggle_control_hints"): visible = not visible diff --git a/misc/joypads/joypads.gd b/misc/joypads/joypads.gd index 39229895..c4726827 100644 --- a/misc/joypads/joypads.gd +++ b/misc/joypads/joypads.gd @@ -7,6 +7,7 @@ extends Control # # Licensed under the MIT license + const DEADZONE = 0.2 const FONT_COLOR_DEFAULT = Color(1.0, 1.0, 1.0, 0.5) const FONT_COLOR_ACTIVE = Color.white @@ -22,6 +23,7 @@ onready var joypad_buttons = $JoypadDiagram/Buttons onready var joypad_name = $DeviceInfo/JoyName onready var joypad_number = $DeviceInfo/JoyNumber + func _ready(): set_physics_process(true) Input.connect("joy_connection_changed", self, "_on_joy_connection_changed") diff --git a/misc/joypads/joypads.tscn b/misc/joypads/joypads.tscn index 401d82b3..68b111e2 100644 --- a/misc/joypads/joypads.tscn +++ b/misc/joypads/joypads.tscn @@ -601,7 +601,7 @@ __meta__ = { } [node name="0" type="Label" parent="Buttons/ButtonGrid"] -margin_right = 27.0 +margin_right = 28.0 margin_bottom = 20.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -615,8 +615,8 @@ __meta__ = { } [node name="1" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 31.0 -margin_right = 58.0 +margin_left = 32.0 +margin_right = 60.0 margin_bottom = 20.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -630,8 +630,8 @@ __meta__ = { } [node name="2" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 62.0 -margin_right = 89.0 +margin_left = 64.0 +margin_right = 92.0 margin_bottom = 20.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -645,8 +645,8 @@ __meta__ = { } [node name="3" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 93.0 -margin_right = 120.0 +margin_left = 96.0 +margin_right = 124.0 margin_bottom = 20.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -660,8 +660,8 @@ __meta__ = { } [node name="4" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 124.0 -margin_right = 151.0 +margin_left = 128.0 +margin_right = 156.0 margin_bottom = 20.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -675,8 +675,8 @@ __meta__ = { } [node name="5" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 155.0 -margin_right = 182.0 +margin_left = 160.0 +margin_right = 188.0 margin_bottom = 20.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -690,8 +690,8 @@ __meta__ = { } [node name="6" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 186.0 -margin_right = 213.0 +margin_left = 192.0 +margin_right = 219.0 margin_bottom = 20.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -705,8 +705,8 @@ __meta__ = { } [node name="7" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 217.0 -margin_right = 244.0 +margin_left = 223.0 +margin_right = 250.0 margin_bottom = 20.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -721,7 +721,7 @@ __meta__ = { [node name="8" type="Label" parent="Buttons/ButtonGrid"] margin_top = 24.0 -margin_right = 27.0 +margin_right = 28.0 margin_bottom = 44.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -735,9 +735,9 @@ __meta__ = { } [node name="9" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 31.0 +margin_left = 32.0 margin_top = 24.0 -margin_right = 58.0 +margin_right = 60.0 margin_bottom = 44.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -751,9 +751,9 @@ __meta__ = { } [node name="10" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 62.0 +margin_left = 64.0 margin_top = 24.0 -margin_right = 89.0 +margin_right = 92.0 margin_bottom = 44.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -767,9 +767,9 @@ __meta__ = { } [node name="11" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 93.0 +margin_left = 96.0 margin_top = 24.0 -margin_right = 120.0 +margin_right = 124.0 margin_bottom = 44.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -783,9 +783,9 @@ __meta__ = { } [node name="12" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 124.0 +margin_left = 128.0 margin_top = 24.0 -margin_right = 151.0 +margin_right = 156.0 margin_bottom = 44.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -799,9 +799,9 @@ __meta__ = { } [node name="13" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 155.0 +margin_left = 160.0 margin_top = 24.0 -margin_right = 182.0 +margin_right = 188.0 margin_bottom = 44.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -815,9 +815,9 @@ __meta__ = { } [node name="14" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 186.0 +margin_left = 192.0 margin_top = 24.0 -margin_right = 213.0 +margin_right = 219.0 margin_bottom = 44.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -831,9 +831,9 @@ __meta__ = { } [node name="15" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 217.0 +margin_left = 223.0 margin_top = 24.0 -margin_right = 244.0 +margin_right = 250.0 margin_bottom = 44.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -848,7 +848,7 @@ __meta__ = { [node name="16" type="Label" parent="Buttons/ButtonGrid"] margin_top = 48.0 -margin_right = 27.0 +margin_right = 28.0 margin_bottom = 68.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -862,9 +862,9 @@ __meta__ = { } [node name="17" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 31.0 +margin_left = 32.0 margin_top = 48.0 -margin_right = 58.0 +margin_right = 60.0 margin_bottom = 68.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -878,9 +878,9 @@ __meta__ = { } [node name="18" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 62.0 +margin_left = 64.0 margin_top = 48.0 -margin_right = 89.0 +margin_right = 92.0 margin_bottom = 68.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -894,9 +894,9 @@ __meta__ = { } [node name="19" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 93.0 +margin_left = 96.0 margin_top = 48.0 -margin_right = 120.0 +margin_right = 124.0 margin_bottom = 68.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -910,9 +910,9 @@ __meta__ = { } [node name="20" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 124.0 +margin_left = 128.0 margin_top = 48.0 -margin_right = 151.0 +margin_right = 156.0 margin_bottom = 68.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -926,9 +926,9 @@ __meta__ = { } [node name="21" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 155.0 +margin_left = 160.0 margin_top = 48.0 -margin_right = 182.0 +margin_right = 188.0 margin_bottom = 68.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -942,9 +942,9 @@ __meta__ = { } [node name="22" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 186.0 +margin_left = 192.0 margin_top = 48.0 -margin_right = 213.0 +margin_right = 219.0 margin_bottom = 68.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 @@ -958,9 +958,9 @@ __meta__ = { } [node name="23" type="Label" parent="Buttons/ButtonGrid"] -margin_left = 217.0 +margin_left = 223.0 margin_top = 48.0 -margin_right = 244.0 +margin_right = 250.0 margin_bottom = 68.0 rect_min_size = Vector2( 0, 20 ) size_flags_horizontal = 3 diff --git a/misc/joypads/remap/remap_wizard.tscn b/misc/joypads/remap/remap_wizard.tscn index 3696e8e8..017b55a2 100644 --- a/misc/joypads/remap/remap_wizard.tscn +++ b/misc/joypads/remap/remap_wizard.tscn @@ -264,6 +264,7 @@ margin_bottom = 176.0 size_flags_vertical = 3 readonly = true wrap_enabled = true + [connection signal="pressed" from="Start/Margin/Layout/HTML5/known/Xbox" to="." method="_on_xbox_pressed"] [connection signal="pressed" from="Start/Margin/Layout/HTML5/known/XboxOSX" to="." method="_on_xboxosx_pressed"] [connection signal="pressed" from="Start/Margin/Layout/Buttons/Cancel" to="." method="_on_Cancel_pressed"] diff --git a/misc/matrix_transform/2D.tscn b/misc/matrix_transform/2D.tscn index 0fb1d126..7911482c 100644 --- a/misc/matrix_transform/2D.tscn +++ b/misc/matrix_transform/2D.tscn @@ -5,7 +5,6 @@ [node name="2D" type="Node2D"] [node name="Scale100" type="Node2D" parent="."] -rotation = 2.98023e-08 scale = Vector2( 100, 100 ) [node name="AxisMarker" parent="Scale100" instance=ExtResource( 1 )] diff --git a/misc/matrix_transform/marker/AxisMarker2D.gd b/misc/matrix_transform/marker/AxisMarker2D.gd index fd3ba123..9a04d23a 100644 --- a/misc/matrix_transform/marker/AxisMarker2D.gd +++ b/misc/matrix_transform/marker/AxisMarker2D.gd @@ -2,6 +2,7 @@ tool class_name AxisMarker2D, "res://marker/AxisMarker2D.svg" extends Node2D + func _process(_delta): var line: Line2D = get_child(0).get_child(0) var marker_parent = get_parent() diff --git a/misc/matrix_transform/marker/AxisMarker3D.gd b/misc/matrix_transform/marker/AxisMarker3D.gd index 0e9d8916..da4b53e7 100644 --- a/misc/matrix_transform/marker/AxisMarker3D.gd +++ b/misc/matrix_transform/marker/AxisMarker3D.gd @@ -2,6 +2,7 @@ tool class_name AxisMarker3D, "res://marker/AxisMarker3D.svg" extends Spatial + func _process(_delta): var holder: Spatial = get_child(0).get_child(0) var cube: Spatial = holder.get_child(0) diff --git a/misc/opensimplexnoise/OpenSimplexNoise_Viewer.gd b/misc/opensimplexnoise/OpenSimplexNoise_Viewer.gd index 6cf5b7af..927ece74 100644 --- a/misc/opensimplexnoise/OpenSimplexNoise_Viewer.gd +++ b/misc/opensimplexnoise/OpenSimplexNoise_Viewer.gd @@ -1,12 +1,14 @@ extends Control -# The OpenSimplexNoise object. -onready var noise: OpenSimplexNoise = $SeamlessNoiseTexture.texture.noise # Various noise parameters. var min_noise = -1 var max_noise = 1 +# The OpenSimplexNoise object. +onready var noise: OpenSimplexNoise = $SeamlessNoiseTexture.texture.noise + + # Called when the node enters the scene tree for the first time. func _ready(): # Set up noise with basic info. diff --git a/misc/os_test/icon.png.import b/misc/os_test/icon.png.import index 96cbf462..a4c02e6e 100644 --- a/misc/os_test/icon.png.import +++ b/misc/os_test/icon.png.import @@ -28,6 +28,7 @@ process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false +process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true diff --git a/misc/os_test/os_test.gd b/misc/os_test/os_test.gd index 5265bc2d..303cef91 100644 --- a/misc/os_test/os_test.gd +++ b/misc/os_test/os_test.gd @@ -1,64 +1,10 @@ extends Node + onready var rtl = $HBoxContainer/Features onready var mono_test = $MonoTest -# Returns a human-readable string from a date and time, date, or time dictionary. -func datetime_to_string(date): - if ( - date.has("year") - and date.has("month") - and date.has("day") - and date.has("hour") - and date.has("minute") - and date.has("second") - ): - # Date and time. - return "{year}-{month}-{day} {hour}:{minute}:{second}".format({ - year = str(date.year).pad_zeros(2), - month = str(date.month).pad_zeros(2), - day = str(date.day).pad_zeros(2), - hour = str(date.hour).pad_zeros(2), - minute = str(date.minute).pad_zeros(2), - second = str(date.second).pad_zeros(2), - }) - elif date.has("year") and date.has("month") and date.has("day"): - # Date only. - return "{year}-{month}-{day}".format({ - year = str(date.year).pad_zeros(2), - month = str(date.month).pad_zeros(2), - day = str(date.day).pad_zeros(2), - }) - else: - # Time only. - return "{hour}:{minute}:{second}".format({ - hour = str(date.hour).pad_zeros(2), - minute = str(date.minute).pad_zeros(2), - second = str(date.second).pad_zeros(2), - }) - - -func scan_midi_devices(): - OS.open_midi_inputs() - var devices = OS.get_connected_midi_inputs().join(", ") - OS.close_midi_inputs() - return devices - - -func add_header(header): - rtl.append_bbcode("\n[b][u][color=#6df]{header}[/color][/u][/b]\n".format({ - header = header, - })) - - -func add_line(key, value): - rtl.append_bbcode("[b]{key}:[/b] {value}\n".format({ - key = key, - value = value if str(value) != "" else "[color=#8fff](empty)[/color]", - })) - - func _ready(): add_header("Audio") var audio_drivers = PoolStringArray() @@ -153,3 +99,58 @@ func _ready(): video_drivers.push_back(OS.get_video_driver_name(i)) add_line("Available drivers", video_drivers.join(", ")) add_line("Current driver", OS.get_video_driver_name(OS.get_current_video_driver())) + + +# Returns a human-readable string from a date and time, date, or time dictionary. +func datetime_to_string(date): + if ( + date.has("year") + and date.has("month") + and date.has("day") + and date.has("hour") + and date.has("minute") + and date.has("second") + ): + # Date and time. + return "{year}-{month}-{day} {hour}:{minute}:{second}".format({ + year = str(date.year).pad_zeros(2), + month = str(date.month).pad_zeros(2), + day = str(date.day).pad_zeros(2), + hour = str(date.hour).pad_zeros(2), + minute = str(date.minute).pad_zeros(2), + second = str(date.second).pad_zeros(2), + }) + elif date.has("year") and date.has("month") and date.has("day"): + # Date only. + return "{year}-{month}-{day}".format({ + year = str(date.year).pad_zeros(2), + month = str(date.month).pad_zeros(2), + day = str(date.day).pad_zeros(2), + }) + else: + # Time only. + return "{hour}:{minute}:{second}".format({ + hour = str(date.hour).pad_zeros(2), + minute = str(date.minute).pad_zeros(2), + second = str(date.second).pad_zeros(2), + }) + + +func scan_midi_devices(): + OS.open_midi_inputs() + var devices = OS.get_connected_midi_inputs().join(", ") + OS.close_midi_inputs() + return devices + + +func add_header(header): + rtl.append_bbcode("\n[b][u][color=#6df]{header}[/color][/u][/b]\n".format({ + header = header, + })) + + +func add_line(key, value): + rtl.append_bbcode("[b]{key}:[/b] {value}\n".format({ + key = key, + value = value if str(value) != "" else "[color=#8fff](empty)[/color]", + })) diff --git a/misc/os_test/os_test.tscn b/misc/os_test/os_test.tscn index 83e65755..db5818b9 100644 --- a/misc/os_test/os_test.tscn +++ b/misc/os_test/os_test.tscn @@ -82,7 +82,7 @@ __meta__ = { [node name="OpenShellWeb" type="Button" parent="HBoxContainer/Actions/GridContainer"] margin_right = 239.0 -margin_bottom = 70.0 +margin_bottom = 71.0 size_flags_horizontal = 3 size_flags_vertical = 3 text = "Open Shell (web)" @@ -90,109 +90,109 @@ text = "Open Shell (web)" [node name="OpenShellFolder" type="Button" parent="HBoxContainer/Actions/GridContainer"] margin_left = 243.0 margin_right = 482.0 -margin_bottom = 70.0 +margin_bottom = 71.0 size_flags_horizontal = 3 size_flags_vertical = 3 text = "Open Shell (folder)" [node name="ChangeWindowTitle" type="Button" parent="HBoxContainer/Actions/GridContainer"] -margin_top = 74.0 +margin_top = 75.0 margin_right = 239.0 -margin_bottom = 144.0 +margin_bottom = 146.0 size_flags_horizontal = 3 size_flags_vertical = 3 text = "Change Window Title" [node name="ChangeWindowIcon" type="Button" parent="HBoxContainer/Actions/GridContainer"] margin_left = 243.0 -margin_top = 74.0 +margin_top = 75.0 margin_right = 482.0 -margin_bottom = 144.0 +margin_bottom = 146.0 size_flags_horizontal = 3 size_flags_vertical = 3 text = "Change Window Icon" [node name="MoveWindowToForeground" type="Button" parent="HBoxContainer/Actions/GridContainer"] -margin_top = 148.0 +margin_top = 150.0 margin_right = 239.0 -margin_bottom = 218.0 +margin_bottom = 221.0 size_flags_horizontal = 3 size_flags_vertical = 3 text = "Move Window to Foreground" [node name="RequestAttention" type="Button" parent="HBoxContainer/Actions/GridContainer"] margin_left = 243.0 -margin_top = 148.0 +margin_top = 150.0 margin_right = 482.0 -margin_bottom = 218.0 +margin_bottom = 221.0 size_flags_horizontal = 3 size_flags_vertical = 3 text = "Request Attention" [node name="VibrateDeviceShort" type="Button" parent="HBoxContainer/Actions/GridContainer"] -margin_top = 222.0 +margin_top = 225.0 margin_right = 239.0 -margin_bottom = 292.0 +margin_bottom = 296.0 size_flags_horizontal = 3 size_flags_vertical = 3 text = "Vibrate Device (200 ms)" [node name="VibrateDeviceLong" type="Button" parent="HBoxContainer/Actions/GridContainer"] margin_left = 243.0 -margin_top = 222.0 +margin_top = 225.0 margin_right = 482.0 -margin_bottom = 292.0 +margin_bottom = 296.0 size_flags_horizontal = 3 size_flags_vertical = 3 text = "Vibrate Device (1000 ms)" [node name="AddGlobalMenuItems" type="Button" parent="HBoxContainer/Actions/GridContainer"] -margin_top = 296.0 +margin_top = 300.0 margin_right = 239.0 -margin_bottom = 366.0 +margin_bottom = 371.0 size_flags_horizontal = 3 size_flags_vertical = 3 text = "Add Global Menu Items" [node name="RemoveGlobalMenuItem" type="Button" parent="HBoxContainer/Actions/GridContainer"] margin_left = 243.0 -margin_top = 296.0 +margin_top = 300.0 margin_right = 482.0 -margin_bottom = 366.0 +margin_bottom = 371.0 size_flags_horizontal = 3 size_flags_vertical = 3 text = "Remove Global Menu Item" [node name="GetClipboard" type="Button" parent="HBoxContainer/Actions/GridContainer"] -margin_top = 370.0 +margin_top = 375.0 margin_right = 239.0 -margin_bottom = 440.0 +margin_bottom = 446.0 size_flags_horizontal = 3 size_flags_vertical = 3 text = "Get Clipboard Contents" [node name="SetClipboard" type="Button" parent="HBoxContainer/Actions/GridContainer"] margin_left = 243.0 -margin_top = 370.0 +margin_top = 375.0 margin_right = 482.0 -margin_bottom = 440.0 +margin_bottom = 446.0 size_flags_horizontal = 3 size_flags_vertical = 3 text = "Set Clipboard Contents" [node name="DisplayAlert" type="Button" parent="HBoxContainer/Actions/GridContainer"] -margin_top = 444.0 +margin_top = 450.0 margin_right = 239.0 -margin_bottom = 514.0 +margin_bottom = 520.0 size_flags_horizontal = 3 size_flags_vertical = 3 text = "Display Alert" [node name="KillCurrentProcess" type="Button" parent="HBoxContainer/Actions/GridContainer"] margin_left = 243.0 -margin_top = 444.0 +margin_top = 450.0 margin_right = 482.0 -margin_bottom = 514.0 +margin_bottom = 520.0 size_flags_horizontal = 3 size_flags_vertical = 3 text = "Kill Current Process" diff --git a/misc/pause/pause_button.gd b/misc/pause/pause_button.gd index 8c450f4b..a7fb1991 100644 --- a/misc/pause/pause_button.gd +++ b/misc/pause/pause_button.gd @@ -1,5 +1,6 @@ extends Button + func _ready(): # This ensures that this Node won't be paused, allowing it to # process even when the SceneTree is paused. Without that it would diff --git a/misc/pause/spinpause.tscn b/misc/pause/spinpause.tscn index 613b8587..51d5d7c7 100644 --- a/misc/pause/spinpause.tscn +++ b/misc/pause/spinpause.tscn @@ -24,7 +24,6 @@ tracks/0/keys = { [node name="Cube" type="MeshInstance" parent="."] mesh = SubResource( 1 ) -material/0 = null [node name="Camera" type="Camera" parent="."] transform = Transform( 0.571594, 0.275303, -0.772974, 0, 0.942035, 0.335515, 0.820537, -0.191779, 0.538461, -5.59754, 2.75935, 4.01344 ) diff --git a/misc/window_management/control.gd b/misc/window_management/control.gd index c1208ad1..f4294fb5 100644 --- a/misc/window_management/control.gd +++ b/misc/window_management/control.gd @@ -1,9 +1,11 @@ extends Control + var mousepos onready var observer = $"../Observer" + func _ready(): if not check_wm_api(): set_physics_process(false) diff --git a/misc/window_management/observer/observer.gd b/misc/window_management/observer/observer.gd index 5e242cf5..16f8384a 100644 --- a/misc/window_management/observer/observer.gd +++ b/misc/window_management/observer/observer.gd @@ -1,5 +1,6 @@ extends KinematicBody + const STATE_MENU = 0 const STATE_GRAB = 1 @@ -8,6 +9,7 @@ var state = STATE_MENU onready var camera = $Camera + func _process(delta): if state != STATE_GRAB: return diff --git a/misc/window_management/window_management.tscn b/misc/window_management/window_management.tscn index 8cca0c8a..b216debe 100644 --- a/misc/window_management/window_management.tscn +++ b/misc/window_management/window_management.tscn @@ -17,7 +17,6 @@ transform = Transform( 0.910685, 0, -0.4131, 0, 1, 0, 0.4131, 0, 0.910685, -4.81 [node name="TestCube" type="MeshInstance" parent="."] mesh = SubResource( 2 ) -material/0 = null [node name="Control" type="Control" parent="."] anchor_right = 1.0 diff --git a/mobile/android_iap/iap_demo.gd b/mobile/android_iap/iap_demo.gd index bac0fc01..96fd8239 100644 --- a/mobile/android_iap/iap_demo.gd +++ b/mobile/android_iap/iap_demo.gd @@ -1,12 +1,14 @@ extends Control + const TEST_ITEM_SKU = "my_in_app_purchase_sku" +var payment = null +var test_item_purchase_token = null + onready var alert_dialog = $AlertDialog onready var label = $Label -var payment = null -var test_item_purchase_token = null func _ready(): if Engine.has_singleton("GodotGooglePlayBilling"): diff --git a/mobile/multitouch_cubes/CubeScene.tscn b/mobile/multitouch_cubes/CubeScene.tscn index eed8d32b..331f812e 100644 --- a/mobile/multitouch_cubes/CubeScene.tscn +++ b/mobile/multitouch_cubes/CubeScene.tscn @@ -15,7 +15,6 @@ roughness = 0.0 transform = Transform( 0.707107, 0, -0.707107, -0.353553, 0.866025, -0.353553, 0.612372, 0.5, 0.612372, 0, 0, 0 ) material_override = SubResource( 1 ) mesh = SubResource( 2 ) -material/0 = null [node name="DirectionalLight" type="DirectionalLight" parent="."] transform = Transform( 0.926535, 0.11439, -0.358396, 0.199614, 0.658013, 0.726067, 0.318884, -0.744267, 0.586839, 0, 0, 0 ) diff --git a/mobile/multitouch_cubes/GestureArea.gd b/mobile/multitouch_cubes/GestureArea.gd index 11ec0312..eb92446f 100644 --- a/mobile/multitouch_cubes/GestureArea.gd +++ b/mobile/multitouch_cubes/GestureArea.gd @@ -1,5 +1,6 @@ extends Control + export(NodePath) var target export var min_scale = 0.1 export var max_scale = 3.0 @@ -16,6 +17,7 @@ var target_node # We keep here a copy of the state before the number of fingers changed to avoid accumulation errors. var base_xform + func _ready(): base_state = {} curr_state = {} diff --git a/mobile/multitouch_cubes/Main.tscn b/mobile/multitouch_cubes/Main.tscn index 9f1b4483..8a47f76b 100644 --- a/mobile/multitouch_cubes/Main.tscn +++ b/mobile/multitouch_cubes/Main.tscn @@ -8,9 +8,6 @@ anchor_right = 1.0 anchor_bottom = 1.0 size_flags_horizontal = 0 size_flags_vertical = 0 -__meta__ = { -"_edit_use_anchors_": false -} [node name="HBoxContainer" type="HBoxContainer" parent="."] margin_right = 1024.0 diff --git a/mobile/multitouch_view/Main.gd b/mobile/multitouch_view/Main.gd index 14a89e33..2c33daed 100644 --- a/mobile/multitouch_view/Main.gd +++ b/mobile/multitouch_view/Main.gd @@ -1,5 +1,6 @@ extends Node2D + func _process(_delta): # Keep redrawing on every frame. update() diff --git a/mobile/multitouch_view/TouchHelper.gd b/mobile/multitouch_view/TouchHelper.gd index 49c22981..e7963a26 100644 --- a/mobile/multitouch_view/TouchHelper.gd +++ b/mobile/multitouch_view/TouchHelper.gd @@ -5,8 +5,10 @@ extends Node # It also remaps the pointer indices coming from the OS to the lowest available to be friendlier. # It can be conveniently setup as a singleton. + var state = {} + func _unhandled_input(event): if event is InputEventScreenTouch: if event.pressed: # Down. diff --git a/mobile/sensors/main.gd b/mobile/sensors/main.gd index 2936af6d..d89c4d8d 100644 --- a/mobile/sensors/main.gd +++ b/mobile/sensors/main.gd @@ -1,5 +1,6 @@ extends Node + # Below are a number of helper functions that show how you can use the raw sensor data to determine the orientation # of your phone/device. The cheapest phones only have an accelerometer only the most expensive phones have all three. # Note that none of this logic filters data. Filters introduce lag but also provide stability. There are plenty @@ -9,87 +10,6 @@ extends Node # these cubes to our phones orientation. # This is a 3D example however reading the phones orientation is also invaluable for 2D -# This function calculates a rotation matrix based on a direction vector. As our arrows are cylindrical we don't -# care about the rotation around this axis. -func get_basis_for_arrow(p_vector): - var rotate = Basis() - - # as our arrow points up, Y = our direction vector - rotate.y = p_vector.normalized() - - # get an arbitrary vector we can use to calculate our other two vectors - var v = Vector3(1.0, 0.0, 0.0) - if abs(v.dot(rotate.y)) > 0.9: - v = Vector3(0.0, 1.0, 0.0) - - # use our vector to get a vector perpendicular to our two vectors - rotate.x = rotate.y.cross(v).normalized() - - # and the cross product again gives us our final vector perpendicular to our previous two vectors - rotate.z = rotate.x.cross(rotate.y).normalized() - - return rotate - -# This function combines the magnetometer reading with the gravity vector to get a vector that points due north -func calc_north(p_grav, p_mag): - # Always use normalized vectors! - p_grav = p_grav.normalized() - - # Calculate east (or is it west) by getting our cross product. - # The cross product of two normalized vectors returns a vector that - # is perpendicular to our two vectors - var east = p_grav.cross(p_mag.normalized()).normalized() - - # Cross again to get our horizon aligned north - return east.cross(p_grav).normalized() - -# This function creates an orientation matrix using the magnetometer and gravity vector as inputs. -func orientate_by_mag_and_grav(p_mag, p_grav): - var rotate = Basis() - - # as always, normalize! - p_mag = p_mag.normalized() - - # gravity points down, so - gravity points up! - rotate.y = -p_grav.normalized() - - # Cross products with our magnetic north gives an aligned east (or west, I always forget) - rotate.x = rotate.y.cross(p_mag) - - # And cross product again and we get our aligned north completing our matrix - rotate.z = rotate.x.cross(rotate.y) - - return rotate - -# This function takes our gyro input and update an orientation matrix accordingly -# The gyro is special as this vector does not contain a direction but rather a -# rotational velocity. This is why we multiply our values with delta. -func rotate_by_gyro(p_gyro, p_basis, p_delta): - var rotate = Basis() - - rotate = rotate.rotated(p_basis.x, -p_gyro.x * p_delta) - rotate = rotate.rotated(p_basis.y, -p_gyro.y * p_delta) - rotate = rotate.rotated(p_basis.z, -p_gyro.z * p_delta) - - return rotate * p_basis - -# This function corrects the drift in our matrix by our gravity vector -func drift_correction(p_basis, p_grav): - # as always, make sure our vector is normalized but also invert as our gravity points down - var real_up = -p_grav.normalized() - - # start by calculating the dot product, this gives us the cosine angle between our two vectors - var dot = p_basis.y.dot(real_up) - - # if our dot is 1.0 we're good - if dot < 1.0: - # the cross between our two vectors gives us a vector perpendicular to our two vectors - var axis = p_basis.y.cross(real_up).normalized() - var correction = Basis(axis, acos(dot)) - p_basis = correction * p_basis - - return p_basis - func _process(delta): # Get our data var acc = Input.get_accelerometer() @@ -136,3 +56,89 @@ func _process(delta): var gyro_and_grav = get_node("Boxes/GyroAndGrav") var new_basis = rotate_by_gyro(gyro, gyro_and_grav.transform.basis, delta).orthonormalized() gyro_and_grav.transform.basis = drift_correction(new_basis, grav) + + +# This function calculates a rotation matrix based on a direction vector. As our arrows are cylindrical we don't +# care about the rotation around this axis. +func get_basis_for_arrow(p_vector): + var rotate = Basis() + + # as our arrow points up, Y = our direction vector + rotate.y = p_vector.normalized() + + # get an arbitrary vector we can use to calculate our other two vectors + var v = Vector3(1.0, 0.0, 0.0) + if abs(v.dot(rotate.y)) > 0.9: + v = Vector3(0.0, 1.0, 0.0) + + # use our vector to get a vector perpendicular to our two vectors + rotate.x = rotate.y.cross(v).normalized() + + # and the cross product again gives us our final vector perpendicular to our previous two vectors + rotate.z = rotate.x.cross(rotate.y).normalized() + + return rotate + + +# This function combines the magnetometer reading with the gravity vector to get a vector that points due north +func calc_north(p_grav, p_mag): + # Always use normalized vectors! + p_grav = p_grav.normalized() + + # Calculate east (or is it west) by getting our cross product. + # The cross product of two normalized vectors returns a vector that + # is perpendicular to our two vectors + var east = p_grav.cross(p_mag.normalized()).normalized() + + # Cross again to get our horizon aligned north + return east.cross(p_grav).normalized() + + +# This function creates an orientation matrix using the magnetometer and gravity vector as inputs. +func orientate_by_mag_and_grav(p_mag, p_grav): + var rotate = Basis() + + # as always, normalize! + p_mag = p_mag.normalized() + + # gravity points down, so - gravity points up! + rotate.y = -p_grav.normalized() + + # Cross products with our magnetic north gives an aligned east (or west, I always forget) + rotate.x = rotate.y.cross(p_mag) + + # And cross product again and we get our aligned north completing our matrix + rotate.z = rotate.x.cross(rotate.y) + + return rotate + + +# This function takes our gyro input and update an orientation matrix accordingly +# The gyro is special as this vector does not contain a direction but rather a +# rotational velocity. This is why we multiply our values with delta. +func rotate_by_gyro(p_gyro, p_basis, p_delta): + var rotate = Basis() + + rotate = rotate.rotated(p_basis.x, -p_gyro.x * p_delta) + rotate = rotate.rotated(p_basis.y, -p_gyro.y * p_delta) + rotate = rotate.rotated(p_basis.z, -p_gyro.z * p_delta) + + return rotate * p_basis + + +# This function corrects the drift in our matrix by our gravity vector +func drift_correction(p_basis, p_grav): + # as always, make sure our vector is normalized but also invert as our gravity points down + var real_up = -p_grav.normalized() + + # start by calculating the dot product, this gives us the cosine angle between our two vectors + var dot = p_basis.y.dot(real_up) + + # if our dot is 1.0 we're good + if dot < 1.0: + # the cross between our two vectors gives us a vector perpendicular to our two vectors + var axis = p_basis.y.cross(real_up).normalized() + var correction = Basis(axis, acos(dot)) + p_basis = correction * p_basis + + return p_basis diff --git a/mono/2.5d/addons/node25d-cs/main_screen/Gizmo25D.cs b/mono/2.5d/addons/node25d-cs/main_screen/Gizmo25D.cs index ddf903d5..969593d0 100644 --- a/mono/2.5d/addons/node25d-cs/main_screen/Gizmo25D.cs +++ b/mono/2.5d/addons/node25d-cs/main_screen/Gizmo25D.cs @@ -44,99 +44,99 @@ public class Gizmo25D : Node2D return; // We're most likely viewing the Gizmo25D scene. } // While getting the mouse position works in any viewport, it doesn't do - // anything significant unless the mouse is in the 2.5D viewport. - Vector2 mousePosition = GetLocalMousePosition(); - if (!_moving) + // anything significant unless the mouse is in the 2.5D viewport. + Vector2 mousePosition = GetLocalMousePosition(); + if (!_moving) { - // If the mouse is farther than this many pixels, it won't grab anything. - float closestDistance = 20.0f; - dominantAxis = -1; - for (int i = 0; i < 3; i++) + // If the mouse is farther than this many pixels, it won't grab anything. + float closestDistance = 20.0f; + dominantAxis = -1; + for (int i = 0; i < 3; i++) { // Unrelated, but needs a loop too. Color modulateLine = lines[i].Modulate; - modulateLine.a = 0.8f; + modulateLine.a = 0.8f; lines[i].Modulate = modulateLine; - var distance = DistanceToSegmentAtIndex(i, mousePosition); - if (distance < closestDistance) + var distance = DistanceToSegmentAtIndex(i, mousePosition); + if (distance < closestDistance) { - closestDistance = distance; - dominantAxis = i; + closestDistance = distance; + dominantAxis = i; } } - if (dominantAxis == -1) + if (dominantAxis == -1) { - // If we're not hovering over a line, ensure they are placed correctly. - linesRoot.GlobalPosition = node25d.GlobalPosition; - return; + // If we're not hovering over a line, ensure they are placed correctly. + linesRoot.GlobalPosition = node25d.GlobalPosition; + return; } } Color modulate = lines[dominantAxis].Modulate; - modulate.a = 1; + modulate.a = 1; lines[dominantAxis].Modulate = modulate; - if (!wantsToMove) + if (!wantsToMove) { - _moving = false; + _moving = false; } - else if (wantsToMove && !_moving) + else if (wantsToMove && !_moving) { - _moving = true; - _startPosition = mousePosition; + _moving = true; + _startPosition = mousePosition; } - if (_moving) + if (_moving) { - // Change modulate of unselected axes. + // Change modulate of unselected axes. modulate = lines[(dominantAxis + 1) % 3].Modulate; - modulate.a = 0.5f; + modulate.a = 0.5f; lines[(dominantAxis + 1) % 3].Modulate = modulate; lines[(dominantAxis + 2) % 3].Modulate = modulate; - // Calculate mouse movement and reset for next frame. - var mouseDiff = mousePosition - _startPosition; - _startPosition = mousePosition; - // Calculate movement. - var projectedDiff = mouseDiff.Project(lines[dominantAxis].Points[1]); - var movement = projectedDiff.Length() / Node25D.SCALE; - if (Mathf.IsEqualApprox(Mathf.Pi, projectedDiff.AngleTo(lines[dominantAxis].Points[1]))) + // Calculate mouse movement and reset for next frame. + var mouseDiff = mousePosition - _startPosition; + _startPosition = mousePosition; + // Calculate movement. + var projectedDiff = mouseDiff.Project(lines[dominantAxis].Points[1]); + var movement = projectedDiff.Length() / Node25D.SCALE; + if (Mathf.IsEqualApprox(Mathf.Pi, projectedDiff.AngleTo(lines[dominantAxis].Points[1]))) { - movement *= -1; + movement *= -1; } - // Apply movement. + // Apply movement. Transform t = spatialNode.Transform; - t.origin += t.basis[dominantAxis] * movement; + t.origin += t.basis[dominantAxis] * movement; spatialNode.Transform = t; } - else + else { - // Make sure the gizmo is located at the object. - GlobalPosition = node25d.GlobalPosition; - if (RoughlyRoundToPixels) + // Make sure the gizmo is located at the object. + GlobalPosition = node25d.GlobalPosition; + if (RoughlyRoundToPixels) { Transform t = spatialNode.Transform; - t.origin = (t.origin * Node25D.SCALE).Round() / Node25D.SCALE; + t.origin = (t.origin * Node25D.SCALE).Round() / Node25D.SCALE; spatialNode.Transform = t; } } - // Move the gizmo lines appropriately. - linesRoot.GlobalPosition = node25d.GlobalPosition; - node25d.PropertyListChangedNotify(); + // Move the gizmo lines appropriately. + linesRoot.GlobalPosition = node25d.GlobalPosition; + node25d.PropertyListChangedNotify(); } // Initializes after _ready due to the onready vars, called manually in Viewport25D.gd. // Sets up the points based on the basis values of the Node25D. public void Initialize() { - var basis = node25d.Basis25D; - for (int i = 0; i < 3; i++) + var basis = node25d.Basis25D; + for (int i = 0; i < 3; i++) { - lines[i].Points[1] = basis[i] * 3; + lines[i].Points[1] = basis[i] * 3; } - GlobalPosition = node25d.GlobalPosition; - spatialNode = node25d.GetChild(0); + GlobalPosition = node25d.GlobalPosition; + spatialNode = node25d.GetChild(0); } @@ -145,24 +145,24 @@ public class Gizmo25D : Node2D // (0, 0) and it provides a deadzone around the origin. private float DistanceToSegmentAtIndex(int index, Vector2 point) { - if (lines == null) + if (lines == null) { - return Mathf.Inf; + return Mathf.Inf; } - if (point.LengthSquared() < 400) + if (point.LengthSquared() < 400) { - return Mathf.Inf; + return Mathf.Inf; } - Vector2 segmentEnd = lines[index].Points[1]; - float lengthSquared = segmentEnd.LengthSquared(); - if (lengthSquared < 400) + Vector2 segmentEnd = lines[index].Points[1]; + float lengthSquared = segmentEnd.LengthSquared(); + if (lengthSquared < 400) { - return Mathf.Inf; + return Mathf.Inf; } - var t = Mathf.Clamp(point.Dot(segmentEnd) / lengthSquared, 0, 1); - var projection = t * segmentEnd; - return point.DistanceTo(projection); + var t = Mathf.Clamp(point.Dot(segmentEnd) / lengthSquared, 0, 1); + var projection = t * segmentEnd; + return point.DistanceTo(projection); } } diff --git a/mono/2.5d/addons/node25d-cs/main_screen/main_screen_25d.tscn b/mono/2.5d/addons/node25d-cs/main_screen/main_screen_25d.tscn index 4d66b471..adfe527d 100644 --- a/mono/2.5d/addons/node25d-cs/main_screen/main_screen_25d.tscn +++ b/mono/2.5d/addons/node25d-cs/main_screen/main_screen_25d.tscn @@ -14,9 +14,6 @@ anchor_right = 1.0 anchor_bottom = 1.0 size_flags_horizontal = 3 size_flags_vertical = 3 -__meta__ = { -"_edit_use_anchors_": false -} [node name="TopBar" type="HBoxContainer" parent="."] margin_right = 1600.0 @@ -168,6 +165,7 @@ texture = SubResource( 2 ) __meta__ = { "_edit_use_anchors_": false } + [connection signal="pressed" from="TopBar/Zoom/ZoomOut" to="Viewport25D" method="_on_ZoomOut_pressed"] [connection signal="pressed" from="TopBar/Zoom/ZoomPercent/ZoomReset" to="Viewport25D" method="_on_ZoomReset_pressed"] [connection signal="pressed" from="TopBar/Zoom/ZoomIn" to="Viewport25D" method="_on_ZoomIn_pressed"] diff --git a/mono/2.5d/addons/node25d-cs/main_screen/viewport_25d.gd b/mono/2.5d/addons/node25d-cs/main_screen/viewport_25d.gd index a2c96810..c09eeda3 100644 --- a/mono/2.5d/addons/node25d-cs/main_screen/viewport_25d.gd +++ b/mono/2.5d/addons/node25d-cs/main_screen/viewport_25d.gd @@ -1,6 +1,7 @@ tool extends Control + var zoom_level := 0 var is_panning = false var pan_center: Vector2 @@ -16,6 +17,7 @@ onready var view_mode_button_group: ButtonGroup = $"../TopBar/ViewModeButtons/45 onready var zoom_label: Label = $"../TopBar/Zoom/ZoomPercent" onready var gizmo_25d_scene = preload("res://addons/node25d-cs/main_screen/gizmo_25d.tscn") + func _ready(): # Give Godot a chance to fully load the scene. Should take two frames. yield(get_tree(), "idle_frame") diff --git a/mono/2.5d/addons/node25d-cs/node25d_plugin.gd b/mono/2.5d/addons/node25d-cs/node25d_plugin.gd index aa387f7d..d8dad440 100644 --- a/mono/2.5d/addons/node25d-cs/node25d_plugin.gd +++ b/mono/2.5d/addons/node25d-cs/node25d_plugin.gd @@ -1,10 +1,12 @@ tool extends EditorPlugin + const MainPanel = preload("res://addons/node25d-cs/main_screen/main_screen_25d.tscn") var main_panel_instance + func _enter_tree(): main_panel_instance = MainPanel.instance() #main_panel_instance.get_child(1).set("editorInterface", get_editor_interface()) # For C# diff --git a/mono/2.5d/assets/demo_scene.tscn b/mono/2.5d/assets/demo_scene.tscn index 66b18faa..b4cdf78b 100644 --- a/mono/2.5d/assets/demo_scene.tscn +++ b/mono/2.5d/assets/demo_scene.tscn @@ -27,6 +27,7 @@ extents = Vector3( 5, 0.5, 5 ) [node name="Overlay" parent="." instance=ExtResource( 3 )] [node name="Player25D" parent="." instance=ExtResource( 4 )] +position = Vector2( 0, -226.274 ) z_index = -3952 [node name="Shadow25D" parent="." instance=ExtResource( 5 )] diff --git a/mono/2.5d/assets/platform/platform_sprite.gd b/mono/2.5d/assets/platform/platform_sprite.gd index e459986d..50ad90e8 100644 --- a/mono/2.5d/assets/platform/platform_sprite.gd +++ b/mono/2.5d/assets/platform/platform_sprite.gd @@ -1,6 +1,7 @@ tool extends Sprite + onready var _forty_five = preload("res://assets/platform/textures/forty_five.png") onready var _isometric = preload("res://assets/platform/textures/isometric.png") onready var _top_down = preload("res://assets/platform/textures/top_down.png") @@ -8,6 +9,7 @@ onready var _front_side = preload("res://assets/platform/textures/front_side.png onready var _oblique_y = preload("res://assets/platform/textures/oblique_y.png") onready var _oblique_z = preload("res://assets/platform/textures/oblique_z.png") + func _process(_delta): if not Engine.editor_hint: if Input.is_action_pressed("forty_five_mode"): diff --git a/mono/2.5d/assets/shadow/shadow_sprite.gd b/mono/2.5d/assets/shadow/shadow_sprite.gd index c4f8300d..88cc8dd3 100644 --- a/mono/2.5d/assets/shadow/shadow_sprite.gd +++ b/mono/2.5d/assets/shadow/shadow_sprite.gd @@ -1,6 +1,7 @@ tool extends Sprite + onready var _forty_five = preload("res://assets/shadow/textures/forty_five.png") onready var _isometric = preload("res://assets/shadow/textures/isometric.png") onready var _top_down = preload("res://assets/shadow/textures/top_down.png") @@ -8,6 +9,7 @@ onready var _front_side = preload("res://assets/shadow/textures/front_side.png") onready var _oblique_y = preload("res://assets/shadow/textures/oblique_y.png") onready var _oblique_z = preload("res://assets/shadow/textures/oblique_z.png") + func _process(_delta): if not Engine.editor_hint: if Input.is_action_pressed("forty_five_mode"): diff --git a/mono/2.5d/assets/ui/control_hints.gd b/mono/2.5d/assets/ui/control_hints.gd index e234cb40..da6d7ed9 100644 --- a/mono/2.5d/assets/ui/control_hints.gd +++ b/mono/2.5d/assets/ui/control_hints.gd @@ -1,5 +1,6 @@ extends Control + func _process(_delta): if Input.is_action_just_pressed("toggle_control_hints"): visible = not visible diff --git a/mono/2.5d/project.godot b/mono/2.5d/project.godot index c709704e..c9b7c6d2 100644 --- a/mono/2.5d/project.godot +++ b/mono/2.5d/project.godot @@ -24,7 +24,7 @@ window/size/height=900 [editor_plugins] -enabled=PoolStringArray( "node25d-cs" ) +enabled=PoolStringArray( "res://addons/node25d-cs/plugin.cfg" ) [input] @@ -161,6 +161,10 @@ exit={ ] } +[mono] + +project/assembly_name="2.5D Demo with C#" + [physics] 3d/physics_engine="Bullet" diff --git a/mono/android_iap/project.godot b/mono/android_iap/project.godot index 46b44095..6669708c 100644 --- a/mono/android_iap/project.godot +++ b/mono/android_iap/project.godot @@ -31,6 +31,10 @@ window/stretch/aspect="expand" singletons=[ ] +[mono] + +project/assembly_name="Android in-app purchases with C#" + [rendering] quality/driver/driver_name="GLES2" diff --git a/mono/dodge_the_creeps/HUD.cs b/mono/dodge_the_creeps/HUD.cs index a12e8024..4b39162c 100644 --- a/mono/dodge_the_creeps/HUD.cs +++ b/mono/dodge_the_creeps/HUD.cs @@ -37,6 +37,8 @@ public class HUD : CanvasLayer { GetNode