mirror of
https://github.com/godotengine/godot-demo-projects.git
synced 2025-12-16 13:30:07 +01:00
Improve style in many demos (#1263)
This commit is contained in:
@@ -3,7 +3,7 @@ extends Control
|
||||
## The 3D viewport's shrink factor. For instance, 1 is full resolution,
|
||||
## 2 is half resolution and 4 is quarter resolution. Lower values look
|
||||
## sharper but are slower to render.
|
||||
var scale_factor := 1
|
||||
var scale_factor: int = 1
|
||||
|
||||
var filter_mode := Viewport.SCALING_3D_MODE_BILINEAR
|
||||
|
||||
@@ -16,13 +16,13 @@ func _ready() -> void:
|
||||
viewport.scaling_3d_mode = filter_mode
|
||||
|
||||
|
||||
func _unhandled_input(event: InputEvent) -> void:
|
||||
if event.is_action_pressed(&"cycle_viewport_resolution"):
|
||||
func _unhandled_input(input_event: InputEvent) -> void:
|
||||
if input_event.is_action_pressed(&"cycle_viewport_resolution"):
|
||||
scale_factor = wrapi(scale_factor + 1, 1, 5)
|
||||
viewport.scaling_3d_scale = 1.0 / scale_factor
|
||||
scale_label.text = "Scale: %3.0f%%" % (100.0 / scale_factor)
|
||||
|
||||
if event.is_action_pressed(&"toggle_filtering"):
|
||||
if input_event.is_action_pressed(&"toggle_filtering"):
|
||||
filter_mode = wrapi(filter_mode + 1, Viewport.SCALING_3D_MODE_BILINEAR, Viewport.SCALING_3D_MODE_MAX) as Viewport.Scaling3DMode
|
||||
viewport.scaling_3d_mode = filter_mode
|
||||
filter_label.text = (
|
||||
|
||||
@@ -21,7 +21,7 @@ extends Node3D
|
||||
@export var max_separation := 20.0
|
||||
@export var split_line_thickness := 3.0
|
||||
@export var split_line_color := Color.BLACK
|
||||
@export var adaptive_split_line_thickness := true
|
||||
@export var adaptive_split_line_thickness: bool = true
|
||||
|
||||
@onready var player1: CharacterBody3D = $"../Player1"
|
||||
@onready var player2: CharacterBody3D = $"../Player2"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
extends Node3D
|
||||
|
||||
|
||||
## Used for checking if the mouse is inside the Area3D.
|
||||
var is_mouse_inside := false
|
||||
var is_mouse_inside: bool = false
|
||||
|
||||
## The last processed input touch/mouse event. Used to calculate relative movement.
|
||||
var last_event_pos2D := Vector2()
|
||||
@@ -13,6 +14,7 @@ var last_event_time := -1.0
|
||||
@onready var node_quad: MeshInstance3D = $Quad
|
||||
@onready var node_area: Area3D = $Quad/Area3D
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
node_area.mouse_entered.connect(_mouse_entered_area)
|
||||
node_area.mouse_exited.connect(_mouse_exited_area)
|
||||
@@ -40,17 +42,17 @@ func _mouse_exited_area() -> void:
|
||||
is_mouse_inside = false
|
||||
|
||||
|
||||
func _unhandled_input(event: InputEvent) -> void:
|
||||
func _unhandled_input(input_event: InputEvent) -> void:
|
||||
# Check if the event is a non-mouse/non-touch event
|
||||
for mouse_event in [InputEventMouseButton, InputEventMouseMotion, InputEventScreenDrag, InputEventScreenTouch]:
|
||||
if is_instance_of(event, mouse_event):
|
||||
if is_instance_of(input_event, mouse_event):
|
||||
# If the event is a mouse/touch event, then we can ignore it here, because it will be
|
||||
# handled via Physics Picking.
|
||||
return
|
||||
node_viewport.push_input(event)
|
||||
node_viewport.push_input(input_event)
|
||||
|
||||
|
||||
func _mouse_input_event(_camera: Camera3D, event: InputEvent, event_position: Vector3, _normal: Vector3, _shape_idx: int) -> void:
|
||||
func _mouse_input_event(_camera: Camera3D, input_event: InputEvent, event_position: Vector3, _normal: Vector3, _shape_idx: int) -> void:
|
||||
# Get mesh size to detect edges and make conversions. This code only supports PlaneMesh and QuadMesh.
|
||||
var quad_mesh_size: Vector2 = node_quad.mesh.size
|
||||
|
||||
@@ -90,20 +92,20 @@ func _mouse_input_event(_camera: Camera3D, event: InputEvent, event_position: Ve
|
||||
event_pos2D = last_event_pos2D
|
||||
|
||||
# Set the event's position and global position.
|
||||
event.position = event_pos2D
|
||||
if event is InputEventMouse:
|
||||
event.global_position = event_pos2D
|
||||
input_event.position = event_pos2D
|
||||
if input_event is InputEventMouse:
|
||||
input_event.global_position = event_pos2D
|
||||
|
||||
# Calculate the relative event distance.
|
||||
if event is InputEventMouseMotion or event is InputEventScreenDrag:
|
||||
if input_event is InputEventMouseMotion or input_event is InputEventScreenDrag:
|
||||
# If there is not a stored previous position, then we'll assume there is no relative motion.
|
||||
if last_event_pos2D == null:
|
||||
event.relative = Vector2(0, 0)
|
||||
input_event.relative = Vector2(0, 0)
|
||||
# If there is a stored previous position, then we'll calculate the relative position by subtracting
|
||||
# the previous position from the new position. This will give us the distance the event traveled from prev_pos.
|
||||
else:
|
||||
event.relative = event_pos2D - last_event_pos2D
|
||||
event.velocity = event.relative / (now - last_event_time)
|
||||
input_event.relative = event_pos2D - last_event_pos2D
|
||||
input_event.velocity = input_event.relative / (now - last_event_time)
|
||||
|
||||
# Update last_event_pos2D with the position we just calculated.
|
||||
last_event_pos2D = event_pos2D
|
||||
@@ -112,7 +114,7 @@ func _mouse_input_event(_camera: Camera3D, event: InputEvent, event_position: Ve
|
||||
last_event_time = now
|
||||
|
||||
# Finally, send the processed input event to the viewport.
|
||||
node_viewport.push_input(event)
|
||||
node_viewport.push_input(input_event)
|
||||
|
||||
|
||||
func rotate_area_to_billboard() -> void:
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
## Player implementation.
|
||||
class_name Player
|
||||
extends CharacterBody2D
|
||||
## Player implementation.
|
||||
|
||||
|
||||
const factor: float = 200.0 # Factor to multiply the movement.
|
||||
|
||||
@@ -8,17 +9,17 @@ var _movement: Vector2 = Vector2(0, 0) # Current movement rate of node.
|
||||
|
||||
|
||||
# Update movement variable based on input that reaches this SubViewport.
|
||||
func _unhandled_input(event: InputEvent) -> void:
|
||||
if event.is_action_pressed(&"ux_up") or event.is_action_released(&"ux_down"):
|
||||
func _unhandled_input(input_event: InputEvent) -> void:
|
||||
if input_event.is_action_pressed(&"ux_up") or input_event.is_action_released(&"ux_down"):
|
||||
_movement.y -= 1
|
||||
get_viewport().set_input_as_handled()
|
||||
elif event.is_action_pressed(&"ux_down") or event.is_action_released(&"ux_up"):
|
||||
elif input_event.is_action_pressed(&"ux_down") or input_event.is_action_released(&"ux_up"):
|
||||
_movement.y += 1
|
||||
get_viewport().set_input_as_handled()
|
||||
elif event.is_action_pressed(&"ux_left") or event.is_action_released(&"ux_right"):
|
||||
elif input_event.is_action_pressed(&"ux_left") or input_event.is_action_released(&"ux_right"):
|
||||
_movement.x -= 1
|
||||
get_viewport().set_input_as_handled()
|
||||
elif event.is_action_pressed(&"ux_right") or event.is_action_released(&"ux_left"):
|
||||
elif input_event.is_action_pressed(&"ux_right") or input_event.is_action_released(&"ux_left"):
|
||||
_movement.x += 1
|
||||
get_viewport().set_input_as_handled()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user