diff options
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/base.gd | 10 | ||||
| -rw-r--r-- | scripts/camera.gd | 13 | ||||
| -rw-r--r-- | scripts/combinator.gd | 36 | ||||
| -rw-r--r-- | scripts/incubator.gd | 7 | ||||
| -rw-r--r-- | scripts/world.gd | 2 |
5 files changed, 55 insertions, 13 deletions
diff --git a/scripts/base.gd b/scripts/base.gd index fb3dae7..6b48222 100644 --- a/scripts/base.gd +++ b/scripts/base.gd @@ -4,8 +4,10 @@ var Game = preload("res://base.tscn") var Wrld = preload("res://world.tscn") var Incubator = preload("res://incubator.tscn") +var cam = null + func _ready(): - pass + self.cam = get_node("Camera") func _process(delta): pass @@ -13,9 +15,11 @@ func _process(delta): func _input(event): if event.type == InputEvent.MOUSE_BUTTON: if event.button_index == BUTTON_WHEEL_DOWN: - get_node("Camera").translate(Vector3(0,0,0.1)) + self.cam.translate(Vector3(0,0,0.1)) + self.cam.reselect() elif event.button_index == BUTTON_WHEEL_UP: - get_node("Camera").translate(Vector3(0,0,-0.1)) + self.cam.translate(Vector3(0,0,-0.1)) + self.cam.reselect() if event.type == InputEvent.MOUSE_MOTION and event.button_mask == BUTTON_MASK_MIDDLE: get_node("Camera").rot_around(event.relative_x/(30)) if event.type == InputEvent.KEY: diff --git a/scripts/camera.gd b/scripts/camera.gd index e29ad51..814a549 100644 --- a/scripts/camera.gd +++ b/scripts/camera.gd @@ -1,18 +1,21 @@ -extends Camera +extends InterpolatedCamera var selected = null func _ready(): - pass + set_target(get_parent().get_node("overview")) + self.selected = get_parent().get_node("center") -func select(what): +func select(what, new_target): + set_target(new_target) if self.selected != what: - set_translation(what.translation + Vector3(1,3,0)) - look_at(what.translation, Vector3(0,1,0)) + set_interpolation_enabled(true) + #set_translation(what.translation + Vector3(1,3,0)) self.selected = what func reselect(): if self.selected != null: + set_interpolation_enabled(false) look_at(self.selected.translation, Vector3(0,1,0)) func rot_around(amount): diff --git a/scripts/combinator.gd b/scripts/combinator.gd new file mode 100644 index 0000000..dc68b84 --- /dev/null +++ b/scripts/combinator.gd @@ -0,0 +1,36 @@ +extends Spatial + +var prev_pos = null + +func _ready(): + get_node("Area/Quad").get_material_override().set_texture(SpatialMaterial.DIFFUSE_LAMBERT, get_node("Viewport").get_texture()) + set_process_input(true) + +func _on_Area_input_event( camera, event, click_pos, click_normal, shape_idx ): + var pos = get_node("Area").get_global_transform().affine_inverse()*click_pos + # Convert to 2D + if pos.y <= 0.9 or pos.y >= 1.1: + return + pos.x = (pos.x + 1)*200 + pos.z = (-pos.z + 1)*200 + var pos2 = Vector2(pos.z, pos.x) + event.pos = pos2 + event.global_pos = pos2 + if self.prev_pos == null: + self.prev_pos = pos2 + if event.type == InputEvent.MOUSE_MOTION: + event.relative_pos = pos2 - self.prev_pos + self.prev_pos = pos2 + get_node("Viewport").input(event) + +func _on_body_input_event( camera, event, click_pos, click_normal, shape_idx ): + if event.type == InputEvent.MOUSE_BUTTON and event.button_index == BUTTON_LEFT: + print("body") + var cam = get_tree().get_root().get_camera() + cam.select(self, get_node("point")) + +func _on_panel_input_event( camera, event, click_pos, click_normal, shape_idx ): + if event.type == InputEvent.MOUSE_BUTTON and event.button_index == BUTTON_LEFT: + print("panel") + var cam = get_tree().get_root().get_camera() + cam.select(self, get_node("point"))
\ No newline at end of file diff --git a/scripts/incubator.gd b/scripts/incubator.gd index 11f8d5b..993f76a 100644 --- a/scripts/incubator.gd +++ b/scripts/incubator.gd @@ -15,12 +15,9 @@ func set_world(x, y, world): world.set_translation(pos.global_transform.origin) func push_world(world): - print("pushing") for x in range(4): for y in range(2): - print("h") if self.worlds[x][y] == null: - print("set") set_world(x, y, world) return @@ -31,8 +28,10 @@ func _on_body_input_event( camera, event, click_pos, click_normal, shape_idx ): if event.type == InputEvent.MOUSE_BUTTON and event.button_index == BUTTON_LEFT: print("body") var cam = get_tree().get_root().get_camera() - cam.select(self) + cam.select(self, get_node("point")) func _on_panel_input_event( camera, event, click_pos, click_normal, shape_idx ): if event.type == InputEvent.MOUSE_BUTTON and event.button_index == BUTTON_LEFT: print("panel") + var cam = get_tree().get_root().get_camera() + cam.select(self, get_node("point")) diff --git a/scripts/world.gd b/scripts/world.gd index 572a658..89df926 100644 --- a/scripts/world.gd +++ b/scripts/world.gd @@ -42,4 +42,4 @@ func _make_ball(size, center): func _on_click(): var cam = get_tree().get_root().get_camera() - cam.select(self)
\ No newline at end of file + cam.select(self, get_node("point"))
\ No newline at end of file |
