diff options
| author | J08nY | 2017-04-23 16:31:27 +0200 |
|---|---|---|
| committer | J08nY | 2017-04-23 16:31:27 +0200 |
| commit | cfe4ce0fb4705a6c231528d60e4833c4dc2ec68f (patch) | |
| tree | 57111775c93b70ce1c8297efdb1f21161a055bec /scripts/world.gd | |
| parent | 04a7806aafe210aeefcd80f74d78c8d4420c54e2 (diff) | |
| download | ld38-cfe4ce0fb4705a6c231528d60e4833c4dc2ec68f.tar.gz ld38-cfe4ce0fb4705a6c231528d60e4833c4dc2ec68f.tar.zst ld38-cfe4ce0fb4705a6c231528d60e4833c4dc2ec68f.zip | |
Diffstat (limited to 'scripts/world.gd')
| -rw-r--r-- | scripts/world.gd | 55 |
1 files changed, 38 insertions, 17 deletions
diff --git a/scripts/world.gd b/scripts/world.gd index 9117678..c871e81 100644 --- a/scripts/world.gd +++ b/scripts/world.gd @@ -2,11 +2,10 @@ extends Spatial const SIZE = 15 -var Cube = preload("res://cube.tscn") +var Cube = preload("res://mesh/cube.obj") var House = preload("res://house.tscn") var Pine = preload("res://tree_pine.tscn") var Oak = preload("res://tree_oak.tscn") -var cubes = Array() func _enter_tree(): var pn = Pine.instance() @@ -22,26 +21,48 @@ func _enter_tree(): _make_ball(SIZE, Vector3(0,0,0)) func _make_ball(size, center): - var blocks = Array() + var blocks = [] + var count = 0 for x in range(-size, size): - var line_x = Array() + var line_x = [] blocks.append(line_x) for y in range(0, -size, -1): - var line_y = Array() + var line_y = [] line_x.append(line_y) for z in range(-size, size): var relative = Vector3(x, y, z) - if floor(relative.length()) <= size/2: - var cube = Cube.instance() - cube.translate(relative + center) - cube.set_scale(Vector3(0.5, 0.5, 0.5)) - add_child(cube) - line_y.append(cube) + var len = relative.length() + if floor(len) <= size/2 and (ceil(len) > size/2 or y == 0): + line_y.append(relative*2 + center) + count += 1 else: line_y.append(null) - -func _on_click(): - print("click") - var cam = get_tree().get_root().get_camera() - cam.select(self, get_node("point")) - cam.reselect()
\ No newline at end of file + var multi = MultiMesh.new() + multi.set_transform_format(MultiMesh.TRANSFORM_3D) + multi.set_mesh(Cube) + multi.set_instance_count(count) + var i = 0 + for x in range(blocks.size()): + var line_x = blocks[x] + if line_x == null: + continue + for y in range(line_x.size()): + var line_y = line_x[y] + if line_y == null: + continue + for z in range(line_y.size()): + var pos = line_y[z] + if pos != null: + var trans = Transform() + trans = trans.translated(pos) + multi.set_instance_transform(i, trans) + i += 1 + var instance = MultiMeshInstance.new() + instance.set_multimesh(multi) + add_child(instance) + +func _on_Area_input_event( camera, event, click_pos, click_normal, shape_idx ): + if event.type == InputEvent.MOUSE_BUTTON and event.button_index == BUTTON_LEFT and event.is_pressed(): + var cam = get_tree().get_root().get_camera() + cam.select(self, get_node("point")) + cam.reselect() |
