Browse Source

Updating is_valid_placement_target() logic

pull/23/head
Ryan Reed 4 weeks ago
parent
commit
d3c013f35c
1 changed files with 11 additions and 14 deletions
  1. +11
    -14
      scenes/player/ray_cast_look.gd

+ 11
- 14
scenes/player/ray_cast_look.gd View File

@ -31,24 +31,21 @@ func _process(_delta: float) -> void:
func is_valid_placement_target(block_pos: Vector3i) -> bool: func is_valid_placement_target(block_pos: Vector3i) -> bool:
# This needs some work as it's still not quite reliable
# Sometimes can't place in the position directly in front of the player
var collision_shape_radius: float = player.collision_shape_standing.shape.radius - 0.2 # Fuzzy magic number (bad dev, bad)
var collision_shape_radius: float = player.collision_shape_standing.shape.radius
var maximums: Vector3 = Vector3(collision_shape_radius, 0, collision_shape_radius)
var position_min: Vector3i = Vector3i(player.global_position - maximums)
var position_max: Vector3i = Vector3i(player.global_position + maximums)
var collision_size_adjustments: Vector3 = Vector3(collision_shape_radius, 0, collision_shape_radius)
var player_position_min: Vector3 = player.global_position - collision_size_adjustments
var player_position_max: Vector3 = player.global_position + collision_size_adjustments
position_max.y = player.current_height
player_position_max.y += player.current_height
if (
block_pos.x >= position_min.x and block_pos.x <= position_max.x and
block_pos.y >= position_min.y and block_pos.y <= position_max.y and
block_pos.z >= position_min.z and block_pos.z <= position_max.z
):
return false
var _is_overlapping_player: bool = (
block_pos.x >= player_position_min.x and block_pos.x <= player_position_max.x and
block_pos.y >= player_position_min.y and block_pos.y <= player_position_max.y and
block_pos.z >= player_position_min.z and block_pos.z <= player_position_max.z
)
return true
return !_is_overlapping_player
func hook_block(target_block: Block) -> void: func hook_block(target_block: Block) -> void:


Loading…
Cancel
Save