summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/base.gd10
-rw-r--r--scripts/camera.gd13
-rw-r--r--scripts/combinator.gd36
-rw-r--r--scripts/incubator.gd7
-rw-r--r--scripts/world.gd2
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