Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends Camera
- var ray_length = 100.0
- var gridmap
- var block_id = 0
- func _ready():
- gridmap = get_node("/root/Spatial/GridMap")
- func _physics_process(delta):
- if Input.is_action_just_pressed("choose_grass"):
- block_id = 0
- if Input.is_action_just_pressed("choose_wood"):
- block_id = 1
- if Input.is_action_just_pressed("choose_leaf"):
- block_id = 2
- if Input.is_action_just_pressed("delete"):
- var from = self.project_ray_origin(Vector2(
- self.get_viewport().size.x / 2,
- self.get_viewport().size.y / 2
- ))
- var direction = self.project_ray_normal(Vector2(
- self.get_viewport().size.x / 2,
- self.get_viewport().size.y / 2
- ))
- # Cast a Ray
- var space_state = get_world().direct_space_state
- var result = space_state.intersect_ray(from, from + direction * ray_length)
- if result.collider:
- var vec = result.collider.world_to_map(result.position)
- var camera_direction = -self.global_transform.basis.z
- print(camera_direction)
- gridmap.set_cell_item(vec.x + round(camera_direction.x),
- vec.y + round(camera_direction.y),
- vec.z + round(camera_direction.z), -1)
- if Input.is_action_just_pressed("create"):
- var from = self.project_ray_origin(Vector2(
- self.get_viewport().size.x / 2,
- self.get_viewport().size.y / 2
- ))
- var direction = self.project_ray_normal(Vector2(
- self.get_viewport().size.x / 2,
- self.get_viewport().size.y / 2
- ))
- var space_state = get_world().direct_space_state
- var result = space_state.intersect_ray(from, from + direction * ray_length)
- if result.collider:
- var vec = result.collider.world_to_map(result.position)
- print("Hit object: ", result.collider, vec)
- gridmap.set_cell_item(vec.x, vec.y, vec.z, block_id)
Add Comment
Please, Sign In to add comment