diff --git a/Main.gd b/Main.gd index 7506c7a..8eab8ab 100644 --- a/Main.gd +++ b/Main.gd @@ -8,11 +8,12 @@ func _ready(): # enabled it in project settings! interface = XRServer.find_interface("OpenXR") if interface and interface.is_initialized(): + print("OpenXR initialised successfully") + var vp : Viewport = get_viewport() vp.use_xr = true - - - + else: + print("OpenXR not initialised, please check if your headset is connected") -func _on_right_hand_button_pressed(name): - print("Pressed " + str(name)) +func _on_right_hand_button_pressed(p_name): + print("Pressed " + str(p_name)) diff --git a/Main.tscn b/Main.tscn index df2dcf8..bec743c 100644 --- a/Main.tscn +++ b/Main.tscn @@ -14,7 +14,7 @@ [ext_resource type="Texture2D" uid="uid://bi56aarct11p6" path="res://assets/ambientCG.com/Grass004/Grass004_1K_Roughness.jpg" id="12_mutam"] [ext_resource type="PackedScene" uid="uid://c7mq5w60bchs0" path="res://scenes/MonkeyBars.tscn" id="13_y2500"] [ext_resource type="PackedScene" uid="uid://cws1pq5a3toqm" path="res://scenes/BasketballCourt.tscn" id="14_oj3na"] -[ext_resource type="PackedScene" uid="uid://jg8vl8fo1ndw" path="res://assets/OpenGameArt.org/rubberduck_plant_pack/plant-pack-1.glb" id="15_54hft"] +[ext_resource type="PackedScene" uid="uid://dxc6qwbxhsnwu" path="res://assets/OpenGameArt.org/rubberduck_plant_pack/plant-pack-1.glb" id="15_54hft"] [ext_resource type="Material" uid="uid://dinbn0e5nxxv2" path="res://assets/OpenGameArt.org/rubberduck_plant_pack/flower_01.tres" id="16_k0xyq"] [ext_resource type="Material" uid="uid://2y2kglyj5xye" path="res://assets/OpenGameArt.org/rubberduck_plant_pack/plant_01.tres" id="17_jimiv"] [ext_resource type="Material" uid="uid://bjon62ek345r1" path="res://assets/OpenGameArt.org/rubberduck_plant_pack/grasses_01.tres" id="18_imo6w"] @@ -267,7 +267,6 @@ pose = &"aim" [node name="RightHand" parent="XROrigin3D/RightHand" instance=ExtResource( "4_mos32" )] [node name="Function_Direct_movement" parent="XROrigin3D/RightHand" instance=ExtResource( "2_g0m70" )] -canFly = false [node name="Function_Pickup" parent="XROrigin3D/RightHand" instance=ExtResource( "5_5tsqm" )] impulse_factor = 1.5 @@ -283,8 +282,9 @@ right_pickup = NodePath("../RightHand/Function_Pickup") environment = SubResource( "Environment_v7gtd" ) [node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] -transform = Transform3D(0.821547, 0.247955, -0.513399, 0.189303, 0.730762, 0.655859, 0.537796, -0.636008, 0.553417, 0, 4.81216, 0) +transform = Transform3D(0.734349, -0.548768, 0.399481, 0.189303, 0.730762, 0.65586, -0.65184, -0.406007, 0.640518, 0, 4.81216, 1.27972) light_energy = 2.0 +shadow_enabled = true [node name="Floor" type="StaticBody3D" parent="."] diff --git a/addons/godot-xr-tools/VERSIONS.md b/addons/godot-xr-tools/VERSIONS.md index 0931775..aeefd26 100644 --- a/addons/godot-xr-tools/VERSIONS.md +++ b/addons/godot-xr-tools/VERSIONS.md @@ -1,8 +1,12 @@ -# 3.0 +# 4.0 - Port to Godot 4 # 2.4.0 -- +- Added configuration setting for head height in player body. +- Added Function_JumpDetect_movement to detect jumping via the players body and/or arms +- Improved responsiveness of snap-turning +- Moved flight logic from Function_Direct_movement to Function_Flight_movement +- Added option to disable player sliding on slopes # 2.3.0 - Added vignette diff --git a/addons/godot-xr-tools/assets/HandBlendTree.tres b/addons/godot-xr-tools/assets/HandBlendTree.tres index efa9f22..9dc9d62 100644 --- a/addons/godot-xr-tools/assets/HandBlendTree.tres +++ b/addons/godot-xr-tools/assets/HandBlendTree.tres @@ -30,4 +30,4 @@ nodes/Grip/position = Vector2(780, 180) nodes/Trigger/node = SubResource( "2" ) nodes/Trigger/position = Vector2(560, 80) nodes/output/position = Vector2(1020, 80) -node_connections = [&"Grip", 0, &"Trigger", &"Grip", 1, &"Fist2", &"Trigger", 0, &"Default", &"Trigger", 1, &"Fist", &"output", 0, &"Grip"] +node_connections = [&"Trigger", 0, &"Default", &"Trigger", 1, &"Fist", &"Grip", 0, &"Trigger", &"Grip", 1, &"Fist2", &"output", 0, &"Grip"] diff --git a/addons/godot-xr-tools/assets/PlayerBody.gd b/addons/godot-xr-tools/assets/PlayerBody.gd index 3ed247f..3bff65b 100644 --- a/addons/godot-xr-tools/assets/PlayerBody.gd +++ b/addons/godot-xr-tools/assets/PlayerBody.gd @@ -20,21 +20,28 @@ extends Node ## track any movement to the PlayerBody. ## + +## Signal emitted when the player jumps +signal player_jumped() + + +# Horizontal vector (multiply by this to get only the horizontal components +const HORIZONTAL := Vector3(1.0, 0.0, 1.0) + + ## PlayerBody enabled flag @export var enabled = true: set(new_value): enabled = new_value - - # Update collision_shape - if _collision_node: - _collision_node.disabled = !enabled - - # Update physics processing - if enabled: - set_physics_process(true) + if is_inside_tree(): + _update_enabled() ## Player radius -@export var player_radius : float = 0.4 +@export var player_radius : float = 0.4: + set(new_value): + player_radius = new_value + if is_inside_tree(): + _update_player_radius() ## Player camera to head top @export var player_cam_to_head_top : float = 0.1 @@ -55,23 +62,20 @@ extends Node physics = new_value default_physics = _guaranteed_physics() -## Path to the XROrigin3D node -@export_node_path(XROrigin3D) var origin - -## Path to the XRCamera3D node -@export_node_path(XRCamera3D) var camera - -## XROrigin3D node -var origin_node: XROrigin3D - -## XRCamera3D node -var camera_node: XRCamera3D +# Set our collision layer +@export_flags_3d_physics var collision_layer : int = 1 << 19: + set(new_value): + collision_layer = new_value + if is_inside_tree(): + _update_collision_layer() -## Player CharacterBody3D node -@onready var kinematic_node: CharacterBody3D = $CharacterBody3D +# Set our collision mask +@export_flags_3d_physics var collision_mask : int = 1023: + set(new_value): + collision_mask = new_value + if is_inside_tree(): + _update_collision_mask() -# Default physics (if not specified by the user or the current ground) -@onready var default_physics = _guaranteed_physics() ## Player Velocity - modifiable by MovementProvider nodes var velocity := Vector3.ZERO @@ -97,58 +101,62 @@ var ground_control_velocity := Vector2.ZERO # Movement providers var _movement_providers := Array() +# Jump cool-down counter +var _jump_cooldown := 0 + + +## XROrigin3D node +@onready var origin_node: XROrigin3D = XRHelpers.get_xr_origin(self) + +## XRCamera3D node +@onready var camera_node: XRCamera3D = XRHelpers.get_xr_camera(self) + +## Player CharacterBody3D node +@onready var kinematic_node: CharacterBody3D = $CharacterBody3D + +# Default physics (if not specified by the user or the current ground) +@onready var default_physics = _guaranteed_physics() + # Collision node @onready var _collision_node: CollisionShape3D = $CharacterBody3D/CollisionShape3D -# Horizontal vector (multiply by this to get only the horizontal components -const horizontal := Vector3(1.0, 0.0, 1.0) # Function to sort movement providers by order func sort_by_order(a, b) -> bool: return true if a.order < b.order else false -# Get our origin node, make sure we have consistent code here -func _get_origin_node() -> XROrigin3D: - var node : XROrigin3D = get_node_or_null(origin) if origin else get_parent() - return node - -# Get our camera node -func _get_camera_node() -> XRCamera3D: - # if we have set a node, try and use it - var node : XRCamera3D - - if camera: - node = get_node_or_null(camera) - if node: - return node - - var o : XROrigin3D = _get_origin_node() - if !o: - return null - - # else get by default name - node = o.get_node_or_null("XRCamera3D") - if node: - return node - - # else find the first camera child - for child in o.get_children(): - if child is XRCamera3D: - return child - - # no luck - return null - # Called when the node enters the scene tree for the first time. func _ready(): - # Get the origin and camera nodes - origin_node = _get_origin_node() - camera_node = _get_camera_node() - # Get the movement providers ordered by increasing order _movement_providers = get_tree().get_nodes_in_group("movement_providers") _movement_providers.sort_custom(sort_by_order) + # Propagate defaults + _update_enabled() + _update_player_radius() + _update_collision_layer() + _update_collision_mask() + +func _update_enabled() -> void: + # Update collision_shape + if _collision_node: + _collision_node.disabled = !enabled + + # Update physics processing + if enabled: + set_physics_process(true) + +func _update_player_radius() -> void: + if _collision_node and _collision_node.shape: + _collision_node.shape.radius = player_radius + +func _update_collision_layer() -> void: + if kinematic_node: + kinematic_node.collision_layer = collision_layer + +func _update_collision_mask() -> void: + if kinematic_node: + kinematic_node.collision_mask = collision_mask func _physics_process(delta): # Do not run physics if in the editor @@ -160,6 +168,10 @@ func _physics_process(delta): set_physics_process(false) return + # Decrement the jump cool-down on each physics update + if _jump_cooldown: + _jump_cooldown -= 1 + # Update the kinematic body to be under the camera _update_body_under_camera() @@ -175,10 +187,11 @@ func _physics_process(delta): # - Read and modify the player velocity # - Read and modify the ground-control velocity # - Perform exclusive updating of the player (bypassing other movement providers) + # - Request a jump ground_control_velocity = Vector2.ZERO var exclusive := false for p in _movement_providers: - if p.enabled: + if p.enabled or p.is_active: if p.physics_movement(delta, self): exclusive = true break @@ -186,13 +199,46 @@ func _physics_process(delta): # If no controller has performed an exclusive-update then apply gravity and # perform any ground-control if !exclusive: - velocity.y += gravity * delta + if on_ground and ground_physics.stop_on_slope and ground_angle < ground_physics.move_max_slope: + # Apply gravity towards slope to prevent sliding + velocity += ground_vector * gravity * delta + else: + # Apply gravity down + velocity += Vector3.UP * gravity * delta _apply_velocity_and_control(delta) # Apply the player-body movement to the XR origin var movement := kinematic_node.global_transform.origin - position_before_movement origin_node.global_transform.origin += movement +# Request a jump +func request_jump(skip_jump_velocity := false): + # Skip if cooling down from a previous jump + if _jump_cooldown: + return; + + # Skip if not on ground + if !on_ground: + return + + # Skip if jump disabled on this ground + var jump_velocity := GroundPhysicsSettings.get_jump_velocity(ground_physics, default_physics) + if jump_velocity == 0.0: + return + + # Skip if the ground is too steep to jump + var max_slope := GroundPhysicsSettings.get_jump_max_slope(ground_physics, default_physics) + if ground_angle > max_slope: + return + + # Perform the jump + if !skip_jump_velocity: + velocity += ground_vector * jump_velocity * XRServer.world_scale + + # Report the jump + emit_signal("player_jumped") + _jump_cooldown = 4 + # Perform a move_and_slide on the kinematic node func move_and_slide(p_velocity: Vector3) -> Vector3: kinematic_node.velocity = p_velocity @@ -223,7 +269,7 @@ func _update_body_under_camera(): curr_transform.origin.y = origin_node.global_transform.origin.y # The camera/eyes are towards the front of the body, so move the body back slightly - var forward_dir := -camera_transform.basis.z * horizontal + var forward_dir := -camera_transform.basis.z * HORIZONTAL if forward_dir.length() > 0.01: curr_transform.origin -= forward_dir.normalized() * eye_forward_offset * player_radius @@ -245,7 +291,7 @@ func _update_ground_information(): ground_vector = ground_collision.get_normal() ground_angle = rad2deg(ground_collision.get_angle()) ground_node = ground_collision.get_collider() - + # Select the ground physics var physics_node := ground_node.get_node_or_null("GroundPhysics") as GroundPhysics if physics_node: @@ -261,7 +307,7 @@ func _update_ground_information(): # This method applies the player velocity and ground-control velocity to the physical body func _apply_velocity_and_control(delta: float): # Split the velocity into horizontal and vertical components - var horizontal_velocity := velocity * horizontal + var horizontal_velocity := velocity * HORIZONTAL var vertical_velocity := velocity * Vector3.UP # If the player is on the ground then give them control @@ -270,8 +316,8 @@ func _apply_velocity_and_control(delta: float): var control_velocity := Vector3.ZERO if abs(ground_control_velocity.x) > 0.1 or abs(ground_control_velocity.y) > 0.1: var camera_transform := camera_node.global_transform - var dir_forward := (camera_transform.basis.z * horizontal).normalized() - var dir_right := (camera_transform.basis.x * horizontal).normalized() + var dir_forward := (camera_transform.basis.z * HORIZONTAL).normalized() + var dir_right := (camera_transform.basis.x * HORIZONTAL).normalized() control_velocity = (dir_forward * -ground_control_velocity.y + dir_right * ground_control_velocity.x) * XRServer.world_scale # Apply control velocity to horizontal velocity based on traction @@ -280,10 +326,10 @@ func _apply_velocity_and_control(delta: float): horizontal_velocity = horizontal_velocity.lerp(control_velocity, traction_factor) # Prevent the player from moving up steep slopes - var current_max_slope := GroundPhysicsSettings.get_move_max_slope(ground_physics, default_physics) + var current_max_slope := GroundPhysicsSettings.get_move_max_slope(ground_physics, default_physics) if ground_angle > current_max_slope: # Get a vector in the down-hill direction - var down_direction := (ground_vector * horizontal).normalized() + var down_direction := (ground_vector * HORIZONTAL).normalized() var vdot = down_direction.dot(horizontal_velocity) if vdot < 0: horizontal_velocity -= down_direction * vdot @@ -317,13 +363,13 @@ func _guaranteed_physics(): # - Maximum slope is valid func _get_configuration_warning(): # Check the origin node - var test_origin_node = _get_origin_node() - if !test_origin_node or !test_origin_node is XROrigin3D: + var test_origin_node = XRHelpers.get_xr_origin(self) + if !test_origin_node: return "Unable to find XR Origin node" # Check the camera node - var test_camera_node = _get_camera_node() - if !test_camera_node or !test_camera_node is XRCamera3D: + var test_camera_node = XRHelpers.get_xr_camera(self) + if !test_camera_node: return "Unable to find XR Camera node" # Verify the player radius is valid @@ -341,3 +387,32 @@ func _get_configuration_warning(): # Passed basic validation return "" + +## Find the Player Body from a player node and an optional path +static func get_player_body(node: Node, path: NodePath = NodePath()) -> PlayerBody: + var player_body: PlayerBody + + # Try using the node path first + if path: + player_body = node.get_node(path) as PlayerBody + if player_body: + return player_body + + # Get the origin + var xr_origin := XRHelpers.get_xr_origin(node) + if !xr_origin: + return null + + # Attempt to get by the default name + player_body = xr_origin.get_node_or_null("PlayerBody") as PlayerBody + if player_body: + return player_body + + # Search all children of the origin for the player body + for child in xr_origin.get_children(): + player_body = child as PlayerBody + if player_body: + return player_body + + # Could not find player body + return null diff --git a/addons/godot-xr-tools/functions/Function_Climb_movement.gd b/addons/godot-xr-tools/functions/Function_Climb_movement.gd index 86d505b..484721a 100644 --- a/addons/godot-xr-tools/functions/Function_Climb_movement.gd +++ b/addons/godot-xr-tools/functions/Function_Climb_movement.gd @@ -2,6 +2,7 @@ class_name Function_ClimbMovement extends MovementProvider + ## ## Movement Provider for Climbing ## @@ -19,12 +20,18 @@ extends MovementProvider ## desired. ## + ## Signal invoked when the player starts climing signal player_climb_start ## Signal invoked when the player ends climbing signal player_climb_end + +# Horizontal vector (multiply by this to get only the horizontal components +const HORIZONTAL := Vector3(1.0, 0.0, 1.0) + + ## Movement provider order @export var order : int = 15 @@ -38,70 +45,60 @@ signal player_climb_end @export var velocity_averages : int = 5 ## Pickup function for the left hand -@export var left_pickup : NodePath +@export_node_path(Area3D, Function_Pickup) var left_pickup ## Pickup function for the right hand -@export var right_pickup : NodePath - -# Is the player climbing -var is_climbing : bool = false +@export_node_path(Area3D, Function_Pickup) var right_pickup -# Node references -var _left_pickup_node : Function_Pickup = null -var _right_pickup_node : Function_Pickup = null # Velocity averaging fields var _distances = Array() var _deltas = Array() -# Horizontal vector (multiply by this to get only the horizontal components -const horizontal := Vector3(1.0, 0.0, 1.0) -# Called when the node enters the scene tree for the first time. -func _ready(): - _left_pickup_node = get_node(left_pickup) - _right_pickup_node = get_node(right_pickup) +# Node references +@onready var _left_pickup_node : Function_Pickup = get_node(left_pickup) +@onready var _right_pickup_node : Function_Pickup = get_node(right_pickup) + +func _ready(): # In Godot 4 we must now manually call our super class ready function - super() + super._ready() + func physics_movement(delta: float, player_body: PlayerBody): + # Skip if disabled + if !enabled: + _set_climbing(false, player_body) + return + # Get the left-hand climbable - var left_climbable = _left_pickup_node.picked_up_object - if !is_instance_valid(left_climbable) or !left_climbable is Object_climbable: + var left_climbable := _left_pickup_node.picked_up_object as Object_climbable + if !is_instance_valid(left_climbable): left_climbable = null # Get the right-hand climbable - var right_climbable : Node = _right_pickup_node.picked_up_object - if !is_instance_valid(right_climbable) or !right_climbable is Object_climbable: + var right_climbable := _right_pickup_node.picked_up_object as Object_climbable + if !is_instance_valid(right_climbable): right_climbable = null - # Detect if we are climbing now - var old_is_climbing := is_climbing - is_climbing = left_climbable or right_climbable - - # Skip if no current or previous climbing - if !is_climbing and !old_is_climbing: - return + # Update climbing + _set_climbing(left_climbable or right_climbable, player_body) - # Detect change of climbing state - if !old_is_climbing: - _distances.clear() - _deltas.clear() - emit_signal("player_climb_start") - elif !is_climbing: - var velocity := _average_velocity() - var dir_forward = -(player_body.camera_node.global_transform.basis.z * horizontal).normalized() - player_body.velocity = (velocity * fling_multiplier) + (dir_forward * forward_push) - emit_signal("player_climb_end") + # Skip if not actively climbing + if !is_active: return # Calculate how much the player has moved var offset := Vector3.ZERO if left_climbable: - offset += _left_pickup_node.global_transform.origin - left_climbable.get_grab_location(_left_pickup_node) + var left_pickup_pos := _left_pickup_node.global_transform.origin + var left_grab_pos := left_climbable.get_grab_location(_left_pickup_node) + offset += left_pickup_pos - left_grab_pos if right_climbable: - offset += _right_pickup_node.global_transform.origin - right_climbable.get_grab_location(_right_pickup_node) + var right_pickup_pos := _right_pickup_node.global_transform.origin + var right_grab_pos := right_climbable.get_grab_location(_right_pickup_node) + offset += right_pickup_pos - right_grab_pos # Average the offset if we have two hands moving if left_climbable and right_climbable: @@ -119,6 +116,27 @@ func physics_movement(delta: float, player_body: PlayerBody): # Report exclusive motion performed (to bypass gravity) return true + +func _set_climbing(active: bool, player_body: PlayerBody) -> void: + # Skip if no change + if active == is_active: + return + + # Update state + is_active = active + + # Handle state change + if is_active: + _distances.clear() + _deltas.clear() + emit_signal("player_climb_start") + else: + var velocity := _average_velocity() + var dir_forward = -(player_body.camera_node.global_transform.basis.z * HORIZONTAL).normalized() + player_body.velocity = (velocity * fling_multiplier) + (dir_forward * forward_push) + emit_signal("player_climb_end") + + # Update player velocity averaging data func _update_velocity(delta: float, distance: Vector3): # Add delta and distance to averaging arrays @@ -128,6 +146,7 @@ func _update_velocity(delta: float, distance: Vector3): _distances.pop_front() _deltas.pop_front() + # Calculate average player velocity func _average_velocity() -> Vector3: # Calculate the total time @@ -143,6 +162,7 @@ func _average_velocity() -> Vector3: # Return the average return total_distance / total_time + # This method verifies the MovementProvider has a valid configuration. func _get_configuration_warning(): # Verify the left controller diff --git a/addons/godot-xr-tools/functions/Function_Direct_movement.gd b/addons/godot-xr-tools/functions/Function_Direct_movement.gd index 57b5855..248e4e5 100644 --- a/addons/godot-xr-tools/functions/Function_Direct_movement.gd +++ b/addons/godot-xr-tools/functions/Function_Direct_movement.gd @@ -2,6 +2,7 @@ class_name Function_DirectMovement extends MovementProvider + ## ## Movement Provider for Direct Movement ## @@ -11,7 +12,6 @@ extends MovementProvider ## attached to the players XROrigin3D. ## ## The following types of direct movement are supported: -## - Flying ## - Snap turning ## - Smooth turning ## - Slewing @@ -20,14 +20,11 @@ extends MovementProvider ## The player may have multiple direct movement nodes attached to different ## controllers to provide different types of direct movement. ## -## Direct movement with flight support should be ordered after any direct -## movement providing rotation. This is to ensure the rotation is performed -## before the flight performs its exclusive control (which prevents any -## other type of motion form occurring) -## + enum MOVEMENT_TYPE { MOVE_AND_ROTATE, MOVE_AND_STRAFE } + ## Movement provider order @export var order : int = 10 @@ -49,24 +46,23 @@ enum MOVEMENT_TYPE { MOVE_AND_ROTATE, MOVE_AND_STRAFE } ## Type of movement to perform @export var move_type : MOVEMENT_TYPE = MOVEMENT_TYPE.MOVE_AND_ROTATE -## Can Fly flag -@export var canFly : bool = true - -## Flight movement button (moves in controller direction if flight active) -@export var fly_move_button_action = "trigger_click" - -## Flight activate button -@export var fly_activate_button_action = "grip_click" - ## Our directional input @export var input_action = "primary" + # Turn step accumulator var _turn_step := 0.0 + # Controller node @onready var _controller : XRController3D = get_parent() + +func _ready(): + # Workaround for issue #52223, our onready var is preventing ready from being called on the super class + super() + + # Perform jump movement func physics_movement(delta: float, player_body: PlayerBody): # Skip if the controller isn't active @@ -77,19 +73,6 @@ func physics_movement(delta: float, player_body: PlayerBody): if move_type == MOVEMENT_TYPE.MOVE_AND_ROTATE: _perform_player_rotation(delta, player_body) - # Detect flying - if canFly and _controller.is_button_pressed(fly_activate_button_action): - if _controller.is_button_pressed(fly_move_button_action): - # Use the controller's transform to move the VR capsule follow its orientation - var curr_transform := player_body.kinematic_node.global_transform - var fly_velocity := -_controller.global_transform.basis.z.normalized() * max_speed * XRServer.world_scale - player_body.velocity = player_body.move_and_slide(fly_velocity) - else: - player_body.velocity = Vector3.ZERO - - # Report exclusive motion performed (to bypass gravity) - return true - # Apply forwards/backwards ground control player_body.ground_control_velocity.y += _controller.get_axis(input_action).y * max_speed @@ -115,22 +98,15 @@ func _perform_player_rotation(delta: float, player_body: PlayerBody): _rotate_player(player_body, smooth_turn_speed * delta * left_right) return - # Clear step accumulator on direction change (opposite signs) - if left_right * _turn_step < 0.0: - _turn_step = 0.0 - - # Integrate the control into the step accumulator - _turn_step += left_right * delta + # Update the next turn-step delay + _turn_step -= abs(left_right) * delta + if _turn_step >= 0.0: + return - # Calculate how many steps to perform (if any) - var steps := int(_turn_step / step_turn_delay) - if steps != 0: - # Apply the rotation - var step_angle = steps * step_turn_angle - _rotate_player(player_body, step_angle * PI / 180.0) + # Turn one step in the requested direction + _turn_step = step_turn_delay + _rotate_player(player_body, deg2rad(step_turn_angle) * sign(left_right)) - # Subtract the rotation from the accumulator - _turn_step -= step_angle # Rotate the origin node around the camera func _rotate_player(player_body: PlayerBody, angle: float): @@ -143,6 +119,7 @@ func _rotate_player(player_body: PlayerBody, angle: float): rot = rot.rotated(Vector3(0.0, -1.0, 0.0), angle) player_body.origin_node.transform = (player_body.origin_node.transform * t2 * rot * t1).orthonormalized() + # This method verifies the MovementProvider has a valid configuration. func _get_configuration_warning(): # Check the controller node @@ -152,7 +129,3 @@ func _get_configuration_warning(): # Call base class return super._get_configuration_warning() - -func _ready(): - # Workaround for issue #52223, our onready var is preventing ready from being called on the super class - super() diff --git a/addons/godot-xr-tools/functions/Function_Flight_movement.gd b/addons/godot-xr-tools/functions/Function_Flight_movement.gd new file mode 100644 index 0000000..20cfcf7 --- /dev/null +++ b/addons/godot-xr-tools/functions/Function_Flight_movement.gd @@ -0,0 +1,215 @@ +@tool +class_name Function_FlightMovement +extends MovementProvider + + +## +## Movement Provider for Flying +## +## @desc: +## This script provides flying movement for the player. The control parameters +## are intended to support a wide variety of flight mechanics. +## +## Pitch and Bearing input devices are selected which produce a "forwards" +## reference frame. The player controls (forwards/backwards and +## left/right) are applied in relation to this reference frame. +## +## The Speed Scale and Traction parameters allow primitive flight where +## the player is in direct control of their speed (in the reference frame). +## This produces an effect described as the "Mary Poppins Flying Umbrella". +## +## The Acceleration, Drag, and Guidance parameters allow for slightly more +## realisitic flying where the player can accelerate in their reference +## frame. The drag is applied against the global reference and can be used +## to construct a terminal velocity. +## +## The Guidance property attempts to lerp the players velocity into flight +## forwards direction as if the player had guide-fins or wings. +## +## The Exclusive property specifies whether flight is exclusive (no further +## physics effects after flying) or whether additional effects such as +## the default player gravity are applied. +## + + +## Signal emitted when flight starts +signal flight_started() + +## Signal emitted when flight finishes +signal flight_finished() + + +# Enumeration of controller to use for flight +enum FlightController { + LEFT, # Use left controller + RIGHT, # Use right controler +} + +# Enumeration of pitch control input +enum FlightPitch { + HEAD, # Head controls pitch + CONTROLLER, # Controller controls pitch +} + +# Enumeration of bearing control input +enum FlightBearing { + HEAD, # Head controls bearing + CONTROLLER, # Controller controls bearing + BODY, # Body controls bearing +} + + +# Vector3 for getting vertical component +const VERTICAL := Vector3(0.0, 1.0, 0.0) + +# Vector3 for getting horizontal component +const HORIZONTAL := Vector3(1.0, 0.0, 1.0) + + +## Movement provider order +@export var order := 30 + +## Flight controller +@export_enum (FlightController) var controller: int = FlightController.LEFT + +## Flight toggle button +@export var flight_button = "by_button" + +## Flight pitch control +@export_enum (FlightPitch) var pitch: int = FlightPitch.CONTROLLER + +## Flight bearing control +@export_enum (FlightBearing) var bearing: int = FlightBearing.CONTROLLER + +## Flight speed from control +@export var speed_scale: float = 5.0 + +## Flight traction pulling flight velocity towards the controlled speed +@export var speed_traction: float = 3.0 + +## Flight acceleration from control +@export var acceleration_scale: float = 0.0 + +## Flight drag +@export var drag: float = 0.1 + +## Guidance effect (virtual fins/wings) +@export var guidance: float = 0.0 + +## Flight exclusive enable +@export var exclusive: bool = true + + +# Flight button state +var _flight_button: bool = false + +# Flight controller +var _controller: XRController3D + + +# Node references +@onready var _camera: XRCamera3D = XRHelpers.get_xr_camera(self) +@onready var _left_controller: XRController3D = XRHelpers.get_left_controller(self) +@onready var _right_controller: XRController3D = XRHelpers.get_right_controller(self) + + +func _ready(): + # Get the flight controller + if controller == FlightController.LEFT: + _controller = _left_controller + else: + _controller = _right_controller + + +func _process(_delta: float): + # Skip if disabled or the controller isn't active + if !enabled or !_controller.get_is_active(): + set_flying(false) + return + + # Detect press of flight button + var old_flight_button = _flight_button + _flight_button = _controller.is_button_pressed(flight_button) + if _flight_button and !old_flight_button: + set_flying(!is_active) + + +# Process physics movement for +func physics_movement(delta: float, player_body: PlayerBody): + # Skip if not flying + if !is_active: + return + + # Select the pitch vector + var pitch_vector: Vector3 + if pitch == FlightPitch.HEAD: + # Use the vertical part of the 'head' forwards vector + pitch_vector = -_camera.global_transform.basis.z.y * VERTICAL + else: + # Use the vertical part of the 'controller' forwards vector + pitch_vector = -_controller.global_transform.basis.z.y * VERTICAL + + # Select the bearing vector + var bearing_vector: Vector3 + if bearing == FlightBearing.HEAD: + # Use the horizontal part of the 'head' forwards vector + bearing_vector = -_camera.global_transform.basis.z * HORIZONTAL + elif bearing == FlightBearing.CONTROLLER: + # Use the horizontal part of the 'controller' forwards vector + bearing_vector = -_controller.global_transform.basis.z * HORIZONTAL + else: + # Use the horizontal part of the 'body' forwards vector + var left := _left_controller.global_transform.origin + var right := _right_controller.global_transform.origin + var left_to_right := (right - left) * HORIZONTAL + bearing_vector = left_to_right.rotated(Vector3.UP, PI/2) + + # Construct the flight bearing + var forwards := (bearing_vector.normalized() + pitch_vector).normalized() + var side := forwards.cross(Vector3.UP) + + # Construct the target velocity + var joy_forwards := _controller.get_axis("primary").y + var joy_side := _controller.get_axis("primary").x + var heading := forwards * joy_forwards + side * joy_side + + # Calculate the flight velocity + var flight_velocity := player_body.velocity + flight_velocity *= 1.0 - drag * delta + flight_velocity = flight_velocity.lerp(heading * speed_scale, speed_traction * delta) + flight_velocity += heading * acceleration_scale * delta + + # Apply virtual guidance effect + if guidance > 0.0: + var velocity_forwards := forwards * flight_velocity.length() + flight_velocity = flight_velocity.lerp(velocity_forwards, guidance * delta) + + # If exclusive then perform the exclusive move-and-slide + if exclusive: + player_body.velocity = player_body.move_and_slide(flight_velocity) + return true + + # Update velocity and return for additional effects + player_body.velocity = flight_velocity + return + + +func set_flying(active: bool) -> void: + # Skip if no change + if active == is_active: + return + + # Update state + is_active = active + + # Handle state change + if is_active: + emit_signal("flight_started") + else: + emit_signal("flight_finished") + + +# This method verifies the MovementProvider has a valid configuration. +func _get_configuration_warning(): + # Call base class + return super._get_configuration_warning() diff --git a/addons/godot-xr-tools/functions/Function_Flight_movement.tscn b/addons/godot-xr-tools/functions/Function_Flight_movement.tscn new file mode 100644 index 0000000..c8fdfc5 --- /dev/null +++ b/addons/godot-xr-tools/functions/Function_Flight_movement.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/godot-xr-tools/functions/Function_Flight_movement.gd" type="Script" id=1] + +[node name="Function_Flight_movement" type="Node" groups=["movement_providers"]] +script = ExtResource( 1 ) diff --git a/addons/godot-xr-tools/functions/Function_Glide_movement.gd b/addons/godot-xr-tools/functions/Function_Glide_movement.gd index 61d1c46..7c5374a 100644 --- a/addons/godot-xr-tools/functions/Function_Glide_movement.gd +++ b/addons/godot-xr-tools/functions/Function_Glide_movement.gd @@ -2,6 +2,7 @@ class_name Function_Glide extends MovementProvider + ## ## Movement Provider for Gliding ## @@ -21,14 +22,20 @@ extends MovementProvider ## after any Direct movement providers responsible for turning. ## + ## Signal invoked when the player starts gliding signal player_glide_start ## Signal invoked when the player ends gliding signal player_glide_end + +# Horizontal vector (multiply by this to get only the horizontal components +const HORIZONTAL := Vector3(1.0, 0.0, 1.0) + + ## Movement provider order -@export var order : int = 30 +@export var order : int = 35 ## Controller separation distance to register as glide @export var glide_detect_distance : float = 1.0 @@ -48,49 +55,38 @@ signal player_glide_end ## Slew rate to transition to gliding @export var vertical_slew_rate : float = 2.0 -## Left XR Controller -@export_node_path(XRController3D) var left_controller - -## Right XR Controller -@export_node_path(XRController3D) var right_controller # Node references -var _left_controller_node: XRController3D -var _right_controller_node: XRController3D +@onready var _left_controller := XRHelpers.get_left_controller(self) +@onready var _right_controller := XRHelpers.get_right_controller(self) -# Is the player gliding -var is_gliding : bool = false -# Horizontal vector (multiply by this to get only the horizontal components -const horizontal := Vector3(1.0, 0.0, 1.0) - -# Called when the node enters the scene tree for the first time. func _ready(): - # Get the controllers - _left_controller_node = get_node(left_controller) if left_controller else get_node("../LeftHandController") - _right_controller_node = get_node(right_controller) if right_controller else get_node("../RightHandController") - # In Godot 4 we must now manually call our super class ready function - super() + super._ready() + func physics_movement(delta: float, player_body: PlayerBody): - # Skip if either controller is off - if !_left_controller_node.get_is_active() or !_right_controller_node.get_is_active(): + # Skip if disabled or either controller is off + if !enabled or !_left_controller.get_is_active() or !_right_controller.get_is_active(): + _set_gliding(false) return # If on the ground, or not falling, then not gliding if player_body.on_ground || player_body.velocity.y >= glide_min_fall_speed: - _set_is_gliding(false) + _set_gliding(false) return - # Get the controller left ands right global horizontal positions - var left_position := _left_controller_node.global_transform.origin * horizontal - var right_position := _right_controller_node.global_transform.origin * horizontal + # Get the controller left and right global horizontal positions + var left_position := _left_controller.global_transform.origin * HORIZONTAL + var right_position := _right_controller.global_transform.origin * HORIZONTAL var left_to_right := right_position - left_position - # If the hands are too close then not gliding - if left_to_right.length() < glide_detect_distance: - _set_is_gliding(false) + # Set gliding based on hand separation + _set_gliding(left_to_right.length() >= glide_detect_distance) + + # Skip if not gliding + if !is_active: return # Lerp the vertical velocity to glide_fall_speed @@ -98,7 +94,7 @@ func physics_movement(delta: float, player_body: PlayerBody): vertical_velocity = lerp(vertical_velocity, glide_fall_speed, vertical_slew_rate * delta) # Lerp the horizontal velocity towards forward_speed - var horizontal_velocity := player_body.velocity * horizontal + var horizontal_velocity := player_body.velocity * HORIZONTAL var dir_forward := left_to_right.rotated(Vector3.UP, PI/2).normalized() var forward_velocity := dir_forward * glide_forward_speed horizontal_velocity = horizontal_velocity.lerp(forward_velocity, horizontal_slew_rate * delta) @@ -110,31 +106,33 @@ func physics_movement(delta: float, player_body: PlayerBody): # Report exclusive motion performed (to bypass gravity) return true + # Set the is_gliding flag and fire any signals -func _set_is_gliding(gliding: bool): +func _set_gliding(active: bool) -> void: # Skip if no change - if gliding == is_gliding: + if active == is_active: return # Update the is_gliding flag - is_gliding = gliding; + is_active = active; # Report transition - if is_gliding: + if is_active: emit_signal("player_glide_start") else: emit_signal("player_glide_end") + # This method verifies the MovementProvider has a valid configuration. func _get_configuration_warning(): # Verify the left controller - var test_left_controller_node = get_node_or_null(left_controller) if left_controller else get_node_or_null("../LeftHandController") - if !test_left_controller_node or !test_left_controller_node is XRController3D: + var test_left_controller_node := XRHelpers.get_left_controller(self) + if !test_left_controller_node: return "Unable to find left XR Controller node" # Verify the right controller - var test_right_controller_node = get_node_or_null(right_controller) if right_controller else get_node_or_null("../RightHandController") - if !test_right_controller_node or !test_right_controller_node is XRController3D: + var test_right_controller_node := XRHelpers.get_right_controller(self) + if !test_right_controller_node: return "Unable to find right XR Controller node" # Check glide parameters diff --git a/addons/godot-xr-tools/functions/Function_JumpDetect_movement.gd b/addons/godot-xr-tools/functions/Function_JumpDetect_movement.gd new file mode 100644 index 0000000..c58ece7 --- /dev/null +++ b/addons/godot-xr-tools/functions/Function_JumpDetect_movement.gd @@ -0,0 +1,162 @@ +@tool +class_name Function_JumpDetect +extends MovementProvider + + +## +## Movement Provider for Player Jump Detection +## +## @desc: +## This script can detect jumping based on either the players body jumping, +## or by the player swinging their arms up. +## +## The player body jumping is detected by putting the cameras instantaneous +## Y velocity (in the tracking space) into a sliding-window averager. If the +## average Y velocity exceeds a threshold parameter then the player has +## jumped. +## +## The player arms jumping is detected by putting both controllers instantaneous +## Y velocity (in the tracking space) into a sliding-window averager. If both +## average Y velocities exceed a threshold parameter then the player has +## jumped. +## + + +## Movement provider order +@export var order := 20 + +## Enable detecting of jump via body (through the camera) +@export var body_jump_enable := true + +## Only jump as high as the player (no ground physics) +@export var body_jump_player_only := false + +## Body jump detection threshold (M/S^2) +@export var body_jump_threshold := 2.5 + +## Enable detectionm of jump via arms (through the controllers) +@export var arms_jump_enable := false + +## Arms jump detection threshold (M/S^2) +@export var arms_jump_threshold := 10.0 + + +# Sliding Average class +class SlidingAverage: + # Sliding window size + var _size: int + + # Sum of items in the window + var _sum := 0.0 + + # Position + var _pos := 0 + + # Data window + var _data := Array() + + # Constructor + func _init(size: int): + # Set the size and fill the array + _size = size + for i in size: + _data.push_back(0.0) + + # Update the average + func update(entry: float) -> float: + # Add the new entry and subtract the old + _sum += entry + _sum -= _data[_pos] + + # Store the new entry in the array and circularly advance the index + _data[_pos] = entry; + _pos = (_pos + 1) % _size + + # Return the average + return _sum / _size + + +# Node Positions +var _camera_position := 0.0 +var _controller_left_position := 0.0 +var _controller_right_position := 0.0 + +# Node Velocities +var _camera_velocity := SlidingAverage.new(5) +var _controller_left_velocity := SlidingAverage.new(5) +var _controller_right_velocity := SlidingAverage.new(5) + +# Node references +@onready var _origin_node := XRHelpers.get_xr_origin(self) +@onready var _camera_node := XRHelpers.get_xr_camera(self) +@onready var _controller_left_node := XRHelpers.get_left_controller(self) +@onready var _controller_right_node := XRHelpers.get_right_controller(self) + + +# Perform jump detection +func physics_movement(delta: float, player_body: PlayerBody): + # Handle detecting body jump + if body_jump_enable: + _detect_body_jump(delta, player_body) + + # Handle detecting arms jump + if arms_jump_enable: + _detect_arms_jump(delta, player_body) + + +# Detect the player jumping with their body (using the headset camera) +func _detect_body_jump(delta: float, player_body: PlayerBody) -> void: + # Get the camera instantaneous velocity + var new_camera_pos := _camera_node.transform.origin.y + var camera_vel := (new_camera_pos - _camera_position) / delta + _camera_position = new_camera_pos + + # Ignore zero moves (either not tracking, or no update since last physics) + if abs(camera_vel) < 0.001: + return; + + # Clamp the camera instantaneous velocity to +/- 2x the jump threshold + camera_vel = clamp(camera_vel, -2.0 * body_jump_threshold, 2.0 * body_jump_threshold) + + # Get the averaged velocity + camera_vel = _camera_velocity.update(camera_vel) + + # Detect a jump + if camera_vel >= body_jump_threshold: + player_body.request_jump(body_jump_player_only) + + +# Detect the player jumping with their arms (using the controllers) +func _detect_arms_jump(delta: float, player_body: PlayerBody) -> void: + # Skip if either of the controllers is disabled + if !_controller_left_node.get_is_active() or !_controller_right_node.get_is_active(): + return + + # Get the controllers instantaneous velocity + var new_controller_left_pos := _controller_left_node.transform.origin.y + var new_controller_right_pos := _controller_right_node.transform.origin.y + var controller_left_vel := (new_controller_left_pos - _controller_left_position) / delta + var controller_right_vel := (new_controller_right_pos - _controller_right_position) / delta + _controller_left_position = new_controller_left_pos + _controller_right_position = new_controller_right_pos + + # Ignore zero moves (either not tracking, or no update since last physics) + if abs(controller_left_vel) <= 0.001 and abs(controller_right_vel) <= 0.001: + return + + # Clamp the controller instantaneous velocity to +/- 2x the jump threshold + controller_left_vel = clamp(controller_left_vel, -2.0 * arms_jump_threshold, 2.0 * arms_jump_threshold) + controller_right_vel = clamp(controller_right_vel, -2.0 * arms_jump_threshold, 2.0 * arms_jump_threshold) + + # Get the averaged velocity + controller_left_vel = _controller_left_velocity.update(controller_left_vel) + controller_right_vel = _controller_right_velocity.update(controller_right_vel) + + # Detect a jump + if controller_left_vel >= arms_jump_threshold and controller_right_vel >= arms_jump_threshold: + player_body.request_jump() + +# This method verifies the MovementProvider has a valid configuration. +func _get_configuration_warning(): + # Call base class + return super._get_configuration_warning() diff --git a/addons/godot-xr-tools/functions/Function_JumpDetect_movement.tscn b/addons/godot-xr-tools/functions/Function_JumpDetect_movement.tscn new file mode 100644 index 0000000..4ea8ad2 --- /dev/null +++ b/addons/godot-xr-tools/functions/Function_JumpDetect_movement.tscn @@ -0,0 +1,7 @@ +[gd_scene load_steps=2 format=3 uid="uid://dbpow68mojq5k"] + +[ext_resource type="Script" path="res://addons/godot-xr-tools/functions/Function_JumpDetect_movement.gd" id="1"] + +[node name="Function_JumpDetect_Movement" type="Node" groups=["movement_providers"]] +script = ExtResource( "1" ) +arms_jump_enable = true diff --git a/addons/godot-xr-tools/functions/Function_Jump_movement.gd b/addons/godot-xr-tools/functions/Function_Jump_movement.gd index 0f2d990..b7677d7 100644 --- a/addons/godot-xr-tools/functions/Function_Jump_movement.gd +++ b/addons/godot-xr-tools/functions/Function_Jump_movement.gd @@ -2,6 +2,7 @@ class_name Function_Jump extends MovementProvider + ## ## Movement Provider for Jumping ## @@ -15,8 +16,6 @@ extends MovementProvider ## and jump velocity. ## -## Player jumped signal -signal player_jumped ## Movement provider order @export var order : int = 20 @@ -24,32 +23,26 @@ signal player_jumped ## Button to trigger jump @export var jump_button_action = "trigger_click" + # Node references @onready var _controller: XRController3D = get_parent() + +func _ready(): + # In Godot 4 we must now manually call our super class ready function + super._ready() + + # Perform jump movement func physics_movement(delta: float, player_body: PlayerBody): - # Skip if the player isn't on the ground - if !player_body.on_ground: - return - # Skip if the jump controller isn't active if !_controller.get_is_active(): return # Skip if the jump button isn't pressed - if !_controller.is_button_pressed(jump_button_action): - return - - # Skip if the ground is too steep to jump - var current_max_slope := GroundPhysicsSettings.get_jump_max_slope(player_body.ground_physics, player_body.default_physics) - if player_body.ground_angle > current_max_slope: - return + if _controller.is_button_pressed(jump_button_action): + player_body.request_jump() - # Perform the jump - emit_signal("player_jumped") - var current_jump_velocity := GroundPhysicsSettings.get_jump_velocity(player_body.ground_physics, player_body.default_physics) - player_body.velocity.y = current_jump_velocity * XRServer.world_scale # This method verifies the MovementProvider has a valid configuration. func _get_configuration_warning(): @@ -60,7 +53,3 @@ func _get_configuration_warning(): # Call base class return super._get_configuration_warning() - -func _ready(): - # Workaround for issue #52223, our onready var is preventing ready from being called on the super class - super() diff --git a/addons/godot-xr-tools/functions/Function_Jump_movement.tscn b/addons/godot-xr-tools/functions/Function_Jump_movement.tscn index 1e6505e..67f1b29 100644 --- a/addons/godot-xr-tools/functions/Function_Jump_movement.tscn +++ b/addons/godot-xr-tools/functions/Function_Jump_movement.tscn @@ -1,8 +1,6 @@ -[gd_scene load_steps=2 format=2] +[gd_scene load_steps=2 format=3 uid="uid://ch13jk1000tgg"] -[ext_resource path="res://addons/godot-xr-tools/functions/Function_Jump_movement.gd" type="Script" id=1] +[ext_resource type="Script" path="res://addons/godot-xr-tools/functions/Function_Jump_movement.gd" id="1"] [node name="Function_Jump_movement" type="Node" groups=["movement_providers"]] -script = ExtResource( 1 ) -jump_button_id = null -controller = null +script = ExtResource( "1" ) diff --git a/addons/godot-xr-tools/functions/Function_Pickup.gd b/addons/godot-xr-tools/functions/Function_Pickup.gd index ee1a332..e32a243 100644 --- a/addons/godot-xr-tools/functions/Function_Pickup.gd +++ b/addons/godot-xr-tools/functions/Function_Pickup.gd @@ -20,7 +20,7 @@ func _update_pickup_range(): var object_in_area = Array() var closest_object = null -var picked_up_object = null +var picked_up_object: Node = null var _velocity_averager = VelocityAverager.new(max_samples) diff --git a/addons/godot-xr-tools/functions/Function_Wind_movement.gd b/addons/godot-xr-tools/functions/Function_Wind_movement.gd index daf626c..e4d13b4 100644 --- a/addons/godot-xr-tools/functions/Function_Wind_movement.gd +++ b/addons/godot-xr-tools/functions/Function_Wind_movement.gd @@ -22,13 +22,15 @@ var _active_wind_area: WindArea # Called when the node enters the scene tree for the first time. func _ready(): + # In Godot 4 we must now manually call our super class ready function + super._ready() + # Skip if running in the editor if Engine.is_editor_hint(): - super() return # Reparent the sense area to the camera - var camera = get_xr_camera() + var camera = XRHelpers.get_xr_camera(self) if camera: self.remove_child(_sense_area) camera.add_child(_sense_area) @@ -37,9 +39,6 @@ func _ready(): _sense_area.connect("area_entered", _on_area_entered) _sense_area.connect("area_exited", _on_area_exited) - # In Godot 4 we must now manually call our super class ready function - super() - func _on_area_entered(area: Area3D): # Skip if not wind area var wind_area = area as WindArea @@ -84,27 +83,6 @@ func physics_movement(delta: float, player_body: PlayerBody): drag_factor = clamp(drag_factor, 0.0, 1.0) player_body.velocity = player_body.velocity.lerp(wind_velocity, drag_factor) -# Get our camera node -func get_xr_camera() -> XRCamera3D: - # Get the XROrigin3D node - var origin := get_xr_origin() - if !origin: - return null - - # Attempt to get using the default name - var camera := origin.get_node_or_null("XRCamera3D") as XRCamera3D - if camera: - return camera - - # Find the first XRCamera3D child - for child in origin.get_children(): - camera = child as XRCamera3D - if camera: - return camera - - # Unable to find XRCamera3D - return null - # This method verifies the MovementProvider has a valid configuration. func _get_configuration_warning(): # Call base class diff --git a/addons/godot-xr-tools/functions/MovementProvider.gd b/addons/godot-xr-tools/functions/MovementProvider.gd index 7bd33fb..d9b26c1 100644 --- a/addons/godot-xr-tools/functions/MovementProvider.gd +++ b/addons/godot-xr-tools/functions/MovementProvider.gd @@ -2,6 +2,7 @@ class_name MovementProvider extends Node + ## ## Movement Provider base class ## @@ -15,25 +16,21 @@ extends Node ## - Override the physics_movement method to impelment motion ## + ## Enable movement provider @export var enabled : bool = true -# Get our origin node, we should be in a branch of this -func get_xr_origin() -> XROrigin3D: - var parent = get_parent() - while parent: - if parent is XROrigin3D: - return parent - parent = parent.get_parent() - - return null + +# Is the movement provider actively performing a move +var is_active := false + ## Note, using PlayerBody here creates a cyclic dependency so we are going for duck typing :) # Get our player body, this should be a node on our XROrigin3D node. func get_player_body() -> Node: # get our origin node - var xr_origin = get_xr_origin() + var xr_origin := XRHelpers.get_xr_origin(self) if !xr_origin: return null @@ -48,10 +45,11 @@ func get_player_body() -> Node: return null -# If missing we need to add our player body + +# If missing we need to add our player body func _create_player_body_node(): # get our origin node - var xr_origin = get_xr_origin() + var xr_origin = XRHelpers.get_xr_origin(self) if !xr_origin: return @@ -63,25 +61,29 @@ func _create_player_body_node(): player_body = player_body.instantiate() player_body.set_name("PlayerBody") xr_origin.add_child(player_body) - player_body.set_owner(xr_origin.owner) + player_body.set_owner(get_tree().get_edited_scene_root()) + # Function run when node is added to scene func _ready(): - # If we're in the editor, help the user out by creating our player body node automatically when needed. + # If we're in the editor, help the user out by creating our player body node + # automatically when needed. if Engine.is_editor_hint(): var player_body = get_player_body() if !player_body: # This call needs to be deferred, we can't add nodes during scene construction call_deferred("_create_player_body_node") + # Override this function to apply motion to the PlayerBody -func physics_movement(delta: float, player_body: PlayerBody): +func physics_movement(_delta: float, _player_body: PlayerBody): pass + # This method verifies the MovementProvider has a valid configuration. func _get_configuration_warning(): # Verify we're within the tree of an XROrigin3D node - var xr_origin = get_xr_origin() + var xr_origin = XRHelpers.get_xr_origin(self) if !xr_origin: return "This node must be within a branch on an XROrigin3D node" diff --git a/addons/godot-xr-tools/images/icon.png.import b/addons/godot-xr-tools/images/icon.png.import index 3a5ec70..d3cceb0 100644 --- a/addons/godot-xr-tools/images/icon.png.import +++ b/addons/godot-xr-tools/images/icon.png.import @@ -1,9 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://bcll0cv3rie0i" -path="res://.godot/imported/icon.png-1d8efcc4c33e64800e22ea3150ef148d.stex" +path="res://.godot/imported/icon.png-1d8efcc4c33e64800e22ea3150ef148d.ctex" metadata={ "vram_texture": false } @@ -11,7 +11,7 @@ metadata={ [deps] source_file="res://addons/godot-xr-tools/images/icon.png" -dest_files=["res://.godot/imported/icon.png-1d8efcc4c33e64800e22ea3150ef148d.stex"] +dest_files=["res://.godot/imported/icon.png-1d8efcc4c33e64800e22ea3150ef148d.ctex"] [params] @@ -21,7 +21,6 @@ compress/hdr_compression=1 compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 -compress/streamed=false mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 diff --git a/addons/godot-xr-tools/images/teleport_arrow.png.import b/addons/godot-xr-tools/images/teleport_arrow.png.import index 73e532c..b258d23 100644 --- a/addons/godot-xr-tools/images/teleport_arrow.png.import +++ b/addons/godot-xr-tools/images/teleport_arrow.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://ddoj6c345cb0c" -path.s3tc="res://.godot/imported/teleport_arrow.png-f1bd44b6f478277692b3fa29171b62d3.s3tc.stex" -path.etc2="res://.godot/imported/teleport_arrow.png-f1bd44b6f478277692b3fa29171b62d3.etc2.stex" +path.s3tc="res://.godot/imported/teleport_arrow.png-f1bd44b6f478277692b3fa29171b62d3.s3tc.ctex" +path.etc2="res://.godot/imported/teleport_arrow.png-f1bd44b6f478277692b3fa29171b62d3.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://addons/godot-xr-tools/images/teleport_arrow.png" -dest_files=["res://.godot/imported/teleport_arrow.png-f1bd44b6f478277692b3fa29171b62d3.s3tc.stex", "res://.godot/imported/teleport_arrow.png-f1bd44b6f478277692b3fa29171b62d3.etc2.stex"] +dest_files=["res://.godot/imported/teleport_arrow.png-f1bd44b6f478277692b3fa29171b62d3.s3tc.ctex", "res://.godot/imported/teleport_arrow.png-f1bd44b6f478277692b3fa29171b62d3.etc2.ctex"] [params] @@ -23,7 +23,6 @@ compress/hdr_compression=1 compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 -compress/streamed=false mipmaps/generate=true mipmaps/limit=-1 roughness/mode=0 diff --git a/addons/godot-xr-tools/images/teleport_target.png.import b/addons/godot-xr-tools/images/teleport_target.png.import index 2bbf8aa..36d76f4 100644 --- a/addons/godot-xr-tools/images/teleport_target.png.import +++ b/addons/godot-xr-tools/images/teleport_target.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://cu4j1s8qr1rjq" -path.s3tc="res://.godot/imported/teleport_target.png-cd812f7d5692711ac91f6c8a4753ad73.s3tc.stex" -path.etc2="res://.godot/imported/teleport_target.png-cd812f7d5692711ac91f6c8a4753ad73.etc2.stex" +path.s3tc="res://.godot/imported/teleport_target.png-cd812f7d5692711ac91f6c8a4753ad73.s3tc.ctex" +path.etc2="res://.godot/imported/teleport_target.png-cd812f7d5692711ac91f6c8a4753ad73.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://addons/godot-xr-tools/images/teleport_target.png" -dest_files=["res://.godot/imported/teleport_target.png-cd812f7d5692711ac91f6c8a4753ad73.s3tc.stex", "res://.godot/imported/teleport_target.png-cd812f7d5692711ac91f6c8a4753ad73.etc2.stex"] +dest_files=["res://.godot/imported/teleport_target.png-cd812f7d5692711ac91f6c8a4753ad73.s3tc.ctex", "res://.godot/imported/teleport_target.png-cd812f7d5692711ac91f6c8a4753ad73.etc2.ctex"] [params] @@ -23,7 +23,6 @@ compress/hdr_compression=1 compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 -compress/streamed=false mipmaps/generate=true mipmaps/limit=-1 roughness/mode=0 diff --git a/addons/godot-xr-tools/materials/teleport.gdshader b/addons/godot-xr-tools/materials/teleport.gdshader index 4e91468..f9c8db9 100644 --- a/addons/godot-xr-tools/materials/teleport.gdshader +++ b/addons/godot-xr-tools/materials/teleport.gdshader @@ -19,13 +19,13 @@ void vertex() { float t2 = t * t; // translate to our world vector - VERTEX = (WORLD_MATRIX * vec4(VERTEX, 1.0)).xyz; + VERTEX = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xyz; // and now create our arch VERTEX += down * t2; - // and apply our camera matrix - VERTEX = (INV_CAMERA_MATRIX * vec4(VERTEX, 1.0)).xyz; + // and apply our view matrix + VERTEX = (VIEW_MATRIX * vec4(VERTEX, 1.0)).xyz; } void fragment() { diff --git a/addons/godot-xr-tools/misc/XR_Helpers.gd b/addons/godot-xr-tools/misc/XR_Helpers.gd new file mode 100644 index 0000000..f933c77 --- /dev/null +++ b/addons/godot-xr-tools/misc/XR_Helpers.gd @@ -0,0 +1,101 @@ +@tool +class_name XRHelpers + + +## +## XR Helper Rountines +## +## @desc: +## This script contains static functions to help find XR player nodes. +## +## As these functions are static, the caller must pass in a node located +## somewhere under the players XROrigin3D. +## + + +## Find the XROrigin3D from a player node and an optional path +static func get_xr_origin(node: Node, path: NodePath = NodePath()) -> XROrigin3D: + var origin: XROrigin3D + + # Try using the node path first + if path: + origin = node.get_node(path) as XROrigin3D + if origin: + return origin + + # Walk up the tree from the provided node looking for the origin + var current = node + while current: + origin = current as XROrigin3D + if origin: + return origin + current = current.get_parent() + + # Could not find origin + return null + +## Find the XRCamera3D from a player node and an optional path +static func get_xr_camera(node: Node, path: NodePath = NodePath()) -> XRCamera3D: + var camera: XRCamera3D + + # Try using the node path first + if path: + camera = node.get_node(path) as XRCamera3D + if camera: + return camera + + # Get the origin + var origin := get_xr_origin(node) + if !origin: + return null + + # Attempt to get by the default name + camera = origin.get_node_or_null("Camera") as XRCamera3D + if camera: + return camera + + # Search all children of the origin for the camera + for child in origin.get_children(): + camera = child as XRCamera3D + if camera: + return camera + + # Could not find camera + return null + +## Find the Left Hand Controller from a player node and an optional path +static func get_left_controller(node: Node, path: NodePath = NodePath()) -> XRController3D: + return _get_controller(node, "LeftHandController", 1, path) + +## Find the Right Hand Controller from a player node and an optional path +static func get_right_controller(node: Node, path: NodePath = NodePath()) -> XRController3D: + return _get_controller(node, "RightHandController", 2, path) + +## Find a controller given some search parameters +static func _get_controller(node: Node, default_name: String, id: int, path: NodePath) -> XRController3D: + var controller: XRController3D + + # Try using the node path first + if path: + controller = node.get_node(path) as XRController3D + if controller: + return controller + + # Get the origin + var origin := get_xr_origin(node) + if !origin: + return null + + # Attempt to get by the default name + controller = origin.get_node_or_null(default_name) as XRController3D + if controller: + return controller + + # Search all children of the origin for the controller + for child in origin.get_children(): + controller = child as XRController3D + if controller and controller.controller_id == id: + return controller + + # Could not find the controller + return null diff --git a/addons/godot-xr-tools/overrides/GroundPhysicsSettings.gd b/addons/godot-xr-tools/overrides/GroundPhysicsSettings.gd index 8938c58..39f9397 100644 --- a/addons/godot-xr-tools/overrides/GroundPhysicsSettings.gd +++ b/addons/godot-xr-tools/overrides/GroundPhysicsSettings.gd @@ -20,6 +20,9 @@ enum GroundPhysicsFlags { ## Movement traction factor @export var move_traction : float = 30.0 +## Stop sliding on slope +@export var stop_on_slope := true + ## Movement maximum slope @export_range(0.0, 85.0) var move_max_slope : float = 45.0 diff --git a/addons/godot-xr-tools/plugin.cfg b/addons/godot-xr-tools/plugin.cfg index 0f9e5e7..7c86cd7 100644 --- a/addons/godot-xr-tools/plugin.cfg +++ b/addons/godot-xr-tools/plugin.cfg @@ -3,5 +3,5 @@ name="Godot XR Tools" description="Godot XR Tools plugin" author="Bastiaan Olij and Contributors" -version="3.0.0" +version="4.0.0" script="plugin.gd" \ No newline at end of file diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/bush_01.png.import b/assets/OpenGameArt.org/rubberduck_plant_pack/bush_01.png.import index 9a358ec..2e8a6c8 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/bush_01.png.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/bush_01.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://o2mircq0fxvf" -path.s3tc="res://.godot/imported/bush_01.png-a4acbcfcd49abaec0872fbf6c626bcc3.s3tc.stex" -path.etc2="res://.godot/imported/bush_01.png-a4acbcfcd49abaec0872fbf6c626bcc3.etc2.stex" +path.s3tc="res://.godot/imported/bush_01.png-a4acbcfcd49abaec0872fbf6c626bcc3.s3tc.ctex" +path.etc2="res://.godot/imported/bush_01.png-a4acbcfcd49abaec0872fbf6c626bcc3.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/bush_01.png" -dest_files=["res://.godot/imported/bush_01.png-a4acbcfcd49abaec0872fbf6c626bcc3.s3tc.stex", "res://.godot/imported/bush_01.png-a4acbcfcd49abaec0872fbf6c626bcc3.etc2.stex"] +dest_files=["res://.godot/imported/bush_01.png-a4acbcfcd49abaec0872fbf6c626bcc3.s3tc.ctex", "res://.godot/imported/bush_01.png-a4acbcfcd49abaec0872fbf6c626bcc3.etc2.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/bush_01_norm.jpg.import b/assets/OpenGameArt.org/rubberduck_plant_pack/bush_01_norm.jpg.import index 15cc3eb..6b37855 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/bush_01_norm.jpg.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/bush_01_norm.jpg.import @@ -1,9 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://bibvb0ol5mg4" -path="res://.godot/imported/bush_01_norm.jpg-713b9e6d2667496c5903b7abcdd7b311.stex" +path="res://.godot/imported/bush_01_norm.jpg-713b9e6d2667496c5903b7abcdd7b311.ctex" metadata={ "vram_texture": false } @@ -11,7 +11,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/bush_01_norm.jpg" -dest_files=["res://.godot/imported/bush_01_norm.jpg-713b9e6d2667496c5903b7abcdd7b311.stex"] +dest_files=["res://.godot/imported/bush_01_norm.jpg-713b9e6d2667496c5903b7abcdd7b311.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/bush_02.png.import b/assets/OpenGameArt.org/rubberduck_plant_pack/bush_02.png.import index 34b0f25..417a3e9 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/bush_02.png.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/bush_02.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://cjbbcaanw7klj" -path.s3tc="res://.godot/imported/bush_02.png-cbe6e55febeb1eccfd788889570fd376.s3tc.stex" -path.etc2="res://.godot/imported/bush_02.png-cbe6e55febeb1eccfd788889570fd376.etc2.stex" +path.s3tc="res://.godot/imported/bush_02.png-cbe6e55febeb1eccfd788889570fd376.s3tc.ctex" +path.etc2="res://.godot/imported/bush_02.png-cbe6e55febeb1eccfd788889570fd376.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/bush_02.png" -dest_files=["res://.godot/imported/bush_02.png-cbe6e55febeb1eccfd788889570fd376.s3tc.stex", "res://.godot/imported/bush_02.png-cbe6e55febeb1eccfd788889570fd376.etc2.stex"] +dest_files=["res://.godot/imported/bush_02.png-cbe6e55febeb1eccfd788889570fd376.s3tc.ctex", "res://.godot/imported/bush_02.png-cbe6e55febeb1eccfd788889570fd376.etc2.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/bush_02_norm.jpg.import b/assets/OpenGameArt.org/rubberduck_plant_pack/bush_02_norm.jpg.import index 0a9fb1a..38115c7 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/bush_02_norm.jpg.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/bush_02_norm.jpg.import @@ -1,9 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://cpp28n67o2785" -path="res://.godot/imported/bush_02_norm.jpg-2480366032dfe2270e445ab4b578d74e.stex" +path="res://.godot/imported/bush_02_norm.jpg-2480366032dfe2270e445ab4b578d74e.ctex" metadata={ "vram_texture": false } @@ -11,7 +11,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/bush_02_norm.jpg" -dest_files=["res://.godot/imported/bush_02_norm.jpg-2480366032dfe2270e445ab4b578d74e.stex"] +dest_files=["res://.godot/imported/bush_02_norm.jpg-2480366032dfe2270e445ab4b578d74e.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/bush_03.png.import b/assets/OpenGameArt.org/rubberduck_plant_pack/bush_03.png.import index 961cbc3..860da94 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/bush_03.png.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/bush_03.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://kfla38ag277" -path.s3tc="res://.godot/imported/bush_03.png-7b89cf2c80b33c661c78300f734a3dc2.s3tc.stex" -path.etc2="res://.godot/imported/bush_03.png-7b89cf2c80b33c661c78300f734a3dc2.etc2.stex" +path.s3tc="res://.godot/imported/bush_03.png-7b89cf2c80b33c661c78300f734a3dc2.s3tc.ctex" +path.etc2="res://.godot/imported/bush_03.png-7b89cf2c80b33c661c78300f734a3dc2.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/bush_03.png" -dest_files=["res://.godot/imported/bush_03.png-7b89cf2c80b33c661c78300f734a3dc2.s3tc.stex", "res://.godot/imported/bush_03.png-7b89cf2c80b33c661c78300f734a3dc2.etc2.stex"] +dest_files=["res://.godot/imported/bush_03.png-7b89cf2c80b33c661c78300f734a3dc2.s3tc.ctex", "res://.godot/imported/bush_03.png-7b89cf2c80b33c661c78300f734a3dc2.etc2.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/bush_03_norm.jpg.import b/assets/OpenGameArt.org/rubberduck_plant_pack/bush_03_norm.jpg.import index 0cc8610..4609f00 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/bush_03_norm.jpg.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/bush_03_norm.jpg.import @@ -1,9 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://drub7x5kgm2xk" -path="res://.godot/imported/bush_03_norm.jpg-cd8714ccb740b51266ea2e87c4c3b171.stex" +path="res://.godot/imported/bush_03_norm.jpg-cd8714ccb740b51266ea2e87c4c3b171.ctex" metadata={ "vram_texture": false } @@ -11,7 +11,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/bush_03_norm.jpg" -dest_files=["res://.godot/imported/bush_03_norm.jpg-cd8714ccb740b51266ea2e87c4c3b171.stex"] +dest_files=["res://.godot/imported/bush_03_norm.jpg-cd8714ccb740b51266ea2e87c4c3b171.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/bush_04.png.import b/assets/OpenGameArt.org/rubberduck_plant_pack/bush_04.png.import index 70266f4..a5eb69c 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/bush_04.png.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/bush_04.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://ce56dr7d2yq6j" -path.s3tc="res://.godot/imported/bush_04.png-8ff3ae56e2dbb0226adc4a70bc3dded1.s3tc.stex" -path.etc2="res://.godot/imported/bush_04.png-8ff3ae56e2dbb0226adc4a70bc3dded1.etc2.stex" +path.s3tc="res://.godot/imported/bush_04.png-8ff3ae56e2dbb0226adc4a70bc3dded1.s3tc.ctex" +path.etc2="res://.godot/imported/bush_04.png-8ff3ae56e2dbb0226adc4a70bc3dded1.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/bush_04.png" -dest_files=["res://.godot/imported/bush_04.png-8ff3ae56e2dbb0226adc4a70bc3dded1.s3tc.stex", "res://.godot/imported/bush_04.png-8ff3ae56e2dbb0226adc4a70bc3dded1.etc2.stex"] +dest_files=["res://.godot/imported/bush_04.png-8ff3ae56e2dbb0226adc4a70bc3dded1.s3tc.ctex", "res://.godot/imported/bush_04.png-8ff3ae56e2dbb0226adc4a70bc3dded1.etc2.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/bush_04_norm.jpg.import b/assets/OpenGameArt.org/rubberduck_plant_pack/bush_04_norm.jpg.import index a827828..23faa8a 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/bush_04_norm.jpg.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/bush_04_norm.jpg.import @@ -1,9 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://cgu4d6aj5b54g" -path="res://.godot/imported/bush_04_norm.jpg-741b4146298a58ff9d7be8f6fb4e23ad.stex" +path="res://.godot/imported/bush_04_norm.jpg-741b4146298a58ff9d7be8f6fb4e23ad.ctex" metadata={ "vram_texture": false } @@ -11,7 +11,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/bush_04_norm.jpg" -dest_files=["res://.godot/imported/bush_04_norm.jpg-741b4146298a58ff9d7be8f6fb4e23ad.stex"] +dest_files=["res://.godot/imported/bush_04_norm.jpg-741b4146298a58ff9d7be8f6fb4e23ad.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/fern_01.png.import b/assets/OpenGameArt.org/rubberduck_plant_pack/fern_01.png.import index 22d51c8..843f4c5 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/fern_01.png.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/fern_01.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://bi4wd0tnj3e0" -path.s3tc="res://.godot/imported/fern_01.png-07360a09c453def7eb7b41178131c17d.s3tc.stex" -path.etc2="res://.godot/imported/fern_01.png-07360a09c453def7eb7b41178131c17d.etc2.stex" +path.s3tc="res://.godot/imported/fern_01.png-07360a09c453def7eb7b41178131c17d.s3tc.ctex" +path.etc2="res://.godot/imported/fern_01.png-07360a09c453def7eb7b41178131c17d.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/fern_01.png" -dest_files=["res://.godot/imported/fern_01.png-07360a09c453def7eb7b41178131c17d.s3tc.stex", "res://.godot/imported/fern_01.png-07360a09c453def7eb7b41178131c17d.etc2.stex"] +dest_files=["res://.godot/imported/fern_01.png-07360a09c453def7eb7b41178131c17d.s3tc.ctex", "res://.godot/imported/fern_01.png-07360a09c453def7eb7b41178131c17d.etc2.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/fern_01_norm.jpg.import b/assets/OpenGameArt.org/rubberduck_plant_pack/fern_01_norm.jpg.import index 1e1cfa0..db2a9ce 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/fern_01_norm.jpg.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/fern_01_norm.jpg.import @@ -1,9 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://d0j8ky54jvqhx" -path="res://.godot/imported/fern_01_norm.jpg-b1330c8b802d20ec97433764d385dc78.stex" +path="res://.godot/imported/fern_01_norm.jpg-b1330c8b802d20ec97433764d385dc78.ctex" metadata={ "vram_texture": false } @@ -11,7 +11,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/fern_01_norm.jpg" -dest_files=["res://.godot/imported/fern_01_norm.jpg-b1330c8b802d20ec97433764d385dc78.stex"] +dest_files=["res://.godot/imported/fern_01_norm.jpg-b1330c8b802d20ec97433764d385dc78.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/flower_01.png.import b/assets/OpenGameArt.org/rubberduck_plant_pack/flower_01.png.import index 9fc9c25..450549e 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/flower_01.png.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/flower_01.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://xad3seqc61l0" -path.s3tc="res://.godot/imported/flower_01.png-948a8b18282575ef2c0fdde10c19ba20.s3tc.stex" -path.etc2="res://.godot/imported/flower_01.png-948a8b18282575ef2c0fdde10c19ba20.etc2.stex" +path.s3tc="res://.godot/imported/flower_01.png-948a8b18282575ef2c0fdde10c19ba20.s3tc.ctex" +path.etc2="res://.godot/imported/flower_01.png-948a8b18282575ef2c0fdde10c19ba20.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/flower_01.png" -dest_files=["res://.godot/imported/flower_01.png-948a8b18282575ef2c0fdde10c19ba20.s3tc.stex", "res://.godot/imported/flower_01.png-948a8b18282575ef2c0fdde10c19ba20.etc2.stex"] +dest_files=["res://.godot/imported/flower_01.png-948a8b18282575ef2c0fdde10c19ba20.s3tc.ctex", "res://.godot/imported/flower_01.png-948a8b18282575ef2c0fdde10c19ba20.etc2.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/flower_01_norm.jpg.import b/assets/OpenGameArt.org/rubberduck_plant_pack/flower_01_norm.jpg.import index 07a83ac..5c3070c 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/flower_01_norm.jpg.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/flower_01_norm.jpg.import @@ -1,9 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://cpc3tnrrxwpic" -path="res://.godot/imported/flower_01_norm.jpg-d882917a24de2e4e088d6d465eccde34.stex" +path="res://.godot/imported/flower_01_norm.jpg-d882917a24de2e4e088d6d465eccde34.ctex" metadata={ "vram_texture": false } @@ -11,7 +11,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/flower_01_norm.jpg" -dest_files=["res://.godot/imported/flower_01_norm.jpg-d882917a24de2e4e088d6d465eccde34.stex"] +dest_files=["res://.godot/imported/flower_01_norm.jpg-d882917a24de2e4e088d6d465eccde34.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/flower_02.png.import b/assets/OpenGameArt.org/rubberduck_plant_pack/flower_02.png.import index 897e5ad..5b6b740 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/flower_02.png.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/flower_02.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://x3m4a2ntapu2" -path.s3tc="res://.godot/imported/flower_02.png-dd6db542b65102bbeee355111b275eb4.s3tc.stex" -path.etc2="res://.godot/imported/flower_02.png-dd6db542b65102bbeee355111b275eb4.etc2.stex" +path.s3tc="res://.godot/imported/flower_02.png-dd6db542b65102bbeee355111b275eb4.s3tc.ctex" +path.etc2="res://.godot/imported/flower_02.png-dd6db542b65102bbeee355111b275eb4.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/flower_02.png" -dest_files=["res://.godot/imported/flower_02.png-dd6db542b65102bbeee355111b275eb4.s3tc.stex", "res://.godot/imported/flower_02.png-dd6db542b65102bbeee355111b275eb4.etc2.stex"] +dest_files=["res://.godot/imported/flower_02.png-dd6db542b65102bbeee355111b275eb4.s3tc.ctex", "res://.godot/imported/flower_02.png-dd6db542b65102bbeee355111b275eb4.etc2.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/flower_02_norm.jpg.import b/assets/OpenGameArt.org/rubberduck_plant_pack/flower_02_norm.jpg.import index fa92f94..4fb394f 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/flower_02_norm.jpg.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/flower_02_norm.jpg.import @@ -1,9 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://bpu8eq644pwbr" -path="res://.godot/imported/flower_02_norm.jpg-572d780b1286394b4249fe460f764029.stex" +path="res://.godot/imported/flower_02_norm.jpg-572d780b1286394b4249fe460f764029.ctex" metadata={ "vram_texture": false } @@ -11,7 +11,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/flower_02_norm.jpg" -dest_files=["res://.godot/imported/flower_02_norm.jpg-572d780b1286394b4249fe460f764029.stex"] +dest_files=["res://.godot/imported/flower_02_norm.jpg-572d780b1286394b4249fe460f764029.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/flower_02_top.png.import b/assets/OpenGameArt.org/rubberduck_plant_pack/flower_02_top.png.import index 1494427..d90cf63 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/flower_02_top.png.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/flower_02_top.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://evvlulipx47q" -path.s3tc="res://.godot/imported/flower_02_top.png-ec55cb9b25621307bbbbc6fe1608eb76.s3tc.stex" -path.etc2="res://.godot/imported/flower_02_top.png-ec55cb9b25621307bbbbc6fe1608eb76.etc2.stex" +path.s3tc="res://.godot/imported/flower_02_top.png-ec55cb9b25621307bbbbc6fe1608eb76.s3tc.ctex" +path.etc2="res://.godot/imported/flower_02_top.png-ec55cb9b25621307bbbbc6fe1608eb76.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/flower_02_top.png" -dest_files=["res://.godot/imported/flower_02_top.png-ec55cb9b25621307bbbbc6fe1608eb76.s3tc.stex", "res://.godot/imported/flower_02_top.png-ec55cb9b25621307bbbbc6fe1608eb76.etc2.stex"] +dest_files=["res://.godot/imported/flower_02_top.png-ec55cb9b25621307bbbbc6fe1608eb76.s3tc.ctex", "res://.godot/imported/flower_02_top.png-ec55cb9b25621307bbbbc6fe1608eb76.etc2.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/flower_02_top_norm.jpg.import b/assets/OpenGameArt.org/rubberduck_plant_pack/flower_02_top_norm.jpg.import index 58e389e..28b7282 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/flower_02_top_norm.jpg.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/flower_02_top_norm.jpg.import @@ -1,9 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://gwavxjfw72dr" -path="res://.godot/imported/flower_02_top_norm.jpg-f264dbe3842647ef76ae10f8252cf034.stex" +path="res://.godot/imported/flower_02_top_norm.jpg-f264dbe3842647ef76ae10f8252cf034.ctex" metadata={ "vram_texture": false } @@ -11,7 +11,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/flower_02_top_norm.jpg" -dest_files=["res://.godot/imported/flower_02_top_norm.jpg-f264dbe3842647ef76ae10f8252cf034.stex"] +dest_files=["res://.godot/imported/flower_02_top_norm.jpg-f264dbe3842647ef76ae10f8252cf034.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/flower_03.png.import b/assets/OpenGameArt.org/rubberduck_plant_pack/flower_03.png.import index aba97af..8b48c24 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/flower_03.png.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/flower_03.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://dcv08emh302ek" -path.s3tc="res://.godot/imported/flower_03.png-020cf2d511c768dd7c356ee855729338.s3tc.stex" -path.etc2="res://.godot/imported/flower_03.png-020cf2d511c768dd7c356ee855729338.etc2.stex" +path.s3tc="res://.godot/imported/flower_03.png-020cf2d511c768dd7c356ee855729338.s3tc.ctex" +path.etc2="res://.godot/imported/flower_03.png-020cf2d511c768dd7c356ee855729338.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/flower_03.png" -dest_files=["res://.godot/imported/flower_03.png-020cf2d511c768dd7c356ee855729338.s3tc.stex", "res://.godot/imported/flower_03.png-020cf2d511c768dd7c356ee855729338.etc2.stex"] +dest_files=["res://.godot/imported/flower_03.png-020cf2d511c768dd7c356ee855729338.s3tc.ctex", "res://.godot/imported/flower_03.png-020cf2d511c768dd7c356ee855729338.etc2.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/flower_03_norm.jpg.import b/assets/OpenGameArt.org/rubberduck_plant_pack/flower_03_norm.jpg.import index 6bef6a4..e705433 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/flower_03_norm.jpg.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/flower_03_norm.jpg.import @@ -1,9 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://b6t1h312eeddj" -path="res://.godot/imported/flower_03_norm.jpg-87bc32de676c6a6faf622744fe0565e0.stex" +path="res://.godot/imported/flower_03_norm.jpg-87bc32de676c6a6faf622744fe0565e0.ctex" metadata={ "vram_texture": false } @@ -11,7 +11,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/flower_03_norm.jpg" -dest_files=["res://.godot/imported/flower_03_norm.jpg-87bc32de676c6a6faf622744fe0565e0.stex"] +dest_files=["res://.godot/imported/flower_03_norm.jpg-87bc32de676c6a6faf622744fe0565e0.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/flower_bush_01.png.import b/assets/OpenGameArt.org/rubberduck_plant_pack/flower_bush_01.png.import index 2209bce..6b83248 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/flower_bush_01.png.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/flower_bush_01.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://b2s2dtkdi575x" -path.s3tc="res://.godot/imported/flower_bush_01.png-66fd3b3fcdf92e4951435f786f675b13.s3tc.stex" -path.etc2="res://.godot/imported/flower_bush_01.png-66fd3b3fcdf92e4951435f786f675b13.etc2.stex" +path.s3tc="res://.godot/imported/flower_bush_01.png-66fd3b3fcdf92e4951435f786f675b13.s3tc.ctex" +path.etc2="res://.godot/imported/flower_bush_01.png-66fd3b3fcdf92e4951435f786f675b13.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/flower_bush_01.png" -dest_files=["res://.godot/imported/flower_bush_01.png-66fd3b3fcdf92e4951435f786f675b13.s3tc.stex", "res://.godot/imported/flower_bush_01.png-66fd3b3fcdf92e4951435f786f675b13.etc2.stex"] +dest_files=["res://.godot/imported/flower_bush_01.png-66fd3b3fcdf92e4951435f786f675b13.s3tc.ctex", "res://.godot/imported/flower_bush_01.png-66fd3b3fcdf92e4951435f786f675b13.etc2.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/flower_bush_01_norm.jpg.import b/assets/OpenGameArt.org/rubberduck_plant_pack/flower_bush_01_norm.jpg.import index ac206ce..da99f50 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/flower_bush_01_norm.jpg.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/flower_bush_01_norm.jpg.import @@ -1,9 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://drmtgr23ncy0t" -path="res://.godot/imported/flower_bush_01_norm.jpg-d140572f9a96b698f559a1efcfe1076d.stex" +path="res://.godot/imported/flower_bush_01_norm.jpg-d140572f9a96b698f559a1efcfe1076d.ctex" metadata={ "vram_texture": false } @@ -11,7 +11,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/flower_bush_01_norm.jpg" -dest_files=["res://.godot/imported/flower_bush_01_norm.jpg-d140572f9a96b698f559a1efcfe1076d.stex"] +dest_files=["res://.godot/imported/flower_bush_01_norm.jpg-d140572f9a96b698f559a1efcfe1076d.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/grasses_01.png.import b/assets/OpenGameArt.org/rubberduck_plant_pack/grasses_01.png.import index 8de181f..de39264 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/grasses_01.png.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/grasses_01.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://cx0ruhfldqfcu" -path.s3tc="res://.godot/imported/grasses_01.png-f8f2f601112286111dcfb1edd534996a.s3tc.stex" -path.etc2="res://.godot/imported/grasses_01.png-f8f2f601112286111dcfb1edd534996a.etc2.stex" +path.s3tc="res://.godot/imported/grasses_01.png-f8f2f601112286111dcfb1edd534996a.s3tc.ctex" +path.etc2="res://.godot/imported/grasses_01.png-f8f2f601112286111dcfb1edd534996a.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/grasses_01.png" -dest_files=["res://.godot/imported/grasses_01.png-f8f2f601112286111dcfb1edd534996a.s3tc.stex", "res://.godot/imported/grasses_01.png-f8f2f601112286111dcfb1edd534996a.etc2.stex"] +dest_files=["res://.godot/imported/grasses_01.png-f8f2f601112286111dcfb1edd534996a.s3tc.ctex", "res://.godot/imported/grasses_01.png-f8f2f601112286111dcfb1edd534996a.etc2.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/grasses_01_norm.jpg.import b/assets/OpenGameArt.org/rubberduck_plant_pack/grasses_01_norm.jpg.import index b1e5b54..e8b9b94 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/grasses_01_norm.jpg.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/grasses_01_norm.jpg.import @@ -1,9 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://ccisgjegwf4hw" -path="res://.godot/imported/grasses_01_norm.jpg-2af03352e3400bc8fe3528d859f7f335.stex" +path="res://.godot/imported/grasses_01_norm.jpg-2af03352e3400bc8fe3528d859f7f335.ctex" metadata={ "vram_texture": false } @@ -11,7 +11,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/grasses_01_norm.jpg" -dest_files=["res://.godot/imported/grasses_01_norm.jpg-2af03352e3400bc8fe3528d859f7f335.stex"] +dest_files=["res://.godot/imported/grasses_01_norm.jpg-2af03352e3400bc8fe3528d859f7f335.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/plant-pack-1.glb.import b/assets/OpenGameArt.org/rubberduck_plant_pack/plant-pack-1.glb.import index bc55f37..19cd694 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/plant-pack-1.glb.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/plant-pack-1.glb.import @@ -3,7 +3,7 @@ importer="scene" importer_version=1 type="PackedScene" -uid="uid://jg8vl8fo1ndw" +uid="uid://dxc6qwbxhsnwu" path="res://.godot/imported/plant-pack-1.glb-ae0fc25c7cd038c06789d187eac1792e.scn" [deps] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/plant_01.png.import b/assets/OpenGameArt.org/rubberduck_plant_pack/plant_01.png.import index 0bcec83..52896d6 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/plant_01.png.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/plant_01.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://csrhcq4i67x4i" -path.s3tc="res://.godot/imported/plant_01.png-406895dc49a1858c7c7ebc35de63a313.s3tc.stex" -path.etc2="res://.godot/imported/plant_01.png-406895dc49a1858c7c7ebc35de63a313.etc2.stex" +path.s3tc="res://.godot/imported/plant_01.png-406895dc49a1858c7c7ebc35de63a313.s3tc.ctex" +path.etc2="res://.godot/imported/plant_01.png-406895dc49a1858c7c7ebc35de63a313.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/plant_01.png" -dest_files=["res://.godot/imported/plant_01.png-406895dc49a1858c7c7ebc35de63a313.s3tc.stex", "res://.godot/imported/plant_01.png-406895dc49a1858c7c7ebc35de63a313.etc2.stex"] +dest_files=["res://.godot/imported/plant_01.png-406895dc49a1858c7c7ebc35de63a313.s3tc.ctex", "res://.godot/imported/plant_01.png-406895dc49a1858c7c7ebc35de63a313.etc2.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/plant_01_norm.jpg.import b/assets/OpenGameArt.org/rubberduck_plant_pack/plant_01_norm.jpg.import index 9b7d9fd..71f4a17 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/plant_01_norm.jpg.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/plant_01_norm.jpg.import @@ -1,9 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://w0m4r2cvwkjm" -path="res://.godot/imported/plant_01_norm.jpg-2e7d26f7616deaf7b66c0cf2a040a1ef.stex" +path="res://.godot/imported/plant_01_norm.jpg-2e7d26f7616deaf7b66c0cf2a040a1ef.ctex" metadata={ "vram_texture": false } @@ -11,7 +11,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/plant_01_norm.jpg" -dest_files=["res://.godot/imported/plant_01_norm.jpg-2e7d26f7616deaf7b66c0cf2a040a1ef.stex"] +dest_files=["res://.godot/imported/plant_01_norm.jpg-2e7d26f7616deaf7b66c0cf2a040a1ef.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/plant_02.png.import b/assets/OpenGameArt.org/rubberduck_plant_pack/plant_02.png.import index 4bd9112..5774120 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/plant_02.png.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/plant_02.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://cghl8xadgqoy8" -path.s3tc="res://.godot/imported/plant_02.png-3566a1e6d6e31065c18e0ecc26819ee3.s3tc.stex" -path.etc2="res://.godot/imported/plant_02.png-3566a1e6d6e31065c18e0ecc26819ee3.etc2.stex" +path.s3tc="res://.godot/imported/plant_02.png-3566a1e6d6e31065c18e0ecc26819ee3.s3tc.ctex" +path.etc2="res://.godot/imported/plant_02.png-3566a1e6d6e31065c18e0ecc26819ee3.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/plant_02.png" -dest_files=["res://.godot/imported/plant_02.png-3566a1e6d6e31065c18e0ecc26819ee3.s3tc.stex", "res://.godot/imported/plant_02.png-3566a1e6d6e31065c18e0ecc26819ee3.etc2.stex"] +dest_files=["res://.godot/imported/plant_02.png-3566a1e6d6e31065c18e0ecc26819ee3.s3tc.ctex", "res://.godot/imported/plant_02.png-3566a1e6d6e31065c18e0ecc26819ee3.etc2.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/plant_02_norm.jpg.import b/assets/OpenGameArt.org/rubberduck_plant_pack/plant_02_norm.jpg.import index a9c74b7..48a7d53 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/plant_02_norm.jpg.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/plant_02_norm.jpg.import @@ -1,9 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://h03sfxrahi3b" -path="res://.godot/imported/plant_02_norm.jpg-0fd91d38b4aa7cdedd0ff9eff3a178ac.stex" +path="res://.godot/imported/plant_02_norm.jpg-0fd91d38b4aa7cdedd0ff9eff3a178ac.ctex" metadata={ "vram_texture": false } @@ -11,7 +11,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/plant_02_norm.jpg" -dest_files=["res://.godot/imported/plant_02_norm.jpg-0fd91d38b4aa7cdedd0ff9eff3a178ac.stex"] +dest_files=["res://.godot/imported/plant_02_norm.jpg-0fd91d38b4aa7cdedd0ff9eff3a178ac.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/shrubs_tall_01.png.import b/assets/OpenGameArt.org/rubberduck_plant_pack/shrubs_tall_01.png.import index fb73ba2..b4c4bd4 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/shrubs_tall_01.png.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/shrubs_tall_01.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://bv7wkfqjtkcfp" -path.s3tc="res://.godot/imported/shrubs_tall_01.png-151b8b69f92a8f8925729de2a4058e67.s3tc.stex" -path.etc2="res://.godot/imported/shrubs_tall_01.png-151b8b69f92a8f8925729de2a4058e67.etc2.stex" +path.s3tc="res://.godot/imported/shrubs_tall_01.png-151b8b69f92a8f8925729de2a4058e67.s3tc.ctex" +path.etc2="res://.godot/imported/shrubs_tall_01.png-151b8b69f92a8f8925729de2a4058e67.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/shrubs_tall_01.png" -dest_files=["res://.godot/imported/shrubs_tall_01.png-151b8b69f92a8f8925729de2a4058e67.s3tc.stex", "res://.godot/imported/shrubs_tall_01.png-151b8b69f92a8f8925729de2a4058e67.etc2.stex"] +dest_files=["res://.godot/imported/shrubs_tall_01.png-151b8b69f92a8f8925729de2a4058e67.s3tc.ctex", "res://.godot/imported/shrubs_tall_01.png-151b8b69f92a8f8925729de2a4058e67.etc2.ctex"] [params] diff --git a/assets/OpenGameArt.org/rubberduck_plant_pack/shrubs_tall_01_norm.jpg.import b/assets/OpenGameArt.org/rubberduck_plant_pack/shrubs_tall_01_norm.jpg.import index d828e3d..0d7f824 100644 --- a/assets/OpenGameArt.org/rubberduck_plant_pack/shrubs_tall_01_norm.jpg.import +++ b/assets/OpenGameArt.org/rubberduck_plant_pack/shrubs_tall_01_norm.jpg.import @@ -1,9 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://eq3o24dnqnnq" -path="res://.godot/imported/shrubs_tall_01_norm.jpg-d0b2c586ee87fdd681e6b23a922c97ae.stex" +path="res://.godot/imported/shrubs_tall_01_norm.jpg-d0b2c586ee87fdd681e6b23a922c97ae.ctex" metadata={ "vram_texture": false } @@ -11,7 +11,7 @@ metadata={ [deps] source_file="res://assets/OpenGameArt.org/rubberduck_plant_pack/shrubs_tall_01_norm.jpg" -dest_files=["res://.godot/imported/shrubs_tall_01_norm.jpg-d0b2c586ee87fdd681e6b23a922c97ae.stex"] +dest_files=["res://.godot/imported/shrubs_tall_01_norm.jpg-d0b2c586ee87fdd681e6b23a922c97ae.ctex"] [params] diff --git a/assets/ambientCG.com/Concrete025/Concrete025_1K_Color.jpg.import b/assets/ambientCG.com/Concrete025/Concrete025_1K_Color.jpg.import index 947cc4d..14b333c 100644 --- a/assets/ambientCG.com/Concrete025/Concrete025_1K_Color.jpg.import +++ b/assets/ambientCG.com/Concrete025/Concrete025_1K_Color.jpg.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://csoiqdj3xkxs1" -path.s3tc="res://.godot/imported/Concrete025_1K_Color.jpg-5d3892189d25ab1e5e5f0daa41f18f7a.s3tc.stex" -path.etc2="res://.godot/imported/Concrete025_1K_Color.jpg-5d3892189d25ab1e5e5f0daa41f18f7a.etc2.stex" +path.s3tc="res://.godot/imported/Concrete025_1K_Color.jpg-5d3892189d25ab1e5e5f0daa41f18f7a.s3tc.ctex" +path.etc2="res://.godot/imported/Concrete025_1K_Color.jpg-5d3892189d25ab1e5e5f0daa41f18f7a.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/ambientCG.com/Concrete025/Concrete025_1K_Color.jpg" -dest_files=["res://.godot/imported/Concrete025_1K_Color.jpg-5d3892189d25ab1e5e5f0daa41f18f7a.s3tc.stex", "res://.godot/imported/Concrete025_1K_Color.jpg-5d3892189d25ab1e5e5f0daa41f18f7a.etc2.stex"] +dest_files=["res://.godot/imported/Concrete025_1K_Color.jpg-5d3892189d25ab1e5e5f0daa41f18f7a.s3tc.ctex", "res://.godot/imported/Concrete025_1K_Color.jpg-5d3892189d25ab1e5e5f0daa41f18f7a.etc2.ctex"] [params] diff --git a/assets/ambientCG.com/Concrete025/Concrete025_1K_NormalGL.jpg.import b/assets/ambientCG.com/Concrete025/Concrete025_1K_NormalGL.jpg.import index e0f46cb..0de1e7d 100644 --- a/assets/ambientCG.com/Concrete025/Concrete025_1K_NormalGL.jpg.import +++ b/assets/ambientCG.com/Concrete025/Concrete025_1K_NormalGL.jpg.import @@ -1,9 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://c5k6asv6p2qii" -path="res://.godot/imported/Concrete025_1K_NormalGL.jpg-1f930a3c0cb0fe4d1bcaeaaf6deb4604.stex" +path="res://.godot/imported/Concrete025_1K_NormalGL.jpg-1f930a3c0cb0fe4d1bcaeaaf6deb4604.ctex" metadata={ "vram_texture": false } @@ -11,7 +11,7 @@ metadata={ [deps] source_file="res://assets/ambientCG.com/Concrete025/Concrete025_1K_NormalGL.jpg" -dest_files=["res://.godot/imported/Concrete025_1K_NormalGL.jpg-1f930a3c0cb0fe4d1bcaeaaf6deb4604.stex"] +dest_files=["res://.godot/imported/Concrete025_1K_NormalGL.jpg-1f930a3c0cb0fe4d1bcaeaaf6deb4604.ctex"] [params] diff --git a/assets/ambientCG.com/Concrete025/Concrete025_1K_Roughness.jpg.import b/assets/ambientCG.com/Concrete025/Concrete025_1K_Roughness.jpg.import index 1063f9e..2adfb5b 100644 --- a/assets/ambientCG.com/Concrete025/Concrete025_1K_Roughness.jpg.import +++ b/assets/ambientCG.com/Concrete025/Concrete025_1K_Roughness.jpg.import @@ -1,9 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://620m8uflaqea" -path="res://.godot/imported/Concrete025_1K_Roughness.jpg-3e874852312dc179ddcd83393f52e450.stex" +path="res://.godot/imported/Concrete025_1K_Roughness.jpg-3e874852312dc179ddcd83393f52e450.ctex" metadata={ "vram_texture": false } @@ -11,7 +11,7 @@ metadata={ [deps] source_file="res://assets/ambientCG.com/Concrete025/Concrete025_1K_Roughness.jpg" -dest_files=["res://.godot/imported/Concrete025_1K_Roughness.jpg-3e874852312dc179ddcd83393f52e450.stex"] +dest_files=["res://.godot/imported/Concrete025_1K_Roughness.jpg-3e874852312dc179ddcd83393f52e450.ctex"] [params] diff --git a/assets/ambientCG.com/Grass004/Grass004_1K_Color.jpg.import b/assets/ambientCG.com/Grass004/Grass004_1K_Color.jpg.import index 241b7ef..76cc907 100644 --- a/assets/ambientCG.com/Grass004/Grass004_1K_Color.jpg.import +++ b/assets/ambientCG.com/Grass004/Grass004_1K_Color.jpg.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://cho2aoqvhpf0u" -path.s3tc="res://.godot/imported/Grass004_1K_Color.jpg-1c5b9fab5a80272ada8b786de4c00e18.s3tc.stex" -path.etc2="res://.godot/imported/Grass004_1K_Color.jpg-1c5b9fab5a80272ada8b786de4c00e18.etc2.stex" +path.s3tc="res://.godot/imported/Grass004_1K_Color.jpg-1c5b9fab5a80272ada8b786de4c00e18.s3tc.ctex" +path.etc2="res://.godot/imported/Grass004_1K_Color.jpg-1c5b9fab5a80272ada8b786de4c00e18.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/ambientCG.com/Grass004/Grass004_1K_Color.jpg" -dest_files=["res://.godot/imported/Grass004_1K_Color.jpg-1c5b9fab5a80272ada8b786de4c00e18.s3tc.stex", "res://.godot/imported/Grass004_1K_Color.jpg-1c5b9fab5a80272ada8b786de4c00e18.etc2.stex"] +dest_files=["res://.godot/imported/Grass004_1K_Color.jpg-1c5b9fab5a80272ada8b786de4c00e18.s3tc.ctex", "res://.godot/imported/Grass004_1K_Color.jpg-1c5b9fab5a80272ada8b786de4c00e18.etc2.ctex"] [params] diff --git a/assets/ambientCG.com/Grass004/Grass004_1K_NormalGL.jpg.import b/assets/ambientCG.com/Grass004/Grass004_1K_NormalGL.jpg.import index 61ec5bd..5542b38 100644 --- a/assets/ambientCG.com/Grass004/Grass004_1K_NormalGL.jpg.import +++ b/assets/ambientCG.com/Grass004/Grass004_1K_NormalGL.jpg.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://wnewp7iuahdu" -path.s3tc="res://.godot/imported/Grass004_1K_NormalGL.jpg-cb13fc1b618a838bf6e7e8f363b1c2be.s3tc.stex" -path.etc2="res://.godot/imported/Grass004_1K_NormalGL.jpg-cb13fc1b618a838bf6e7e8f363b1c2be.etc2.stex" +path.s3tc="res://.godot/imported/Grass004_1K_NormalGL.jpg-cb13fc1b618a838bf6e7e8f363b1c2be.s3tc.ctex" +path.etc2="res://.godot/imported/Grass004_1K_NormalGL.jpg-cb13fc1b618a838bf6e7e8f363b1c2be.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/ambientCG.com/Grass004/Grass004_1K_NormalGL.jpg" -dest_files=["res://.godot/imported/Grass004_1K_NormalGL.jpg-cb13fc1b618a838bf6e7e8f363b1c2be.s3tc.stex", "res://.godot/imported/Grass004_1K_NormalGL.jpg-cb13fc1b618a838bf6e7e8f363b1c2be.etc2.stex"] +dest_files=["res://.godot/imported/Grass004_1K_NormalGL.jpg-cb13fc1b618a838bf6e7e8f363b1c2be.s3tc.ctex", "res://.godot/imported/Grass004_1K_NormalGL.jpg-cb13fc1b618a838bf6e7e8f363b1c2be.etc2.ctex"] [params] diff --git a/assets/ambientCG.com/Grass004/Grass004_1K_Roughness.jpg.import b/assets/ambientCG.com/Grass004/Grass004_1K_Roughness.jpg.import index 9a46ea1..a798701 100644 --- a/assets/ambientCG.com/Grass004/Grass004_1K_Roughness.jpg.import +++ b/assets/ambientCG.com/Grass004/Grass004_1K_Roughness.jpg.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://bi56aarct11p6" -path.s3tc="res://.godot/imported/Grass004_1K_Roughness.jpg-1c7dfc5c47786db99f87205b5a35c154.s3tc.stex" -path.etc2="res://.godot/imported/Grass004_1K_Roughness.jpg-1c7dfc5c47786db99f87205b5a35c154.etc2.stex" +path.s3tc="res://.godot/imported/Grass004_1K_Roughness.jpg-1c7dfc5c47786db99f87205b5a35c154.s3tc.ctex" +path.etc2="res://.godot/imported/Grass004_1K_Roughness.jpg-1c7dfc5c47786db99f87205b5a35c154.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/ambientCG.com/Grass004/Grass004_1K_Roughness.jpg" -dest_files=["res://.godot/imported/Grass004_1K_Roughness.jpg-1c7dfc5c47786db99f87205b5a35c154.s3tc.stex", "res://.godot/imported/Grass004_1K_Roughness.jpg-1c7dfc5c47786db99f87205b5a35c154.etc2.stex"] +dest_files=["res://.godot/imported/Grass004_1K_Roughness.jpg-1c7dfc5c47786db99f87205b5a35c154.s3tc.ctex", "res://.godot/imported/Grass004_1K_Roughness.jpg-1c7dfc5c47786db99f87205b5a35c154.etc2.ctex"] [params] diff --git a/assets/misc/ladder.glb.import b/assets/misc/ladder.glb.import index dcae630..9233ee8 100644 --- a/assets/misc/ladder.glb.import +++ b/assets/misc/ladder.glb.import @@ -3,7 +3,7 @@ importer="scene" importer_version=1 type="PackedScene" -uid="uid://d346yp1mwx747" +uid="uid://cc488pojchp6t" path="res://.godot/imported/ladder.glb-1a84dcd68cd66f3fcc7310393eeb5f60.scn" [deps] diff --git a/assets/misc/ring.glb.import b/assets/misc/ring.glb.import index 348e101..d9e6829 100644 --- a/assets/misc/ring.glb.import +++ b/assets/misc/ring.glb.import @@ -3,7 +3,7 @@ importer="scene" importer_version=1 type="PackedScene" -uid="uid://cnfvt5mnclsgo" +uid="uid://bca60ebmgmt46" path="res://.godot/imported/ring.glb-8023aa988f87eec2d471da40acf5ed15.scn" [deps] diff --git a/assets/sketchfab.com/basketball/scene.gltf.import b/assets/sketchfab.com/basketball/scene.gltf.import index c85e606..84d5349 100644 --- a/assets/sketchfab.com/basketball/scene.gltf.import +++ b/assets/sketchfab.com/basketball/scene.gltf.import @@ -3,7 +3,7 @@ importer="scene" importer_version=1 type="PackedScene" -uid="uid://beketqaubosqr" +uid="uid://b8sarhoxu37mk" path="res://.godot/imported/scene.gltf-4a329ef62821d5dc5f7abd98c3247998.scn" [deps] @@ -13,16 +13,16 @@ dest_files=["res://.godot/imported/scene.gltf-4a329ef62821d5dc5f7abd98c3247998.s [params] -nodes/root_type="Spatial" +nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/root_scale=1.0 meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true -meshes/light_baking=0 +meshes/light_baking=1 meshes/lightmap_texel_size=0.1 skins/use_named_skins=true animation/import=true -animation/fps=15 +animation/fps=30 import_script/path="" _subresources={} diff --git a/assets/sketchfab.com/basketball/textures/Material.001_diffuse.png.import b/assets/sketchfab.com/basketball/textures/Material.001_diffuse.png.import index 487f646..d61a227 100644 --- a/assets/sketchfab.com/basketball/textures/Material.001_diffuse.png.import +++ b/assets/sketchfab.com/basketball/textures/Material.001_diffuse.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://crlwlaplq46eq" -path.s3tc="res://.godot/imported/Material.001_diffuse.png-b5a6bca6098f170e80485bb7d263c870.s3tc.stex" -path.etc2="res://.godot/imported/Material.001_diffuse.png-b5a6bca6098f170e80485bb7d263c870.etc2.stex" +path.s3tc="res://.godot/imported/Material.001_diffuse.png-b5a6bca6098f170e80485bb7d263c870.s3tc.ctex" +path.etc2="res://.godot/imported/Material.001_diffuse.png-b5a6bca6098f170e80485bb7d263c870.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/sketchfab.com/basketball/textures/Material.001_diffuse.png" -dest_files=["res://.godot/imported/Material.001_diffuse.png-b5a6bca6098f170e80485bb7d263c870.s3tc.stex", "res://.godot/imported/Material.001_diffuse.png-b5a6bca6098f170e80485bb7d263c870.etc2.stex"] +dest_files=["res://.godot/imported/Material.001_diffuse.png-b5a6bca6098f170e80485bb7d263c870.s3tc.ctex", "res://.godot/imported/Material.001_diffuse.png-b5a6bca6098f170e80485bb7d263c870.etc2.ctex"] [params] diff --git a/assets/sketchfab.com/basketball/textures/Material.001_specularGlossiness.png.import b/assets/sketchfab.com/basketball/textures/Material.001_specularGlossiness.png.import index 422927c..4ade61b 100644 --- a/assets/sketchfab.com/basketball/textures/Material.001_specularGlossiness.png.import +++ b/assets/sketchfab.com/basketball/textures/Material.001_specularGlossiness.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://rtw42fs01677" -path.s3tc="res://.godot/imported/Material.001_specularGlossiness.png-7b41b5035f0d0b105a8356d6e09800bb.s3tc.stex" -path.etc2="res://.godot/imported/Material.001_specularGlossiness.png-7b41b5035f0d0b105a8356d6e09800bb.etc2.stex" +path.s3tc="res://.godot/imported/Material.001_specularGlossiness.png-7b41b5035f0d0b105a8356d6e09800bb.s3tc.ctex" +path.etc2="res://.godot/imported/Material.001_specularGlossiness.png-7b41b5035f0d0b105a8356d6e09800bb.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/sketchfab.com/basketball/textures/Material.001_specularGlossiness.png" -dest_files=["res://.godot/imported/Material.001_specularGlossiness.png-7b41b5035f0d0b105a8356d6e09800bb.s3tc.stex", "res://.godot/imported/Material.001_specularGlossiness.png-7b41b5035f0d0b105a8356d6e09800bb.etc2.stex"] +dest_files=["res://.godot/imported/Material.001_specularGlossiness.png-7b41b5035f0d0b105a8356d6e09800bb.s3tc.ctex", "res://.godot/imported/Material.001_specularGlossiness.png-7b41b5035f0d0b105a8356d6e09800bb.etc2.ctex"] [params] diff --git a/assets/wahooney.itch.io/blue_grid.png.import b/assets/wahooney.itch.io/blue_grid.png.import index 2f423ad..5c9557a 100644 --- a/assets/wahooney.itch.io/blue_grid.png.import +++ b/assets/wahooney.itch.io/blue_grid.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://cl01r5glqm4cs" -path.s3tc="res://.godot/imported/blue_grid.png-785a01a697c0777376608d81454e4958.s3tc.stex" -path.etc2="res://.godot/imported/blue_grid.png-785a01a697c0777376608d81454e4958.etc2.stex" +path.s3tc="res://.godot/imported/blue_grid.png-785a01a697c0777376608d81454e4958.s3tc.ctex" +path.etc2="res://.godot/imported/blue_grid.png-785a01a697c0777376608d81454e4958.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/wahooney.itch.io/blue_grid.png" -dest_files=["res://.godot/imported/blue_grid.png-785a01a697c0777376608d81454e4958.s3tc.stex", "res://.godot/imported/blue_grid.png-785a01a697c0777376608d81454e4958.etc2.stex"] +dest_files=["res://.godot/imported/blue_grid.png-785a01a697c0777376608d81454e4958.s3tc.ctex", "res://.godot/imported/blue_grid.png-785a01a697c0777376608d81454e4958.etc2.ctex"] [params] @@ -31,6 +31,6 @@ roughness/src_normal="" process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false -process/HDR_as_SRGB=false +process/hdr_as_srgb=false process/size_limit=0 detect_3d/compress_to=0 diff --git a/assets/wahooney.itch.io/brown_grid.png.import b/assets/wahooney.itch.io/brown_grid.png.import index d0a124e..0d9fa93 100644 --- a/assets/wahooney.itch.io/brown_grid.png.import +++ b/assets/wahooney.itch.io/brown_grid.png.import @@ -1,9 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://t7mljfmlqva1" -path="res://.godot/imported/brown_grid.png-5cbd37038e3ea1da588854d56a43bef6.stex" +path="res://.godot/imported/brown_grid.png-5cbd37038e3ea1da588854d56a43bef6.ctex" metadata={ "vram_texture": false } @@ -11,7 +11,7 @@ metadata={ [deps] source_file="res://assets/wahooney.itch.io/brown_grid.png" -dest_files=["res://.godot/imported/brown_grid.png-5cbd37038e3ea1da588854d56a43bef6.stex"] +dest_files=["res://.godot/imported/brown_grid.png-5cbd37038e3ea1da588854d56a43bef6.ctex"] [params] @@ -29,6 +29,6 @@ roughness/src_normal="" process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false -process/HDR_as_SRGB=false +process/hdr_as_srgb=false process/size_limit=0 detect_3d/compress_to=1 diff --git a/assets/wahooney.itch.io/green_grid.png.import b/assets/wahooney.itch.io/green_grid.png.import index 225b53b..963ead4 100644 --- a/assets/wahooney.itch.io/green_grid.png.import +++ b/assets/wahooney.itch.io/green_grid.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://c42u81snu2y8r" -path.s3tc="res://.godot/imported/green_grid.png-e9d81b3d42c428786d9997769a6729a2.s3tc.stex" -path.etc2="res://.godot/imported/green_grid.png-e9d81b3d42c428786d9997769a6729a2.etc2.stex" +path.s3tc="res://.godot/imported/green_grid.png-e9d81b3d42c428786d9997769a6729a2.s3tc.ctex" +path.etc2="res://.godot/imported/green_grid.png-e9d81b3d42c428786d9997769a6729a2.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/wahooney.itch.io/green_grid.png" -dest_files=["res://.godot/imported/green_grid.png-e9d81b3d42c428786d9997769a6729a2.s3tc.stex", "res://.godot/imported/green_grid.png-e9d81b3d42c428786d9997769a6729a2.etc2.stex"] +dest_files=["res://.godot/imported/green_grid.png-e9d81b3d42c428786d9997769a6729a2.s3tc.ctex", "res://.godot/imported/green_grid.png-e9d81b3d42c428786d9997769a6729a2.etc2.ctex"] [params] @@ -31,6 +31,6 @@ roughness/src_normal="" process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false -process/HDR_as_SRGB=false +process/hdr_as_srgb=false process/size_limit=0 detect_3d/compress_to=0 diff --git a/assets/wahooney.itch.io/white_grid.png.import b/assets/wahooney.itch.io/white_grid.png.import index 6d260aa..89d3e0e 100644 --- a/assets/wahooney.itch.io/white_grid.png.import +++ b/assets/wahooney.itch.io/white_grid.png.import @@ -1,10 +1,10 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://bi5lmbe02yrse" -path.s3tc="res://.godot/imported/white_grid.png-c97900fbca7fa76e931b70c777bf36eb.s3tc.stex" -path.etc2="res://.godot/imported/white_grid.png-c97900fbca7fa76e931b70c777bf36eb.etc2.stex" +path.s3tc="res://.godot/imported/white_grid.png-c97900fbca7fa76e931b70c777bf36eb.s3tc.ctex" +path.etc2="res://.godot/imported/white_grid.png-c97900fbca7fa76e931b70c777bf36eb.etc2.ctex" metadata={ "imported_formats": ["s3tc", "etc2"], "vram_texture": true @@ -13,7 +13,7 @@ metadata={ [deps] source_file="res://assets/wahooney.itch.io/white_grid.png" -dest_files=["res://.godot/imported/white_grid.png-c97900fbca7fa76e931b70c777bf36eb.s3tc.stex", "res://.godot/imported/white_grid.png-c97900fbca7fa76e931b70c777bf36eb.etc2.stex"] +dest_files=["res://.godot/imported/white_grid.png-c97900fbca7fa76e931b70c777bf36eb.s3tc.ctex", "res://.godot/imported/white_grid.png-c97900fbca7fa76e931b70c777bf36eb.etc2.ctex"] [params] @@ -31,6 +31,6 @@ roughness/src_normal="" process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false -process/HDR_as_SRGB=false +process/hdr_as_srgb=false process/size_limit=0 detect_3d/compress_to=0 diff --git a/default_action_map.tres b/default_action_map.tres deleted file mode 100644 index d00c086..0000000 --- a/default_action_map.tres +++ /dev/null @@ -1,496 +0,0 @@ -[gd_resource type="OpenXRActionMap" load_steps=113 format=3] - -[sub_resource type="OpenXRAction" id="OpenXRAction_hdf88"] -resource_name = "trigger" -localized_name = "Trigger" -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_xnacx"] -resource_name = "trigger_click" -localized_name = "Trigger click" -action_type = 0 -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_8sy47"] -resource_name = "trigger_touch" -localized_name = "Trigger touching" -action_type = 0 -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_ile17"] -resource_name = "grip" -localized_name = "Grip" -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_d433w"] -resource_name = "grip_click" -localized_name = "Grip click" -action_type = 0 -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_7kk58"] -resource_name = "grip_touch" -localized_name = "Grip touching" -action_type = 0 -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_hbfkf"] -resource_name = "primary" -localized_name = "Primary joystick/thumbstick/trackpad" -action_type = 2 -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_qqbw0"] -resource_name = "primary_click" -localized_name = "Primary joystick/thumbstick/trackpad click" -action_type = 0 -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_r8v5g"] -resource_name = "primary_touch" -localized_name = "Primary joystick/thumbstick/trackpad touching" -action_type = 0 -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_0lttv"] -resource_name = "secondary" -localized_name = "Secondary joystick/thumbstick/trackpad" -action_type = 2 -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_ljedr"] -resource_name = "secondary_click" -localized_name = "Secondary joystick/thumbstick/trackpad click" -action_type = 0 -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_2agqi"] -resource_name = "secondary_touch" -localized_name = "Secondary joystick/thumbstick/trackpad touching" -action_type = 0 -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_xgjw8"] -resource_name = "menu_button" -localized_name = "Menu button" -action_type = 0 -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_2orp2"] -resource_name = "select_button" -localized_name = "Select button" -action_type = 0 -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_vc7ek"] -resource_name = "ax_button" -localized_name = "A/X button" -action_type = 0 -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_xmus4"] -resource_name = "ax_touch" -localized_name = "A/X touching" -action_type = 0 -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_7yaau"] -resource_name = "by_button" -localized_name = "B/Y button" -action_type = 0 -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_s4rd0"] -resource_name = "by_touch" -localized_name = "B/Y touching" -action_type = 0 -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_20ph8"] -resource_name = "default_pose" -localized_name = "Default pose" -action_type = 3 -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_cdnk4"] -resource_name = "aim_pose" -localized_name = "Aim pose" -action_type = 3 -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_lhjdf"] -resource_name = "grip_pose" -localized_name = "Grip pose" -action_type = 3 -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRAction" id="OpenXRAction_hsoe1"] -resource_name = "haptic" -localized_name = "Haptic" -action_type = 4 -toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") - -[sub_resource type="OpenXRActionSet" id="OpenXRActionSet_gy6s7"] -resource_name = "godot" -localized_name = "Godot action set" -actions = [SubResource( "OpenXRAction_hdf88" ), SubResource( "OpenXRAction_xnacx" ), SubResource( "OpenXRAction_8sy47" ), SubResource( "OpenXRAction_ile17" ), SubResource( "OpenXRAction_d433w" ), SubResource( "OpenXRAction_7kk58" ), SubResource( "OpenXRAction_hbfkf" ), SubResource( "OpenXRAction_qqbw0" ), SubResource( "OpenXRAction_r8v5g" ), SubResource( "OpenXRAction_0lttv" ), SubResource( "OpenXRAction_ljedr" ), SubResource( "OpenXRAction_2agqi" ), SubResource( "OpenXRAction_xgjw8" ), SubResource( "OpenXRAction_2orp2" ), SubResource( "OpenXRAction_vc7ek" ), SubResource( "OpenXRAction_xmus4" ), SubResource( "OpenXRAction_7yaau" ), SubResource( "OpenXRAction_s4rd0" ), SubResource( "OpenXRAction_20ph8" ), SubResource( "OpenXRAction_cdnk4" ), SubResource( "OpenXRAction_lhjdf" ), SubResource( "OpenXRAction_hsoe1" )] - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_nnxan"] -action = SubResource( "OpenXRAction_20ph8" ) -paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_e6iho"] -action = SubResource( "OpenXRAction_cdnk4" ) -paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_m03mg"] -action = SubResource( "OpenXRAction_lhjdf" ) -paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_11cq5"] -action = SubResource( "OpenXRAction_xgjw8" ) -paths = PackedStringArray("/user/hand/left/input/menu/click", "/user/hand/right/input/menu/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_w86yb"] -action = SubResource( "OpenXRAction_2orp2" ) -paths = PackedStringArray("/user/hand/left/input/select/click", "/user/hand/right/input/select/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_3b5wu"] -action = SubResource( "OpenXRAction_hsoe1" ) -paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic") - -[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_430jp"] -interaction_profile_path = "/interaction_profiles/khr/simple_controller" -bindings = [SubResource( "OpenXRIPBinding_nnxan" ), SubResource( "OpenXRIPBinding_e6iho" ), SubResource( "OpenXRIPBinding_m03mg" ), SubResource( "OpenXRIPBinding_11cq5" ), SubResource( "OpenXRIPBinding_w86yb" ), SubResource( "OpenXRIPBinding_3b5wu" )] - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ajl3e"] -action = SubResource( "OpenXRAction_20ph8" ) -paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_7iq7o"] -action = SubResource( "OpenXRAction_cdnk4" ) -paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_f753q"] -action = SubResource( "OpenXRAction_lhjdf" ) -paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_cy5fl"] -action = SubResource( "OpenXRAction_xgjw8" ) -paths = PackedStringArray("/user/hand/left/input/menu/click", "/user/hand/right/input/menu/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_a4hgo"] -action = SubResource( "OpenXRAction_2orp2" ) -paths = PackedStringArray("/user/hand/left/input/system/click", "/user/hand/right/input/system/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_8eeko"] -action = SubResource( "OpenXRAction_hdf88" ) -paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_dk4f4"] -action = SubResource( "OpenXRAction_xnacx" ) -paths = PackedStringArray("/user/hand/left/input/trigger/click", "/user/hand/right/input/trigger/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_e2d6b"] -action = SubResource( "OpenXRAction_ile17" ) -paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_e3inw"] -action = SubResource( "OpenXRAction_d433w" ) -paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_f4oon"] -action = SubResource( "OpenXRAction_hbfkf" ) -paths = PackedStringArray("/user/hand/left/input/trackpad", "/user/hand/right/input/trackpad") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_x7pdb"] -action = SubResource( "OpenXRAction_qqbw0" ) -paths = PackedStringArray("/user/hand/left/input/trackpad/click", "/user/hand/right/input/trackpad/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_0yupn"] -action = SubResource( "OpenXRAction_r8v5g" ) -paths = PackedStringArray("/user/hand/left/input/trackpad/touch", "/user/hand/right/input/trackpad/touch") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_8no7j"] -action = SubResource( "OpenXRAction_hsoe1" ) -paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic") - -[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_lmhii"] -interaction_profile_path = "/interaction_profiles/htc/vive_controller" -bindings = [SubResource( "OpenXRIPBinding_ajl3e" ), SubResource( "OpenXRIPBinding_7iq7o" ), SubResource( "OpenXRIPBinding_f753q" ), SubResource( "OpenXRIPBinding_cy5fl" ), SubResource( "OpenXRIPBinding_a4hgo" ), SubResource( "OpenXRIPBinding_8eeko" ), SubResource( "OpenXRIPBinding_dk4f4" ), SubResource( "OpenXRIPBinding_e2d6b" ), SubResource( "OpenXRIPBinding_e3inw" ), SubResource( "OpenXRIPBinding_f4oon" ), SubResource( "OpenXRIPBinding_x7pdb" ), SubResource( "OpenXRIPBinding_0yupn" ), SubResource( "OpenXRIPBinding_8no7j" )] - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_7iy8m"] -action = SubResource( "OpenXRAction_20ph8" ) -paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_kapns"] -action = SubResource( "OpenXRAction_cdnk4" ) -paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_62vj1"] -action = SubResource( "OpenXRAction_lhjdf" ) -paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_f0cg2"] -action = SubResource( "OpenXRAction_xgjw8" ) -paths = PackedStringArray("/user/hand/left/input/menu/click", "/user/hand/right/input/menu/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_n5ppo"] -action = SubResource( "OpenXRAction_hdf88" ) -paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_2api5"] -action = SubResource( "OpenXRAction_xnacx" ) -paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_jlqas"] -action = SubResource( "OpenXRAction_ile17" ) -paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_j1uwy"] -action = SubResource( "OpenXRAction_d433w" ) -paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_s5ngo"] -action = SubResource( "OpenXRAction_hbfkf" ) -paths = PackedStringArray("/user/hand/left/input/thumbstick", "/user/hand/right/input/thumbstick") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_hja8p"] -action = SubResource( "OpenXRAction_qqbw0" ) -paths = PackedStringArray("/user/hand/left/input/thumbstick/click", "/user/hand/right/input/thumbstick/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_f4u23"] -action = SubResource( "OpenXRAction_0lttv" ) -paths = PackedStringArray("/user/hand/left/input/trackpad", "/user/hand/right/input/trackpad") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_hwwkq"] -action = SubResource( "OpenXRAction_ljedr" ) -paths = PackedStringArray("/user/hand/left/input/trackpad/click", "/user/hand/right/input/trackpad/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_vj544"] -action = SubResource( "OpenXRAction_2agqi" ) -paths = PackedStringArray("/user/hand/left/input/trackpad/touch", "/user/hand/right/input/trackpad/touch") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_vhne1"] -action = SubResource( "OpenXRAction_hsoe1" ) -paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic") - -[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_bovpo"] -interaction_profile_path = "/interaction_profiles/microsoft/motion_controller" -bindings = [SubResource( "OpenXRIPBinding_7iy8m" ), SubResource( "OpenXRIPBinding_kapns" ), SubResource( "OpenXRIPBinding_62vj1" ), SubResource( "OpenXRIPBinding_f0cg2" ), SubResource( "OpenXRIPBinding_n5ppo" ), SubResource( "OpenXRIPBinding_2api5" ), SubResource( "OpenXRIPBinding_jlqas" ), SubResource( "OpenXRIPBinding_j1uwy" ), SubResource( "OpenXRIPBinding_s5ngo" ), SubResource( "OpenXRIPBinding_hja8p" ), SubResource( "OpenXRIPBinding_f4u23" ), SubResource( "OpenXRIPBinding_hwwkq" ), SubResource( "OpenXRIPBinding_vj544" ), SubResource( "OpenXRIPBinding_vhne1" )] - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_qd836"] -action = SubResource( "OpenXRAction_20ph8" ) -paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_m4va7"] -action = SubResource( "OpenXRAction_cdnk4" ) -paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_e7o37"] -action = SubResource( "OpenXRAction_lhjdf" ) -paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_iu0h1"] -action = SubResource( "OpenXRAction_xgjw8" ) -paths = PackedStringArray("/user/hand/left/input/menu/click", "/user/hand/right/input/menu/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_efp54"] -action = SubResource( "OpenXRAction_vc7ek" ) -paths = PackedStringArray("/user/hand/left/input/x/click", "/user/hand/right/input/a/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_6kv8r"] -action = SubResource( "OpenXRAction_7yaau" ) -paths = PackedStringArray("/user/hand/left/input/y/click", "/user/hand/right/input/b/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_dw5jt"] -action = SubResource( "OpenXRAction_hdf88" ) -paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_883ox"] -action = SubResource( "OpenXRAction_xnacx" ) -paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_fi6qe"] -action = SubResource( "OpenXRAction_ile17" ) -paths = PackedStringArray("/user/hand/left/input/squeeze/value", "/user/hand/right/input/squeeze/value") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_hfndm"] -action = SubResource( "OpenXRAction_d433w" ) -paths = PackedStringArray("/user/hand/left/input/squeeze/value", "/user/hand/right/input/squeeze/value") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_dm0at"] -action = SubResource( "OpenXRAction_hbfkf" ) -paths = PackedStringArray("/user/hand/left/input/thumbstick", "/user/hand/right/input/thumbstick") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_b060e"] -action = SubResource( "OpenXRAction_qqbw0" ) -paths = PackedStringArray("/user/hand/left/input/thumbstick/click", "/user/hand/right/input/thumbstick/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_dykwl"] -action = SubResource( "OpenXRAction_hsoe1" ) -paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic") - -[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_kmqp4"] -interaction_profile_path = "/interaction_profiles/hp/mixed_reality_controller" -bindings = [SubResource( "OpenXRIPBinding_qd836" ), SubResource( "OpenXRIPBinding_m4va7" ), SubResource( "OpenXRIPBinding_e7o37" ), SubResource( "OpenXRIPBinding_iu0h1" ), SubResource( "OpenXRIPBinding_efp54" ), SubResource( "OpenXRIPBinding_6kv8r" ), SubResource( "OpenXRIPBinding_dw5jt" ), SubResource( "OpenXRIPBinding_883ox" ), SubResource( "OpenXRIPBinding_fi6qe" ), SubResource( "OpenXRIPBinding_hfndm" ), SubResource( "OpenXRIPBinding_dm0at" ), SubResource( "OpenXRIPBinding_b060e" ), SubResource( "OpenXRIPBinding_dykwl" )] - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_qyypq"] -action = SubResource( "OpenXRAction_20ph8" ) -paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_csoh6"] -action = SubResource( "OpenXRAction_cdnk4" ) -paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_8b6gs"] -action = SubResource( "OpenXRAction_lhjdf" ) -paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_nrm7r"] -action = SubResource( "OpenXRAction_xgjw8" ) -paths = PackedStringArray("/user/hand/left/input/menu/click", "/user/hand/right/input/system/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_urtrr"] -action = SubResource( "OpenXRAction_vc7ek" ) -paths = PackedStringArray("/user/hand/left/input/x/click", "/user/hand/right/input/a/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_y6qob"] -action = SubResource( "OpenXRAction_xmus4" ) -paths = PackedStringArray("/user/hand/left/input/x/touch", "/user/hand/right/input/a/touch") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_66oxc"] -action = SubResource( "OpenXRAction_7yaau" ) -paths = PackedStringArray("/user/hand/left/input/y/click", "/user/hand/right/input/b/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_thscd"] -action = SubResource( "OpenXRAction_s4rd0" ) -paths = PackedStringArray("/user/hand/left/input/y/touch", "/user/hand/right/input/b/touch") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_lug68"] -action = SubResource( "OpenXRAction_hdf88" ) -paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_jgbmw"] -action = SubResource( "OpenXRAction_xnacx" ) -paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_vltcd"] -action = SubResource( "OpenXRAction_8sy47" ) -paths = PackedStringArray("/user/hand/left/input/trigger/touch", "/user/hand/right/input/trigger/touch") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_qql5h"] -action = SubResource( "OpenXRAction_ile17" ) -paths = PackedStringArray("/user/hand/left/input/squeeze/value", "/user/hand/right/input/squeeze/value") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_mdgth"] -action = SubResource( "OpenXRAction_d433w" ) -paths = PackedStringArray("/user/hand/left/input/squeeze/value", "/user/hand/right/input/squeeze/value") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_1c0ou"] -action = SubResource( "OpenXRAction_hbfkf" ) -paths = PackedStringArray("/user/hand/left/input/thumbstick", "/user/hand/right/input/thumbstick") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_dk1lx"] -action = SubResource( "OpenXRAction_qqbw0" ) -paths = PackedStringArray("/user/hand/left/input/thumbstick/click", "/user/hand/right/input/thumbstick/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_7cooq"] -action = SubResource( "OpenXRAction_r8v5g" ) -paths = PackedStringArray("/user/hand/left/input/thumbstick/touch", "/user/hand/right/input/thumbstick/touch") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_y6760"] -action = SubResource( "OpenXRAction_hsoe1" ) -paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic") - -[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_kkx4j"] -interaction_profile_path = "/interaction_profiles/oculus/touch_controller" -bindings = [SubResource( "OpenXRIPBinding_qyypq" ), SubResource( "OpenXRIPBinding_csoh6" ), SubResource( "OpenXRIPBinding_8b6gs" ), SubResource( "OpenXRIPBinding_nrm7r" ), SubResource( "OpenXRIPBinding_urtrr" ), SubResource( "OpenXRIPBinding_y6qob" ), SubResource( "OpenXRIPBinding_66oxc" ), SubResource( "OpenXRIPBinding_thscd" ), SubResource( "OpenXRIPBinding_lug68" ), SubResource( "OpenXRIPBinding_jgbmw" ), SubResource( "OpenXRIPBinding_vltcd" ), SubResource( "OpenXRIPBinding_qql5h" ), SubResource( "OpenXRIPBinding_mdgth" ), SubResource( "OpenXRIPBinding_1c0ou" ), SubResource( "OpenXRIPBinding_dk1lx" ), SubResource( "OpenXRIPBinding_7cooq" ), SubResource( "OpenXRIPBinding_y6760" )] - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_cjnit"] -action = SubResource( "OpenXRAction_20ph8" ) -paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_hg15e"] -action = SubResource( "OpenXRAction_cdnk4" ) -paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_pc1lc"] -action = SubResource( "OpenXRAction_lhjdf" ) -paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_do2j2"] -action = SubResource( "OpenXRAction_xgjw8" ) -paths = PackedStringArray("/user/hand/left/input/system/click", "/user/hand/right/input/system/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_f80c7"] -action = SubResource( "OpenXRAction_vc7ek" ) -paths = PackedStringArray("/user/hand/left/input/a/click", "/user/hand/right/input/a/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_cfeof"] -action = SubResource( "OpenXRAction_xmus4" ) -paths = PackedStringArray("/user/hand/left/input/a/touch", "/user/hand/right/input/a/touch") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_soooj"] -action = SubResource( "OpenXRAction_7yaau" ) -paths = PackedStringArray("/user/hand/left/input/b/click", "/user/hand/right/input/b/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_o6bkh"] -action = SubResource( "OpenXRAction_s4rd0" ) -paths = PackedStringArray("/user/hand/left/input/b/touch", "/user/hand/right/input/b/touch") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_fhmwc"] -action = SubResource( "OpenXRAction_hdf88" ) -paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_q0g76"] -action = SubResource( "OpenXRAction_xnacx" ) -paths = PackedStringArray("/user/hand/left/input/trigger/click", "/user/hand/right/input/trigger/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_hc4kl"] -action = SubResource( "OpenXRAction_8sy47" ) -paths = PackedStringArray("/user/hand/left/input/trigger/touch", "/user/hand/right/input/trigger/touch") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_sh2yb"] -action = SubResource( "OpenXRAction_ile17" ) -paths = PackedStringArray("/user/hand/left/input/squeeze/value", "/user/hand/right/input/squeeze/value") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_afrgo"] -action = SubResource( "OpenXRAction_d433w" ) -paths = PackedStringArray("/user/hand/left/input/squeeze/value", "/user/hand/right/input/squeeze/value") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_bcn8q"] -action = SubResource( "OpenXRAction_hbfkf" ) -paths = PackedStringArray("/user/hand/left/input/thumbstick", "/user/hand/right/input/thumbstick") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_xglfq"] -action = SubResource( "OpenXRAction_qqbw0" ) -paths = PackedStringArray("/user/hand/left/input/thumbstick/click", "/user/hand/right/input/thumbstick/click") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_j001u"] -action = SubResource( "OpenXRAction_r8v5g" ) -paths = PackedStringArray("/user/hand/left/input/thumbstick/touch", "/user/hand/right/input/thumbstick/touch") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_jycpi"] -action = SubResource( "OpenXRAction_0lttv" ) -paths = PackedStringArray("/user/hand/left/input/trackpad", "/user/hand/right/input/trackpad") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_klgnd"] -action = SubResource( "OpenXRAction_ljedr" ) -paths = PackedStringArray("/user/hand/left/input/trackpad/force", "/user/hand/right/input/trackpad/force") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_vldge"] -action = SubResource( "OpenXRAction_2agqi" ) -paths = PackedStringArray("/user/hand/left/input/trackpad/touch", "/user/hand/right/input/trackpad/touch") - -[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_embd7"] -action = SubResource( "OpenXRAction_hsoe1" ) -paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic") - -[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_vrini"] -interaction_profile_path = "/interaction_profiles/valve/index_controller" -bindings = [SubResource( "OpenXRIPBinding_cjnit" ), SubResource( "OpenXRIPBinding_hg15e" ), SubResource( "OpenXRIPBinding_pc1lc" ), SubResource( "OpenXRIPBinding_do2j2" ), SubResource( "OpenXRIPBinding_f80c7" ), SubResource( "OpenXRIPBinding_cfeof" ), SubResource( "OpenXRIPBinding_soooj" ), SubResource( "OpenXRIPBinding_o6bkh" ), SubResource( "OpenXRIPBinding_fhmwc" ), SubResource( "OpenXRIPBinding_q0g76" ), SubResource( "OpenXRIPBinding_hc4kl" ), SubResource( "OpenXRIPBinding_sh2yb" ), SubResource( "OpenXRIPBinding_afrgo" ), SubResource( "OpenXRIPBinding_bcn8q" ), SubResource( "OpenXRIPBinding_xglfq" ), SubResource( "OpenXRIPBinding_j001u" ), SubResource( "OpenXRIPBinding_jycpi" ), SubResource( "OpenXRIPBinding_klgnd" ), SubResource( "OpenXRIPBinding_vldge" ), SubResource( "OpenXRIPBinding_embd7" )] - -[resource] -action_sets = [SubResource( "OpenXRActionSet_gy6s7" )] -interaction_profiles = [SubResource( "OpenXRInteractionProfile_430jp" ), SubResource( "OpenXRInteractionProfile_lmhii" ), SubResource( "OpenXRInteractionProfile_bovpo" ), SubResource( "OpenXRInteractionProfile_kmqp4" ), SubResource( "OpenXRInteractionProfile_kkx4j" ), SubResource( "OpenXRInteractionProfile_vrini" )] diff --git a/icon.png.import b/icon.png.import index 1ca5127..ae27ece 100644 --- a/icon.png.import +++ b/icon.png.import @@ -1,9 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://b6mk71x64gvb1" -path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" +path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex" metadata={ "vram_texture": false } @@ -11,7 +11,7 @@ metadata={ [deps] source_file="res://icon.png" -dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"] +dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"] [params] @@ -29,7 +29,6 @@ roughness/src_normal="" process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false -process/HDR_as_SRGB=false +process/hdr_as_srgb=false process/size_limit=0 detect_3d/compress_to=1 -svg/scale=1.0 diff --git a/openxr_action_map.tres b/openxr_action_map.tres new file mode 100644 index 0000000..eff5649 --- /dev/null +++ b/openxr_action_map.tres @@ -0,0 +1,736 @@ +[gd_resource type="OpenXRActionMap" load_steps=173 format=3 uid="uid://b8wwtfa35kyux"] + +[sub_resource type="OpenXRAction" id="OpenXRAction_pbb4w"] +resource_name = "trigger" +localized_name = "Trigger" +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_60phl"] +resource_name = "trigger_click" +localized_name = "Trigger click" +action_type = 0 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_kk8vd"] +resource_name = "trigger_touch" +localized_name = "Trigger touching" +action_type = 0 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_y8408"] +resource_name = "grip" +localized_name = "Grip" +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_rkpo8"] +resource_name = "grip_click" +localized_name = "Grip click" +action_type = 0 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_0517a"] +resource_name = "grip_touch" +localized_name = "Grip touching" +action_type = 0 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_dfvcn"] +resource_name = "primary" +localized_name = "Primary joystick/thumbstick/trackpad" +action_type = 2 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_a6qb3"] +resource_name = "primary_click" +localized_name = "Primary joystick/thumbstick/trackpad click" +action_type = 0 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_a82qe"] +resource_name = "primary_touch" +localized_name = "Primary joystick/thumbstick/trackpad touching" +action_type = 0 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_1erbl"] +resource_name = "secondary" +localized_name = "Secondary joystick/thumbstick/trackpad" +action_type = 2 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_5asx3"] +resource_name = "secondary_click" +localized_name = "Secondary joystick/thumbstick/trackpad click" +action_type = 0 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_2rluw"] +resource_name = "secondary_touch" +localized_name = "Secondary joystick/thumbstick/trackpad touching" +action_type = 0 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_pkbba"] +resource_name = "menu_button" +localized_name = "Menu button" +action_type = 0 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_u6yfa"] +resource_name = "select_button" +localized_name = "Select button" +action_type = 0 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_20r6e"] +resource_name = "ax_button" +localized_name = "A/X button" +action_type = 0 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_8kusl"] +resource_name = "ax_touch" +localized_name = "A/X touching" +action_type = 0 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_1gdf8"] +resource_name = "by_button" +localized_name = "B/Y button" +action_type = 0 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_4cts3"] +resource_name = "by_touch" +localized_name = "B/Y touching" +action_type = 0 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_qs0co"] +resource_name = "default_pose" +localized_name = "Default pose" +action_type = 3 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_m1of6"] +resource_name = "aim_pose" +localized_name = "Aim pose" +action_type = 3 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_ehp0d"] +resource_name = "grip_pose" +localized_name = "Grip pose" +action_type = 3 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_fo355"] +resource_name = "haptic" +localized_name = "Haptic" +action_type = 4 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRActionSet" id="OpenXRActionSet_64aoq"] +resource_name = "godot" +localized_name = "Godot action set" +actions = [SubResource( "OpenXRAction_pbb4w" ), SubResource( "OpenXRAction_60phl" ), SubResource( "OpenXRAction_kk8vd" ), SubResource( "OpenXRAction_y8408" ), SubResource( "OpenXRAction_rkpo8" ), SubResource( "OpenXRAction_0517a" ), SubResource( "OpenXRAction_dfvcn" ), SubResource( "OpenXRAction_a6qb3" ), SubResource( "OpenXRAction_a82qe" ), SubResource( "OpenXRAction_1erbl" ), SubResource( "OpenXRAction_5asx3" ), SubResource( "OpenXRAction_2rluw" ), SubResource( "OpenXRAction_pkbba" ), SubResource( "OpenXRAction_u6yfa" ), SubResource( "OpenXRAction_20r6e" ), SubResource( "OpenXRAction_8kusl" ), SubResource( "OpenXRAction_1gdf8" ), SubResource( "OpenXRAction_4cts3" ), SubResource( "OpenXRAction_qs0co" ), SubResource( "OpenXRAction_m1of6" ), SubResource( "OpenXRAction_ehp0d" ), SubResource( "OpenXRAction_fo355" )] + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_iyn5o"] +action = SubResource( "OpenXRAction_qs0co" ) +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_gjny4"] +action = SubResource( "OpenXRAction_m1of6" ) +paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_52qy7"] +action = SubResource( "OpenXRAction_ehp0d" ) +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ktdrj"] +action = SubResource( "OpenXRAction_pkbba" ) +paths = PackedStringArray("/user/hand/left/input/menu/click", "/user/hand/right/input/menu/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_x7qiu"] +action = SubResource( "OpenXRAction_u6yfa" ) +paths = PackedStringArray("/user/hand/left/input/select/click", "/user/hand/right/input/select/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_8huhx"] +action = SubResource( "OpenXRAction_fo355" ) +paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic") + +[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_8cbeg"] +interaction_profile_path = "/interaction_profiles/khr/simple_controller" +bindings = [SubResource( "OpenXRIPBinding_iyn5o" ), SubResource( "OpenXRIPBinding_gjny4" ), SubResource( "OpenXRIPBinding_52qy7" ), SubResource( "OpenXRIPBinding_ktdrj" ), SubResource( "OpenXRIPBinding_x7qiu" ), SubResource( "OpenXRIPBinding_8huhx" )] + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_tm6gh"] +action = SubResource( "OpenXRAction_qs0co" ) +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_tdpl1"] +action = SubResource( "OpenXRAction_m1of6" ) +paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_mry1e"] +action = SubResource( "OpenXRAction_ehp0d" ) +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_wlrvq"] +action = SubResource( "OpenXRAction_pkbba" ) +paths = PackedStringArray("/user/hand/left/input/menu/click", "/user/hand/right/input/menu/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_t55qe"] +action = SubResource( "OpenXRAction_u6yfa" ) +paths = PackedStringArray("/user/hand/left/input/system/click", "/user/hand/right/input/system/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_4yeri"] +action = SubResource( "OpenXRAction_pbb4w" ) +paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_fmwi2"] +action = SubResource( "OpenXRAction_60phl" ) +paths = PackedStringArray("/user/hand/left/input/trigger/click", "/user/hand/right/input/trigger/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_5ddfc"] +action = SubResource( "OpenXRAction_y8408" ) +paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_g802e"] +action = SubResource( "OpenXRAction_rkpo8" ) +paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_jlqpo"] +action = SubResource( "OpenXRAction_dfvcn" ) +paths = PackedStringArray("/user/hand/left/input/trackpad", "/user/hand/right/input/trackpad") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_xl83i"] +action = SubResource( "OpenXRAction_a6qb3" ) +paths = PackedStringArray("/user/hand/left/input/trackpad/click", "/user/hand/right/input/trackpad/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_1f4vx"] +action = SubResource( "OpenXRAction_a82qe" ) +paths = PackedStringArray("/user/hand/left/input/trackpad/touch", "/user/hand/right/input/trackpad/touch") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_i1hq1"] +action = SubResource( "OpenXRAction_fo355" ) +paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic") + +[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_vkaib"] +interaction_profile_path = "/interaction_profiles/htc/vive_controller" +bindings = [SubResource( "OpenXRIPBinding_tm6gh" ), SubResource( "OpenXRIPBinding_tdpl1" ), SubResource( "OpenXRIPBinding_mry1e" ), SubResource( "OpenXRIPBinding_wlrvq" ), SubResource( "OpenXRIPBinding_t55qe" ), SubResource( "OpenXRIPBinding_4yeri" ), SubResource( "OpenXRIPBinding_fmwi2" ), SubResource( "OpenXRIPBinding_5ddfc" ), SubResource( "OpenXRIPBinding_g802e" ), SubResource( "OpenXRIPBinding_jlqpo" ), SubResource( "OpenXRIPBinding_xl83i" ), SubResource( "OpenXRIPBinding_1f4vx" ), SubResource( "OpenXRIPBinding_i1hq1" )] + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_3docs"] +action = SubResource( "OpenXRAction_qs0co" ) +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_h0y4g"] +action = SubResource( "OpenXRAction_m1of6" ) +paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_vq5rk"] +action = SubResource( "OpenXRAction_ehp0d" ) +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_0u25d"] +action = SubResource( "OpenXRAction_pkbba" ) +paths = PackedStringArray("/user/hand/left/input/menu/click", "/user/hand/right/input/menu/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_3pawu"] +action = SubResource( "OpenXRAction_pbb4w" ) +paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_mowpn"] +action = SubResource( "OpenXRAction_60phl" ) +paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_lmnrg"] +action = SubResource( "OpenXRAction_y8408" ) +paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_dxijf"] +action = SubResource( "OpenXRAction_rkpo8" ) +paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_j8qbu"] +action = SubResource( "OpenXRAction_dfvcn" ) +paths = PackedStringArray("/user/hand/left/input/thumbstick", "/user/hand/right/input/thumbstick") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_4gm63"] +action = SubResource( "OpenXRAction_a6qb3" ) +paths = PackedStringArray("/user/hand/left/input/thumbstick/click", "/user/hand/right/input/thumbstick/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_1h2ul"] +action = SubResource( "OpenXRAction_1erbl" ) +paths = PackedStringArray("/user/hand/left/input/trackpad", "/user/hand/right/input/trackpad") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_pbqdg"] +action = SubResource( "OpenXRAction_5asx3" ) +paths = PackedStringArray("/user/hand/left/input/trackpad/click", "/user/hand/right/input/trackpad/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_7mb6y"] +action = SubResource( "OpenXRAction_2rluw" ) +paths = PackedStringArray("/user/hand/left/input/trackpad/touch", "/user/hand/right/input/trackpad/touch") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_37xps"] +action = SubResource( "OpenXRAction_fo355" ) +paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic") + +[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_hlhx6"] +interaction_profile_path = "/interaction_profiles/microsoft/motion_controller" +bindings = [SubResource( "OpenXRIPBinding_3docs" ), SubResource( "OpenXRIPBinding_h0y4g" ), SubResource( "OpenXRIPBinding_vq5rk" ), SubResource( "OpenXRIPBinding_0u25d" ), SubResource( "OpenXRIPBinding_3pawu" ), SubResource( "OpenXRIPBinding_mowpn" ), SubResource( "OpenXRIPBinding_lmnrg" ), SubResource( "OpenXRIPBinding_dxijf" ), SubResource( "OpenXRIPBinding_j8qbu" ), SubResource( "OpenXRIPBinding_4gm63" ), SubResource( "OpenXRIPBinding_1h2ul" ), SubResource( "OpenXRIPBinding_pbqdg" ), SubResource( "OpenXRIPBinding_7mb6y" ), SubResource( "OpenXRIPBinding_37xps" )] + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_6j8tr"] +action = SubResource( "OpenXRAction_qs0co" ) +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_606j0"] +action = SubResource( "OpenXRAction_m1of6" ) +paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_1hs21"] +action = SubResource( "OpenXRAction_ehp0d" ) +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_jwxgf"] +action = SubResource( "OpenXRAction_pkbba" ) +paths = PackedStringArray("/user/hand/left/input/menu/click", "/user/hand/right/input/system/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ya0rs"] +action = SubResource( "OpenXRAction_20r6e" ) +paths = PackedStringArray("/user/hand/left/input/x/click", "/user/hand/right/input/a/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_0dxtd"] +action = SubResource( "OpenXRAction_8kusl" ) +paths = PackedStringArray("/user/hand/left/input/x/touch", "/user/hand/right/input/a/touch") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_orpel"] +action = SubResource( "OpenXRAction_1gdf8" ) +paths = PackedStringArray("/user/hand/left/input/y/click", "/user/hand/right/input/b/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_3m3cl"] +action = SubResource( "OpenXRAction_4cts3" ) +paths = PackedStringArray("/user/hand/left/input/y/touch", "/user/hand/right/input/b/touch") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_dj4vm"] +action = SubResource( "OpenXRAction_pbb4w" ) +paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_gngds"] +action = SubResource( "OpenXRAction_60phl" ) +paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_hhhgn"] +action = SubResource( "OpenXRAction_kk8vd" ) +paths = PackedStringArray("/user/hand/left/input/trigger/touch", "/user/hand/right/input/trigger/touch") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_djdl2"] +action = SubResource( "OpenXRAction_y8408" ) +paths = PackedStringArray("/user/hand/left/input/squeeze/value", "/user/hand/right/input/squeeze/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_kx8b3"] +action = SubResource( "OpenXRAction_rkpo8" ) +paths = PackedStringArray("/user/hand/left/input/squeeze/value", "/user/hand/right/input/squeeze/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_stt2e"] +action = SubResource( "OpenXRAction_dfvcn" ) +paths = PackedStringArray("/user/hand/left/input/thumbstick", "/user/hand/right/input/thumbstick") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_vc1q0"] +action = SubResource( "OpenXRAction_a6qb3" ) +paths = PackedStringArray("/user/hand/left/input/thumbstick/click", "/user/hand/right/input/thumbstick/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_dmdm1"] +action = SubResource( "OpenXRAction_a82qe" ) +paths = PackedStringArray("/user/hand/left/input/thumbstick/touch", "/user/hand/right/input/thumbstick/touch") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_tdkty"] +action = SubResource( "OpenXRAction_fo355" ) +paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic") + +[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_fimxm"] +interaction_profile_path = "/interaction_profiles/oculus/touch_controller" +bindings = [SubResource( "OpenXRIPBinding_6j8tr" ), SubResource( "OpenXRIPBinding_606j0" ), SubResource( "OpenXRIPBinding_1hs21" ), SubResource( "OpenXRIPBinding_jwxgf" ), SubResource( "OpenXRIPBinding_ya0rs" ), SubResource( "OpenXRIPBinding_0dxtd" ), SubResource( "OpenXRIPBinding_orpel" ), SubResource( "OpenXRIPBinding_3m3cl" ), SubResource( "OpenXRIPBinding_dj4vm" ), SubResource( "OpenXRIPBinding_gngds" ), SubResource( "OpenXRIPBinding_hhhgn" ), SubResource( "OpenXRIPBinding_djdl2" ), SubResource( "OpenXRIPBinding_kx8b3" ), SubResource( "OpenXRIPBinding_stt2e" ), SubResource( "OpenXRIPBinding_vc1q0" ), SubResource( "OpenXRIPBinding_dmdm1" ), SubResource( "OpenXRIPBinding_tdkty" )] + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_pya10"] +action = SubResource( "OpenXRAction_qs0co" ) +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_whpd7"] +action = SubResource( "OpenXRAction_m1of6" ) +paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_3cfuy"] +action = SubResource( "OpenXRAction_ehp0d" ) +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ha75f"] +action = SubResource( "OpenXRAction_pkbba" ) +paths = PackedStringArray("/user/hand/left/input/system/click", "/user/hand/right/input/system/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_sgv3m"] +action = SubResource( "OpenXRAction_20r6e" ) +paths = PackedStringArray("/user/hand/left/input/a/click", "/user/hand/right/input/a/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_kfhjs"] +action = SubResource( "OpenXRAction_8kusl" ) +paths = PackedStringArray("/user/hand/left/input/a/touch", "/user/hand/right/input/a/touch") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_wylem"] +action = SubResource( "OpenXRAction_1gdf8" ) +paths = PackedStringArray("/user/hand/left/input/b/click", "/user/hand/right/input/b/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_5fvpi"] +action = SubResource( "OpenXRAction_4cts3" ) +paths = PackedStringArray("/user/hand/left/input/b/touch", "/user/hand/right/input/b/touch") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_dkaa6"] +action = SubResource( "OpenXRAction_pbb4w" ) +paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ma7if"] +action = SubResource( "OpenXRAction_60phl" ) +paths = PackedStringArray("/user/hand/left/input/trigger/click", "/user/hand/right/input/trigger/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_to37t"] +action = SubResource( "OpenXRAction_kk8vd" ) +paths = PackedStringArray("/user/hand/left/input/trigger/touch", "/user/hand/right/input/trigger/touch") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_qa3vs"] +action = SubResource( "OpenXRAction_y8408" ) +paths = PackedStringArray("/user/hand/left/input/squeeze/value", "/user/hand/right/input/squeeze/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_lf55o"] +action = SubResource( "OpenXRAction_rkpo8" ) +paths = PackedStringArray("/user/hand/left/input/squeeze/value", "/user/hand/right/input/squeeze/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_2lrl1"] +action = SubResource( "OpenXRAction_dfvcn" ) +paths = PackedStringArray("/user/hand/left/input/thumbstick", "/user/hand/right/input/thumbstick") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_bhh8c"] +action = SubResource( "OpenXRAction_a6qb3" ) +paths = PackedStringArray("/user/hand/left/input/thumbstick/click", "/user/hand/right/input/thumbstick/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_s03j6"] +action = SubResource( "OpenXRAction_a82qe" ) +paths = PackedStringArray("/user/hand/left/input/thumbstick/touch", "/user/hand/right/input/thumbstick/touch") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ecn4n"] +action = SubResource( "OpenXRAction_1erbl" ) +paths = PackedStringArray("/user/hand/left/input/trackpad", "/user/hand/right/input/trackpad") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_lcr8n"] +action = SubResource( "OpenXRAction_5asx3" ) +paths = PackedStringArray("/user/hand/left/input/trackpad/force", "/user/hand/right/input/trackpad/force") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_nik57"] +action = SubResource( "OpenXRAction_2rluw" ) +paths = PackedStringArray("/user/hand/left/input/trackpad/touch", "/user/hand/right/input/trackpad/touch") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_m0lto"] +action = SubResource( "OpenXRAction_fo355" ) +paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic") + +[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_aj5js"] +interaction_profile_path = "/interaction_profiles/valve/index_controller" +bindings = [SubResource( "OpenXRIPBinding_pya10" ), SubResource( "OpenXRIPBinding_whpd7" ), SubResource( "OpenXRIPBinding_3cfuy" ), SubResource( "OpenXRIPBinding_ha75f" ), SubResource( "OpenXRIPBinding_sgv3m" ), SubResource( "OpenXRIPBinding_kfhjs" ), SubResource( "OpenXRIPBinding_wylem" ), SubResource( "OpenXRIPBinding_5fvpi" ), SubResource( "OpenXRIPBinding_dkaa6" ), SubResource( "OpenXRIPBinding_ma7if" ), SubResource( "OpenXRIPBinding_to37t" ), SubResource( "OpenXRIPBinding_qa3vs" ), SubResource( "OpenXRIPBinding_lf55o" ), SubResource( "OpenXRIPBinding_2lrl1" ), SubResource( "OpenXRIPBinding_bhh8c" ), SubResource( "OpenXRIPBinding_s03j6" ), SubResource( "OpenXRIPBinding_ecn4n" ), SubResource( "OpenXRIPBinding_lcr8n" ), SubResource( "OpenXRIPBinding_nik57" ), SubResource( "OpenXRIPBinding_m0lto" )] + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_lnv6k"] +action = SubResource( "OpenXRAction_qs0co" ) +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_bmlby"] +action = SubResource( "OpenXRAction_m1of6" ) +paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_o1se1"] +action = SubResource( "OpenXRAction_ehp0d" ) +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_x6243"] +action = SubResource( "OpenXRAction_pkbba" ) +paths = PackedStringArray("/user/hand/left/input/menu/click", "/user/hand/right/input/menu/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_g37pn"] +action = SubResource( "OpenXRAction_20r6e" ) +paths = PackedStringArray("/user/hand/left/input/x/click", "/user/hand/right/input/a/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_td13o"] +action = SubResource( "OpenXRAction_1gdf8" ) +paths = PackedStringArray("/user/hand/left/input/y/click", "/user/hand/right/input/b/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_x3koq"] +action = SubResource( "OpenXRAction_pbb4w" ) +paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_soss1"] +action = SubResource( "OpenXRAction_60phl" ) +paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_mc272"] +action = SubResource( "OpenXRAction_y8408" ) +paths = PackedStringArray("/user/hand/left/input/squeeze/value", "/user/hand/right/input/squeeze/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_xoo33"] +action = SubResource( "OpenXRAction_rkpo8" ) +paths = PackedStringArray("/user/hand/left/input/squeeze/value", "/user/hand/right/input/squeeze/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_bvcbw"] +action = SubResource( "OpenXRAction_dfvcn" ) +paths = PackedStringArray("/user/hand/left/input/thumbstick", "/user/hand/right/input/thumbstick") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_t2xab"] +action = SubResource( "OpenXRAction_a6qb3" ) +paths = PackedStringArray("/user/hand/left/input/thumbstick/click", "/user/hand/right/input/thumbstick/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ylkp6"] +action = SubResource( "OpenXRAction_fo355" ) +paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic") + +[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_6dx0g"] +interaction_profile_path = "/interaction_profiles/hp/mixed_reality_controller" +bindings = [SubResource( "OpenXRIPBinding_lnv6k" ), SubResource( "OpenXRIPBinding_bmlby" ), SubResource( "OpenXRIPBinding_o1se1" ), SubResource( "OpenXRIPBinding_x6243" ), SubResource( "OpenXRIPBinding_g37pn" ), SubResource( "OpenXRIPBinding_td13o" ), SubResource( "OpenXRIPBinding_x3koq" ), SubResource( "OpenXRIPBinding_soss1" ), SubResource( "OpenXRIPBinding_mc272" ), SubResource( "OpenXRIPBinding_xoo33" ), SubResource( "OpenXRIPBinding_bvcbw" ), SubResource( "OpenXRIPBinding_t2xab" ), SubResource( "OpenXRIPBinding_ylkp6" )] + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_rvklk"] +action = SubResource( "OpenXRAction_qs0co" ) +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_knquq"] +action = SubResource( "OpenXRAction_m1of6" ) +paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_oximf"] +action = SubResource( "OpenXRAction_ehp0d" ) +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ch3xt"] +action = SubResource( "OpenXRAction_pkbba" ) +paths = PackedStringArray("/user/hand/left/input/menu/click", "/user/hand/right/input/menu/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_17vfr"] +action = SubResource( "OpenXRAction_pbb4w" ) +paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_hn72t"] +action = SubResource( "OpenXRAction_60phl" ) +paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_v5bgr"] +action = SubResource( "OpenXRAction_y8408" ) +paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_k3rq5"] +action = SubResource( "OpenXRAction_rkpo8" ) +paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_vxnet"] +action = SubResource( "OpenXRAction_dfvcn" ) +paths = PackedStringArray("/user/hand/left/input/thumbstick", "/user/hand/right/input/thumbstick") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_67cal"] +action = SubResource( "OpenXRAction_a6qb3" ) +paths = PackedStringArray("/user/hand/left/input/thumbstick/click", "/user/hand/right/input/thumbstick/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_2bybd"] +action = SubResource( "OpenXRAction_1erbl" ) +paths = PackedStringArray("/user/hand/left/input/trackpad", "/user/hand/right/input/trackpad") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_8ghye"] +action = SubResource( "OpenXRAction_5asx3" ) +paths = PackedStringArray("/user/hand/left/input/trackpad/click", "/user/hand/right/input/trackpad/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_tjokw"] +action = SubResource( "OpenXRAction_2rluw" ) +paths = PackedStringArray("/user/hand/left/input/trackpad/touch", "/user/hand/right/input/trackpad/touch") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_gk4du"] +action = SubResource( "OpenXRAction_fo355" ) +paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic") + +[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_jmkff"] +interaction_profile_path = "/interaction_profiles/samsung/odyssey_controller" +bindings = [SubResource( "OpenXRIPBinding_rvklk" ), SubResource( "OpenXRIPBinding_knquq" ), SubResource( "OpenXRIPBinding_oximf" ), SubResource( "OpenXRIPBinding_ch3xt" ), SubResource( "OpenXRIPBinding_17vfr" ), SubResource( "OpenXRIPBinding_hn72t" ), SubResource( "OpenXRIPBinding_v5bgr" ), SubResource( "OpenXRIPBinding_k3rq5" ), SubResource( "OpenXRIPBinding_vxnet" ), SubResource( "OpenXRIPBinding_67cal" ), SubResource( "OpenXRIPBinding_2bybd" ), SubResource( "OpenXRIPBinding_8ghye" ), SubResource( "OpenXRIPBinding_tjokw" ), SubResource( "OpenXRIPBinding_gk4du" )] + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_cgebu"] +action = SubResource( "OpenXRAction_qs0co" ) +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_vawtd"] +action = SubResource( "OpenXRAction_m1of6" ) +paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_l20ky"] +action = SubResource( "OpenXRAction_ehp0d" ) +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_bvx5p"] +action = SubResource( "OpenXRAction_pkbba" ) +paths = PackedStringArray("/user/hand/left/input/menu/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_dktje"] +action = SubResource( "OpenXRAction_u6yfa" ) +paths = PackedStringArray("/user/hand/left/input/system/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_wl1gs"] +action = SubResource( "OpenXRAction_20r6e" ) +paths = PackedStringArray("/user/hand/left/input/x/click", "/user/hand/right/input/a/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_e7oh6"] +action = SubResource( "OpenXRAction_1gdf8" ) +paths = PackedStringArray("/user/hand/left/input/y/click", "/user/hand/right/input/b/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_x3a60"] +action = SubResource( "OpenXRAction_pbb4w" ) +paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_pm4w5"] +action = SubResource( "OpenXRAction_60phl" ) +paths = PackedStringArray("/user/hand/left/input/trigger/click", "/user/hand/right/input/trigger/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_1nbrx"] +action = SubResource( "OpenXRAction_y8408" ) +paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_vr3so"] +action = SubResource( "OpenXRAction_rkpo8" ) +paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_fgy2f"] +action = SubResource( "OpenXRAction_dfvcn" ) +paths = PackedStringArray("/user/hand/left/input/thumbstick", "/user/hand/right/input/thumbstick") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_otbkf"] +action = SubResource( "OpenXRAction_a6qb3" ) +paths = PackedStringArray("/user/hand/left/input/thumbstick/click", "/user/hand/right/input/thumbstick/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_6ujlq"] +action = SubResource( "OpenXRAction_a82qe" ) +paths = PackedStringArray("/user/hand/left/input/thumbstick/touch", "/user/hand/right/input/thumbstick/touch") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ajnvy"] +action = SubResource( "OpenXRAction_fo355" ) +paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic") + +[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_f7qdf"] +interaction_profile_path = "/interaction_profiles/htc/vive_cosmos_controller" +bindings = [SubResource( "OpenXRIPBinding_cgebu" ), SubResource( "OpenXRIPBinding_vawtd" ), SubResource( "OpenXRIPBinding_l20ky" ), SubResource( "OpenXRIPBinding_bvx5p" ), SubResource( "OpenXRIPBinding_dktje" ), SubResource( "OpenXRIPBinding_wl1gs" ), SubResource( "OpenXRIPBinding_e7oh6" ), SubResource( "OpenXRIPBinding_x3a60" ), SubResource( "OpenXRIPBinding_pm4w5" ), SubResource( "OpenXRIPBinding_1nbrx" ), SubResource( "OpenXRIPBinding_vr3so" ), SubResource( "OpenXRIPBinding_fgy2f" ), SubResource( "OpenXRIPBinding_otbkf" ), SubResource( "OpenXRIPBinding_6ujlq" ), SubResource( "OpenXRIPBinding_ajnvy" )] + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_c7t2p"] +action = SubResource( "OpenXRAction_qs0co" ) +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_0untl"] +action = SubResource( "OpenXRAction_m1of6" ) +paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_g3dg4"] +action = SubResource( "OpenXRAction_ehp0d" ) +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_j8g30"] +action = SubResource( "OpenXRAction_pkbba" ) +paths = PackedStringArray("/user/hand/left/input/menu/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_3rhs8"] +action = SubResource( "OpenXRAction_u6yfa" ) +paths = PackedStringArray("/user/hand/left/input/system/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_k47fu"] +action = SubResource( "OpenXRAction_20r6e" ) +paths = PackedStringArray("/user/hand/left/input/x/click", "/user/hand/right/input/a/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_g6adb"] +action = SubResource( "OpenXRAction_1gdf8" ) +paths = PackedStringArray("/user/hand/left/input/y/click", "/user/hand/right/input/b/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_xe5ge"] +action = SubResource( "OpenXRAction_pbb4w" ) +paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_c4ys7"] +action = SubResource( "OpenXRAction_60phl" ) +paths = PackedStringArray("/user/hand/left/input/trigger/click", "/user/hand/right/input/trigger/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_afh3o"] +action = SubResource( "OpenXRAction_kk8vd" ) +paths = PackedStringArray("/user/hand/left/input/trigger/touch", "/user/hand/right/input/trigger/touch") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_3i7bx"] +action = SubResource( "OpenXRAction_y8408" ) +paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_4wc05"] +action = SubResource( "OpenXRAction_rkpo8" ) +paths = PackedStringArray("/user/hand/left/input/squeeze/click", "/user/hand/right/input/squeeze/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_7egrm"] +action = SubResource( "OpenXRAction_dfvcn" ) +paths = PackedStringArray("/user/hand/left/input/thumbstick", "/user/hand/right/input/thumbstick") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_np346"] +action = SubResource( "OpenXRAction_a6qb3" ) +paths = PackedStringArray("/user/hand/left/input/thumbstick/click", "/user/hand/right/input/thumbstick/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_muf7l"] +action = SubResource( "OpenXRAction_a82qe" ) +paths = PackedStringArray("/user/hand/left/input/thumbstick/touch", "/user/hand/right/input/thumbstick/touch") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ucuyu"] +action = SubResource( "OpenXRAction_2rluw" ) +paths = PackedStringArray("/user/hand/left/input/thumbrest/touch", "/user/hand/right/input/thumbrest/touch") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_25cm6"] +action = SubResource( "OpenXRAction_fo355" ) +paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic") + +[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_6i46i"] +interaction_profile_path = "/interaction_profiles/htc/vive_focus3_controller" +bindings = [SubResource( "OpenXRIPBinding_c7t2p" ), SubResource( "OpenXRIPBinding_0untl" ), SubResource( "OpenXRIPBinding_g3dg4" ), SubResource( "OpenXRIPBinding_j8g30" ), SubResource( "OpenXRIPBinding_3rhs8" ), SubResource( "OpenXRIPBinding_k47fu" ), SubResource( "OpenXRIPBinding_g6adb" ), SubResource( "OpenXRIPBinding_xe5ge" ), SubResource( "OpenXRIPBinding_c4ys7" ), SubResource( "OpenXRIPBinding_afh3o" ), SubResource( "OpenXRIPBinding_3i7bx" ), SubResource( "OpenXRIPBinding_4wc05" ), SubResource( "OpenXRIPBinding_7egrm" ), SubResource( "OpenXRIPBinding_np346" ), SubResource( "OpenXRIPBinding_muf7l" ), SubResource( "OpenXRIPBinding_ucuyu" ), SubResource( "OpenXRIPBinding_25cm6" )] + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_vtyxk"] +action = SubResource( "OpenXRAction_qs0co" ) +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_2brmj"] +action = SubResource( "OpenXRAction_m1of6" ) +paths = PackedStringArray("/user/hand/left/input/aim/pose", "/user/hand/right/input/aim/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_2jxe4"] +action = SubResource( "OpenXRAction_ehp0d" ) +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_6u8ul"] +action = SubResource( "OpenXRAction_pkbba" ) +paths = PackedStringArray("/user/hand/left/input/home/click", "/user/hand/right/input/home/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_jtxow"] +action = SubResource( "OpenXRAction_pbb4w" ) +paths = PackedStringArray("/user/hand/left/input/trigger/value", "/user/hand/right/input/trigger/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_lreyj"] +action = SubResource( "OpenXRAction_60phl" ) +paths = PackedStringArray("/user/hand/left/input/trigger/click", "/user/hand/right/input/trigger/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_6kdj5"] +action = SubResource( "OpenXRAction_dfvcn" ) +paths = PackedStringArray("/user/hand/left/input/trackpad", "/user/hand/right/input/trackpad") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_0i0en"] +action = SubResource( "OpenXRAction_a6qb3" ) +paths = PackedStringArray("/user/hand/left/input/trackpad/click", "/user/hand/right/input/trackpad/click") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_gkc8j"] +action = SubResource( "OpenXRAction_a82qe" ) +paths = PackedStringArray("/user/hand/left/input/trackpad/touch", "/user/hand/right/input/trackpad/touch") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_1qdv8"] +action = SubResource( "OpenXRAction_fo355" ) +paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic") + +[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_t8bec"] +interaction_profile_path = "/interaction_profiles/huawei/controller" +bindings = [SubResource( "OpenXRIPBinding_vtyxk" ), SubResource( "OpenXRIPBinding_2brmj" ), SubResource( "OpenXRIPBinding_2jxe4" ), SubResource( "OpenXRIPBinding_6u8ul" ), SubResource( "OpenXRIPBinding_jtxow" ), SubResource( "OpenXRIPBinding_lreyj" ), SubResource( "OpenXRIPBinding_6kdj5" ), SubResource( "OpenXRIPBinding_0i0en" ), SubResource( "OpenXRIPBinding_gkc8j" ), SubResource( "OpenXRIPBinding_1qdv8" )] + +[resource] +action_sets = [SubResource( "OpenXRActionSet_64aoq" )] +interaction_profiles = [SubResource( "OpenXRInteractionProfile_8cbeg" ), SubResource( "OpenXRInteractionProfile_vkaib" ), SubResource( "OpenXRInteractionProfile_hlhx6" ), SubResource( "OpenXRInteractionProfile_fimxm" ), SubResource( "OpenXRInteractionProfile_aj5js" ), SubResource( "OpenXRInteractionProfile_6dx0g" ), SubResource( "OpenXRInteractionProfile_jmkff" ), SubResource( "OpenXRInteractionProfile_f7qdf" ), SubResource( "OpenXRInteractionProfile_6i46i" ), SubResource( "OpenXRInteractionProfile_t8bec" )] diff --git a/project.godot b/project.godot index 778f273..f367aa2 100644 --- a/project.godot +++ b/project.godot @@ -20,6 +20,11 @@ _global_script_classes=[{ "path": "res://addons/godot-xr-tools/functions/Function_Direct_movement.gd" }, { "base": "MovementProvider", +"class": &"Function_FlightMovement", +"language": &"GDScript", +"path": "res://addons/godot-xr-tools/functions/Function_Flight_movement.gd" +}, { +"base": "MovementProvider", "class": &"Function_Glide", "language": &"GDScript", "path": "res://addons/godot-xr-tools/functions/Function_Glide_movement.gd" @@ -29,6 +34,11 @@ _global_script_classes=[{ "language": &"GDScript", "path": "res://addons/godot-xr-tools/functions/Function_Jump_movement.gd" }, { +"base": "MovementProvider", +"class": &"Function_JumpDetect", +"language": &"GDScript", +"path": "res://addons/godot-xr-tools/functions/Function_JumpDetect_movement.gd" +}, { "base": "Area3D", "class": &"Function_Pickup", "language": &"GDScript", @@ -79,6 +89,11 @@ _global_script_classes=[{ "language": &"GDScript", "path": "res://addons/godot-xr-tools/objects/Wind_area.gd" }, { +"base": "RefCounted", +"class": &"XRHelpers", +"language": &"GDScript", +"path": "res://addons/godot-xr-tools/misc/XR_Helpers.gd" +}, { "base": "Area3D", "class": &"XRToolsInteractableArea", "language": &"GDScript", @@ -97,8 +112,10 @@ _global_script_classes=[{ _global_script_class_icons={ "Function_ClimbMovement": "", "Function_DirectMovement": "", +"Function_FlightMovement": "", "Function_Glide": "", "Function_Jump": "", +"Function_JumpDetect": "", "Function_Pickup": "", "Function_WindMovement": "", "GroundPhysics": "", @@ -109,6 +126,7 @@ _global_script_class_icons={ "VelocityAverager": "", "VelocityAveragerLinear": "", "WindArea": "", +"XRHelpers": "", "XRToolsInteractableArea": "", "XRToolsInteractableBody": "", "XRToolsPickable": "" @@ -121,10 +139,6 @@ run/main_scene="res://Main.tscn" config/icon="res://icon.png" config/features=PackedStringArray("4.0", "Vulkan Mobile") -[debug] - -settings/stdout/print_fps=true - [display] window/vsync/vsync_mode=0 @@ -133,6 +147,10 @@ window/vsync/vsync_mode=0 enabled=PackedStringArray("res://addons/godot-xr-tools/plugin.cfg") +[filesystem] + +import/blender/enabled=false + [rendering] vulkan/rendering/back_end=1