mirror of
https://github.com/godotengine/godot-demo-projects.git
synced 2026-01-08 17:00:08 +01:00
Update Mobile Sensors demo for Godot 4.1 (#992)
This commit is contained in:
@@ -5,10 +5,10 @@ These sensors are typically found on mobile devices, so don't expect this to wor
|
||||
|
||||
Language: GDScript
|
||||
|
||||
Renderer: GLES 2
|
||||
Renderer: Mobile
|
||||
|
||||
Check out this demo on the asset library: https://godotengine.org/asset-library/asset/143
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||

|
||||
|
||||
@@ -1,37 +1,36 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture2D"
|
||||
path.s3tc="res://.godot/imported/cube_6.png-0b954e2c88c21596044fe6448711988e.s3tc.stex"
|
||||
path.etc="res://.godot/imported/cube_6.png-0b954e2c88c21596044fe6448711988e.etc.stex"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://yba5kdfjgn65"
|
||||
path.s3tc="res://.godot/imported/cube_6.png-0b954e2c88c21596044fe6448711988e.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/cube_6.png-0b954e2c88c21596044fe6448711988e.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc", "etc"],
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://cube_6.png"
|
||||
dest_files=["res://.godot/imported/cube_6.png-0b954e2c88c21596044fe6448711988e.s3tc.stex", "res://.godot/imported/cube_6.png-0b954e2c88c21596044fe6448711988e.etc.stex"]
|
||||
dest_files=["res://.godot/imported/cube_6.png-0b954e2c88c21596044fe6448711988e.s3tc.ctex", "res://.godot/imported/cube_6.png-0b954e2c88c21596044fe6448711988e.etc2.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
flags/repeat=true
|
||||
flags/filter=true
|
||||
flags/mipmaps=true
|
||||
flags/anisotropic=false
|
||||
flags/srgb=1
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
process/normal_map_invert_y=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=false
|
||||
svg/scale=1.0
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[gd_resource type="Environment" load_steps=2 format=2]
|
||||
[gd_resource type="Environment" load_steps=2 format=3 uid="uid://f45bpansont3"]
|
||||
|
||||
[sub_resource type="Sky" id=1]
|
||||
[sub_resource type="Sky" id="1"]
|
||||
|
||||
[resource]
|
||||
background_mode = 2
|
||||
background_sky = SubResource( 1 )
|
||||
sky = SubResource("1")
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
extends Node
|
||||
|
||||
|
||||
# Below are a number of helper functions that show how you can use the raw sensor data to determine the orientation
|
||||
# of your phone/device. The cheapest phones only have an accelerometer only the most expensive phones have all three.
|
||||
# Note that none of this logic filters data. Filters introduce lag but also provide stability. There are plenty
|
||||
@@ -30,6 +31,7 @@ func get_basis_for_arrow(p_vector):
|
||||
|
||||
return rotate
|
||||
|
||||
|
||||
# This function combines the magnetometer reading with the gravity vector to get a vector that points due north
|
||||
func calc_north(p_grav, p_mag):
|
||||
# Always use normalized vectors!
|
||||
@@ -43,6 +45,7 @@ func calc_north(p_grav, p_mag):
|
||||
# Cross again to get our horizon aligned north
|
||||
return east.cross(p_grav).normalized()
|
||||
|
||||
|
||||
# This function creates an orientation matrix using the magnetometer and gravity vector as inputs.
|
||||
func orientate_by_mag_and_grav(p_mag, p_grav):
|
||||
var rotate = Basis()
|
||||
@@ -61,6 +64,7 @@ func orientate_by_mag_and_grav(p_mag, p_grav):
|
||||
|
||||
return rotate
|
||||
|
||||
|
||||
# This function takes our gyro input and update an orientation matrix accordingly
|
||||
# The gyro is special as this vector does not contain a direction but rather a
|
||||
# rotational velocity. This is why we multiply our values with delta.
|
||||
@@ -73,6 +77,7 @@ func rotate_by_gyro(p_gyro, p_basis, p_delta):
|
||||
|
||||
return rotate * p_basis
|
||||
|
||||
|
||||
# This function corrects the drift in our matrix by our gravity vector
|
||||
func drift_correction(p_basis, p_grav):
|
||||
# as always, make sure our vector is normalized but also invert as our gravity points down
|
||||
@@ -90,6 +95,7 @@ func drift_correction(p_basis, p_grav):
|
||||
|
||||
return p_basis
|
||||
|
||||
|
||||
func _process(delta):
|
||||
# Get our data
|
||||
var acc = Input.get_accelerometer()
|
||||
@@ -98,9 +104,23 @@ func _process(delta):
|
||||
var gyro = Input.get_gyroscope()
|
||||
|
||||
# Show our base values
|
||||
get_node(^"Control/Accelerometer").text = "Accelerometer: " + str(acc) + ", gravity: " + str(grav)
|
||||
get_node(^"Control/Magnetometer").text = "Magnetometer: " + str(mag)
|
||||
get_node(^"Control/Gyroscope").text = "Gyroscope: " + str(gyro)
|
||||
var format = "%.05f"
|
||||
|
||||
%AccX.text = format % acc.x
|
||||
%AccY.text = format % acc.y
|
||||
%AccZ.text = format % acc.z
|
||||
|
||||
%GravX.text = format % grav.x
|
||||
%GravY.text = format % grav.y
|
||||
%GravZ.text = format % grav.z
|
||||
|
||||
%MagX.text = format % mag.x
|
||||
%MagY.text = format % mag.y
|
||||
%MagZ.text = format % mag.z
|
||||
|
||||
%GyroX.text = format % gyro.x
|
||||
%GyroY.text = format % gyro.y
|
||||
%GyroZ.text = format % gyro.z
|
||||
|
||||
# Check if we have all needed data
|
||||
if grav.length() < 0.1:
|
||||
@@ -116,23 +136,23 @@ func _process(delta):
|
||||
mag = Vector3(1.0, 0.0, 0.0)
|
||||
|
||||
# Update our arrow showing gravity
|
||||
get_node(^"Arrows/AccelerometerArrow").transform.basis = get_basis_for_arrow(grav)
|
||||
$Arrows/AccelerometerArrow.transform.basis = get_basis_for_arrow(grav)
|
||||
|
||||
# Update our arrow showing our magnetometer
|
||||
# Note that in absence of other strong magnetic forces this will point to magnetic north, which is not horizontal thanks to the earth being, uhm, round
|
||||
get_node(^"Arrows/MagnetoArrow").transform.basis = get_basis_for_arrow(mag)
|
||||
$Arrows/MagnetoArrow.transform.basis = get_basis_for_arrow(mag)
|
||||
|
||||
# Calculate our north vector and show that
|
||||
var north = calc_north(grav,mag)
|
||||
get_node(^"Arrows/NorthArrow").transform.basis = get_basis_for_arrow(north)
|
||||
var north = calc_north(grav, mag)
|
||||
$Arrows/NorthArrow.transform.basis = get_basis_for_arrow(north)
|
||||
|
||||
# Combine our magnetometer and gravity vector to position our box. This will be fairly accurate
|
||||
# but our magnetometer can be easily influenced by magnets. Cheaper phones often don't have gyros
|
||||
# so it is a good backup.
|
||||
var mag_and_grav = get_node(^"Boxes/MagAndGrav")
|
||||
var mag_and_grav = $Boxes/MagAndGrav
|
||||
mag_and_grav.transform.basis = orientate_by_mag_and_grav(mag, grav).orthonormalized()
|
||||
|
||||
# Using our gyro and do a drift correction using our gravity vector gives the best result
|
||||
var gyro_and_grav = get_node(^"Boxes/GyroAndGrav")
|
||||
var gyro_and_grav = $Boxes/GyroAndGrav
|
||||
var new_basis = rotate_by_gyro(gyro, gyro_and_grav.transform.basis, delta).orthonormalized()
|
||||
gyro_and_grav.transform.basis = drift_correction(new_basis, grav)
|
||||
|
||||
@@ -1,77 +1,180 @@
|
||||
[gd_scene load_steps=11 format=2]
|
||||
[gd_scene load_steps=11 format=3 uid="uid://cfhql05dj6udh"]
|
||||
|
||||
[ext_resource path="res://main.gd" type="Script" id=1]
|
||||
[ext_resource path="res://cube_6.png" type="Texture2D" id=2]
|
||||
[ext_resource type="Script" path="res://main.gd" id="1"]
|
||||
[ext_resource type="Texture2D" uid="uid://yba5kdfjgn65" path="res://cube_6.png" id="2"]
|
||||
|
||||
[sub_resource type="Environment" id=1]
|
||||
[sub_resource type="Environment" id="1"]
|
||||
background_mode = 1
|
||||
ambient_light_color = Color(0.648438, 0.64578, 0.64578, 1)
|
||||
|
||||
[sub_resource type="CylinderMesh" id=2]
|
||||
[sub_resource type="CylinderMesh" id="2"]
|
||||
top_radius = 0.2
|
||||
bottom_radius = 0.1
|
||||
height = 4.0
|
||||
radial_segments = 16
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id=3]
|
||||
params_diffuse_mode = 1
|
||||
[sub_resource type="StandardMaterial3D" id="3"]
|
||||
diffuse_mode = 1
|
||||
albedo_color = Color(0.356557, 1, 0.366611, 1)
|
||||
roughness = 0.0
|
||||
|
||||
[sub_resource type="CylinderMesh" id=4]
|
||||
[sub_resource type="CylinderMesh" id="4"]
|
||||
top_radius = 0.1
|
||||
radial_segments = 16
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id=5]
|
||||
params_diffuse_mode = 1
|
||||
[sub_resource type="StandardMaterial3D" id="5"]
|
||||
diffuse_mode = 1
|
||||
albedo_color = Color(0.0266393, 0.292793, 1, 1)
|
||||
roughness = 0.0
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id=6]
|
||||
params_diffuse_mode = 1
|
||||
[sub_resource type="StandardMaterial3D" id="6"]
|
||||
diffuse_mode = 1
|
||||
albedo_color = Color(0.957031, 0.801627, 0.0921731, 1)
|
||||
roughness = 0.0
|
||||
|
||||
[sub_resource type="BoxMesh" id=7]
|
||||
[sub_resource type="BoxMesh" id="7"]
|
||||
size = Vector3(4, 4, 4)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id=8]
|
||||
params_diffuse_mode = 1
|
||||
albedo_texture = ExtResource( 2 )
|
||||
[sub_resource type="StandardMaterial3D" id="8"]
|
||||
diffuse_mode = 1
|
||||
albedo_texture = ExtResource("2")
|
||||
roughness = 0.0
|
||||
|
||||
[node name="Main" type="Node"]
|
||||
script = ExtResource( 1 )
|
||||
script = ExtResource("1")
|
||||
|
||||
[node name="Control" type="Control" parent="."]
|
||||
layout_mode = 3
|
||||
anchors_preset = 0
|
||||
offset_right = 1025.0
|
||||
offset_bottom = 602.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="Accelerometer" type="Label" parent="Control"]
|
||||
offset_right = 340.0
|
||||
offset_bottom = 14.0
|
||||
rect_scale = Vector2(2, 2)
|
||||
[node name="GridContainer" type="GridContainer" parent="Control"]
|
||||
offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
columns = 4
|
||||
|
||||
[node name="LabelEmpty" type="Label" parent="Control/GridContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="LabelX" type="Label" parent="Control/GridContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_colors/font_color = Color(0.666667, 0.666667, 0.666667, 1)
|
||||
text = "X"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="LabelY" type="Label" parent="Control/GridContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_colors/font_color = Color(0.666667, 0.666667, 0.666667, 1)
|
||||
text = "Y"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="LabelZ" type="Label" parent="Control/GridContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_colors/font_color = Color(0.666667, 0.666667, 0.666667, 1)
|
||||
text = "Z"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="Accelerometer" type="Label" parent="Control/GridContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_colors/font_color = Color(0.666667, 0.666667, 0.666667, 1)
|
||||
text = "Accelerometer"
|
||||
|
||||
[node name="Magnetometer" type="Label" parent="Control"]
|
||||
offset_top = 30.0
|
||||
offset_right = 340.0
|
||||
offset_bottom = 44.0
|
||||
rect_scale = Vector2(2, 2)
|
||||
[node name="AccX" type="Label" parent="Control/GridContainer"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(90, 2.08165e-12)
|
||||
layout_mode = 2
|
||||
text = "0"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="AccY" type="Label" parent="Control/GridContainer"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(90, 2.08165e-12)
|
||||
layout_mode = 2
|
||||
text = "0"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="AccZ" type="Label" parent="Control/GridContainer"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(90, 2.08165e-12)
|
||||
layout_mode = 2
|
||||
text = "0"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="Gravity" type="Label" parent="Control/GridContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_colors/font_color = Color(0.666667, 0.666667, 0.666667, 1)
|
||||
text = "Gravity"
|
||||
|
||||
[node name="GravX" type="Label" parent="Control/GridContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "0"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="GravY" type="Label" parent="Control/GridContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "0"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="GravZ" type="Label" parent="Control/GridContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "0"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="Magnetometer" type="Label" parent="Control/GridContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_colors/font_color = Color(0.666667, 0.666667, 0.666667, 1)
|
||||
text = "Magnetometer"
|
||||
|
||||
[node name="Gyroscope" type="Label" parent="Control"]
|
||||
offset_top = 60.0
|
||||
offset_right = 340.0
|
||||
offset_bottom = 74.0
|
||||
rect_scale = Vector2(2, 2)
|
||||
[node name="MagX" type="Label" parent="Control/GridContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "0"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="MagY" type="Label" parent="Control/GridContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "0"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="MagZ" type="Label" parent="Control/GridContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "0"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="Gyroscope" type="Label" parent="Control/GridContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_colors/font_color = Color(0.666667, 0.666667, 0.666667, 1)
|
||||
text = "Gyroscope"
|
||||
|
||||
[node name="GyroX" type="Label" parent="Control/GridContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "0"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="GyroY" type="Label" parent="Control/GridContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "0"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="GyroZ" type="Label" parent="Control/GridContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "0"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.285209, 0, 11.9833)
|
||||
environment = SubResource( 1 )
|
||||
environment = SubResource("1")
|
||||
fov = 74.0
|
||||
near = 0.1
|
||||
|
||||
@@ -82,51 +185,51 @@ transform = Transform3D(1, 0, 0, 0, -1, 8.74228e-08, 0, -8.74228e-08, -1, 0, 0,
|
||||
|
||||
[node name="Bottom" type="MeshInstance3D" parent="Arrows/AccelerometerArrow"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0)
|
||||
mesh = SubResource( 2 )
|
||||
surface_material_override/0 = SubResource( 3 )
|
||||
mesh = SubResource("2")
|
||||
surface_material_override/0 = SubResource("3")
|
||||
|
||||
[node name="Top" type="MeshInstance3D" parent="Arrows/AccelerometerArrow"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, 0)
|
||||
mesh = SubResource( 4 )
|
||||
surface_material_override/0 = SubResource( 3 )
|
||||
mesh = SubResource("4")
|
||||
surface_material_override/0 = SubResource("3")
|
||||
|
||||
[node name="MagnetoArrow" type="Node3D" parent="Arrows"]
|
||||
transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 0, 0, 0)
|
||||
|
||||
[node name="Bottom" type="MeshInstance3D" parent="Arrows/MagnetoArrow"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0)
|
||||
mesh = SubResource( 2 )
|
||||
surface_material_override/0 = SubResource( 5 )
|
||||
mesh = SubResource("2")
|
||||
surface_material_override/0 = SubResource("5")
|
||||
|
||||
[node name="Top" type="MeshInstance3D" parent="Arrows/MagnetoArrow"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, 0)
|
||||
mesh = SubResource( 4 )
|
||||
surface_material_override/0 = SubResource( 5 )
|
||||
mesh = SubResource("4")
|
||||
surface_material_override/0 = SubResource("5")
|
||||
|
||||
[node name="NorthArrow" type="Node3D" parent="Arrows"]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0)
|
||||
|
||||
[node name="Bottom" type="MeshInstance3D" parent="Arrows/NorthArrow"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0)
|
||||
mesh = SubResource( 2 )
|
||||
surface_material_override/0 = SubResource( 6 )
|
||||
mesh = SubResource("2")
|
||||
surface_material_override/0 = SubResource("6")
|
||||
|
||||
[node name="Top" type="MeshInstance3D" parent="Arrows/NorthArrow"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, 0)
|
||||
mesh = SubResource( 4 )
|
||||
surface_material_override/0 = SubResource( 6 )
|
||||
mesh = SubResource("4")
|
||||
surface_material_override/0 = SubResource("6")
|
||||
|
||||
[node name="Boxes" type="Node3D" parent="."]
|
||||
|
||||
[node name="MagAndGrav" type="MeshInstance3D" parent="Boxes"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7, -4, 0)
|
||||
mesh = SubResource( 7 )
|
||||
surface_material_override/0 = SubResource( 8 )
|
||||
mesh = SubResource("7")
|
||||
surface_material_override/0 = SubResource("8")
|
||||
|
||||
[node name="GyroAndGrav" type="MeshInstance3D" parent="Boxes"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, -4, 0)
|
||||
mesh = SubResource( 7 )
|
||||
surface_material_override/0 = SubResource( 8 )
|
||||
mesh = SubResource("7")
|
||||
surface_material_override/0 = SubResource("8")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(0.884838, -0.329433, 0.329449, 0, 0.707124, 0.707089, -0.4659, -0.625659, 0.62569, 0, 4.69444, 0)
|
||||
|
||||
@@ -6,21 +6,24 @@
|
||||
; [section] ; section goes between []
|
||||
; param=value ; assign values to parameters
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[]
|
||||
_global_script_class_icons={
|
||||
}
|
||||
config_version=5
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Mobile Sensors Demo"
|
||||
config/description="A demo showing the use of various sensors: an accelerometer, a gyroscope, and a magnetometer.
|
||||
These sensors are typically found on mobile devices, so don't expect this to work on a desktop."
|
||||
run/main_scene="res://main.tscn"
|
||||
config/icon="res://icon.webp"
|
||||
config/tags=PackedStringArray("demo", "mobile", "official")
|
||||
run/main_scene="res://main.tscn"
|
||||
config/features=PackedStringArray("4.1")
|
||||
config/icon="res://icon.webp"
|
||||
|
||||
[display]
|
||||
|
||||
window/stretch/mode="canvas_items"
|
||||
|
||||
[rendering]
|
||||
|
||||
environment/default_environment="res://default_env.tres"
|
||||
renderer/rendering_method="mobile"
|
||||
textures/vram_compression/import_etc2_astc=true
|
||||
environment/defaults/default_environment="res://default_env.tres"
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 19 KiB |
BIN
mobile/sensors/screenshots/sensors.webp
Normal file
BIN
mobile/sensors/screenshots/sensors.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
Reference in New Issue
Block a user