Convert demos to Godot 4 using regular expressions in a script

This commit is contained in:
Aaron Franke
2022-03-26 05:00:50 -05:00
parent 410d783126
commit bbe50fc9da
1095 changed files with 13628 additions and 13557 deletions

View File

@@ -2,8 +2,8 @@ extends Control
const TEST_ITEM_SKU = "my_in_app_purchase_sku"
onready var alert_dialog = $AlertDialog
onready var label = $Label
@onready var alert_dialog = $AlertDialog
@onready var label = $Label
var payment = null
var test_item_purchase_token = null
@@ -14,29 +14,29 @@ func _ready():
payment = Engine.get_singleton("GodotGooglePlayBilling")
# No params.
payment.connect("connected", self, "_on_connected")
payment.connect(&"connected", self._on_connected)
# No params.
payment.connect("disconnected", self, "_on_disconnected")
payment.connect(&"disconnected", self._on_disconnected)
# Response ID (int), Debug message (string).
payment.connect("connect_error", self, "_on_connect_error")
payment.connect(&"connect_error", self._on_connect_error)
# Purchases (Dictionary[]).
payment.connect("purchases_updated", self, "_on_purchases_updated")
payment.connect(&"purchases_updated", self._on_purchases_updated)
# Response ID (int), Debug message (string).
payment.connect("purchase_error", self, "_on_purchase_error")
payment.connect(&"purchase_error", self._on_purchase_error)
# SKUs (Dictionary[]).
payment.connect("sku_details_query_completed", self, "_on_sku_details_query_completed")
payment.connect(&"sku_details_query_completed", self._on_sku_details_query_completed)
# Response ID (int), Debug message (string), Queried SKUs (string[]).
payment.connect("sku_details_query_error", self, "_on_sku_details_query_error")
payment.connect(&"sku_details_query_error", self._on_sku_details_query_error)
# Purchase token (string).
payment.connect("purchase_acknowledged", self, "_on_purchase_acknowledged")
payment.connect(&"purchase_acknowledged", self._on_purchase_acknowledged)
# Response ID (int), Debug message (string), Purchase token (string).
payment.connect("purchase_acknowledgement_error", self, "_on_purchase_acknowledgement_error")
payment.connect(&"purchase_acknowledgement_error", self._on_purchase_acknowledgement_error)
# Purchase token (string).
payment.connect("purchase_consumed", self, "_on_purchase_consumed")
payment.connect(&"purchase_consumed", self._on_purchase_consumed)
# Response ID (int), Debug message (string), Purchase token (string).
payment.connect("purchase_consumption_error", self, "_on_purchase_consumption_error")
payment.connect(&"purchase_consumption_error", self._on_purchase_consumption_error)
# Purchases (Dictionary[])
payment.connect("query_purchases_response", self, "_on_query_purchases_response")
payment.connect(&"query_purchases_response", self._on_query_purchases_response)
payment.startConnection()
else:
show_alert("Android IAP support is not enabled. Make sure you have enabled 'Custom Build' and installed and enabled the GodotGooglePlayBilling plugin in your Android export settings! This application will not work.")
@@ -68,11 +68,11 @@ func _on_query_purchases_response(query_result):
func _on_sku_details_query_completed(sku_details):
for available_sku in sku_details:
show_alert(to_json(available_sku))
show_alert(JSON.new().stringify(available_sku))
func _on_purchases_updated(purchases):
print("Purchases updated: %s" % to_json(purchases))
print("Purchases updated: %s" % JSON.new().stringify(purchases))
# See _on_connected
for purchase in purchases:
@@ -110,7 +110,7 @@ func _on_sku_details_query_error(code, message):
func _on_disconnected():
show_alert("GodotGooglePlayBilling disconnected. Will try to reconnect in 10s...")
yield(get_tree().create_timer(10), "timeout")
await get_tree().create_timer(10).timeout
payment.startConnection()

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
type="StreamTexture2D"
path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://icon.png"
dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"]
[params]

View File

@@ -7,10 +7,10 @@ anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
margin_left = -512.711
margin_top = -300.0
margin_right = 511.289
margin_bottom = 300.0
offset_left = -512.711
offset_top = -300.0
offset_right = 511.289
offset_bottom = 300.0
size_flags_horizontal = 2
size_flags_vertical = 2
script = ExtResource( 1 )
@@ -23,22 +23,22 @@ anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
margin_left = 64.0
margin_top = 64.0
margin_right = -64.0
margin_bottom = -64.0
offset_left = 64.0
offset_top = 64.0
offset_right = -64.0
offset_bottom = -64.0
grow_horizontal = 2
grow_vertical = 2
rect_min_size = Vector2( 400, 0 )
rect_min_size = Vector2(400, 0)
size_flags_vertical = 4
popup_exclusive = true
dialog_autowrap = true
[node name="Label" type="Label" parent="."]
margin_left = 300.0
margin_top = 40.0
margin_right = 996.0
margin_bottom = 156.0
offset_left = 300.0
offset_top = 40.0
offset_right = 996.0
offset_bottom = 156.0
size_flags_horizontal = 2
size_flags_vertical = 0
text = "To test in-app purchase on android device,
@@ -50,30 +50,30 @@ text = "To test in-app purchase on android device,
4. Changes you make in the Play Console may take some time before taking effect"
[node name="QuerySkuDetailsButton" type="Button" parent="."]
margin_left = 40.5697
margin_top = 39.9347
margin_right = 221.57
margin_bottom = 91.9347
offset_left = 40.5697
offset_top = 39.9347
offset_right = 221.57
offset_bottom = 91.9347
text = "Query SKU details"
__meta__ = {
"_edit_use_anchors_": false
}
[node name="PurchaseButton" type="Button" parent="."]
margin_left = 40.5697
margin_top = 101.203
margin_right = 221.57
margin_bottom = 153.203
offset_left = 40.5697
offset_top = 101.203
offset_right = 221.57
offset_bottom = 153.203
text = "Purchase"
__meta__ = {
"_edit_use_anchors_": false
}
[node name="ConsumeButton" type="Button" parent="."]
margin_left = 40.5697
margin_top = 162.142
margin_right = 221.57
margin_bottom = 214.142
offset_left = 40.5697
offset_top = 162.142
offset_right = 221.57
offset_bottom = 214.142
text = "Consume"
__meta__ = {
"_edit_use_anchors_": false

View File

@@ -33,7 +33,7 @@ window/stretch/aspect="expand"
[gdnative]
singletons=[ ]
singletons=[]
[rendering]

View File

@@ -2,26 +2,26 @@
[ext_resource path="res://default_env.tres" type="Environment" id=1]
[sub_resource type="SpatialMaterial" id=1]
[sub_resource type="StandardMaterial3D" id=1]
params_diffuse_mode = 1
albedo_color = Color( 0.149414, 0.796875, 0.569252, 1 )
albedo_color = Color(0.149414, 0.796875, 0.569252, 1)
roughness = 0.0
[sub_resource type="CubeMesh" id=2]
[sub_resource type="BoxMesh" id=2]
[node name="Spatial" type="Spatial"]
[node name="Node3D" type="Node3D"]
[node name="MeshInstance" type="MeshInstance" parent="."]
transform = Transform( 0.707107, 0, -0.707107, -0.353553, 0.866025, -0.353553, 0.612372, 0.5, 0.612372, 0, 0, 0 )
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
transform = Transform3D(0.707107, 0, -0.707107, -0.353553, 0.866025, -0.353553, 0.612372, 0.5, 0.612372, 0, 0, 0)
material_override = SubResource( 1 )
mesh = SubResource( 2 )
material/0 = null
surface_material_override/0 = null
[node name="DirectionalLight" type="DirectionalLight" parent="."]
transform = Transform( 0.926535, 0.11439, -0.358396, 0.199614, 0.658013, 0.726067, 0.318884, -0.744267, 0.586839, 0, 0, 0 )
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(0.926535, 0.11439, -0.358396, 0.199614, 0.658013, 0.726067, 0.318884, -0.744267, 0.586839, 0, 0, 0)
[node name="Camera" type="Camera" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 5 )
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 5)
fov = 60.0
near = 0.1

View File

@@ -1,12 +1,12 @@
extends Control
export(NodePath) var target
export var min_scale = 0.1
export var max_scale = 3.0
export var one_finger_rot_x = true
export var one_finger_rot_y = true
export var two_fingers_rot_z = true
export var two_fingers_zoom = true
@export var target: NodePath
@export var min_scale = 0.1
@export var max_scale = 3.0
@export var one_finger_rot_x = true
@export var one_finger_rot_y = true
@export var two_fingers_rot_z = true
@export var two_fingers_zoom = true
var base_state
var curr_state

View File

@@ -13,25 +13,25 @@ __meta__ = {
}
[node name="HBoxContainer" type="HBoxContainer" parent="."]
margin_right = 1024.0
margin_bottom = 298.0
offset_right = 1024.0
offset_bottom = 298.0
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="ViewportContainer" type="ViewportContainer" parent="HBoxContainer"]
margin_right = 510.0
margin_bottom = 298.0
[node name="SubViewportContainer" type="SubViewportContainer" parent="HBoxContainer"]
offset_right = 510.0
offset_bottom = 298.0
size_flags_horizontal = 3
size_flags_vertical = 3
stretch = true
script = ExtResource( 1 )
target = NodePath("Viewport/Spatial/MeshInstance")
target = NodePath("SubViewport/Node3D/MeshInstance3D")
one_finger_rot_y = false
two_fingers_rot_z = false
two_fingers_zoom = false
[node name="Viewport" type="Viewport" parent="HBoxContainer/ViewportContainer"]
size = Vector2( 510, 298 )
[node name="SubViewport" type="SubViewport" parent="HBoxContainer/SubViewportContainer"]
size = Vector2(510, 298)
own_world = true
transparent_bg = true
handle_input_locally = false
@@ -40,32 +40,32 @@ hdr = false
usage = 3
render_target_update_mode = 3
[node name="Spatial" parent="HBoxContainer/ViewportContainer/Viewport" instance=ExtResource( 2 )]
[node name="Node3D" parent="HBoxContainer/SubViewportContainer/SubViewport" instance=ExtResource( 2 )]
[node name="Camera" parent="HBoxContainer/ViewportContainer/Viewport/Spatial" index="2"]
[node name="Camera3D" parent="HBoxContainer/SubViewportContainer/SubViewport/Node3D" index="2"]
current = true
[node name="Label" type="Label" parent="HBoxContainer/ViewportContainer"]
margin_left = 7.0
margin_top = 11.0
margin_right = 157.0
margin_bottom = 25.0
[node name="Label" type="Label" parent="HBoxContainer/SubViewportContainer"]
offset_left = 7.0
offset_top = 11.0
offset_right = 157.0
offset_bottom = 25.0
text = "One-finger rot around X"
[node name="ViewportContainer2" type="ViewportContainer" parent="HBoxContainer"]
margin_left = 514.0
margin_right = 1024.0
margin_bottom = 298.0
[node name="ViewportContainer2" type="SubViewportContainer" parent="HBoxContainer"]
offset_left = 514.0
offset_right = 1024.0
offset_bottom = 298.0
size_flags_horizontal = 3
size_flags_vertical = 3
stretch = true
script = ExtResource( 1 )
target = NodePath("Viewport/Spatial/MeshInstance")
target = NodePath("SubViewport/Node3D/MeshInstance3D")
two_fingers_rot_z = false
two_fingers_zoom = false
[node name="Viewport" type="Viewport" parent="HBoxContainer/ViewportContainer2"]
size = Vector2( 510, 298 )
[node name="SubViewport" type="SubViewport" parent="HBoxContainer/ViewportContainer2"]
size = Vector2(510, 298)
own_world = true
transparent_bg = true
handle_input_locally = false
@@ -74,37 +74,37 @@ hdr = false
usage = 3
render_target_update_mode = 3
[node name="Spatial" parent="HBoxContainer/ViewportContainer2/Viewport" instance=ExtResource( 2 )]
[node name="Node3D" parent="HBoxContainer/ViewportContainer2/SubViewport" instance=ExtResource( 2 )]
[node name="Camera" parent="HBoxContainer/ViewportContainer2/Viewport/Spatial" index="2"]
[node name="Camera3D" parent="HBoxContainer/ViewportContainer2/SubViewport/Node3D" index="2"]
current = true
[node name="Label2" type="Label" parent="HBoxContainer/ViewportContainer2"]
margin_left = 8.0
margin_top = 11.0
margin_right = 196.0
margin_bottom = 25.0
offset_left = 8.0
offset_top = 11.0
offset_right = 196.0
offset_bottom = 25.0
text = "One-finger rot around X and Y"
[node name="HBoxContainer2" type="HBoxContainer" parent="."]
margin_top = 302.0
margin_right = 1024.0
margin_bottom = 600.0
offset_top = 302.0
offset_right = 1024.0
offset_bottom = 600.0
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="ViewportContainer" type="ViewportContainer" parent="HBoxContainer2"]
margin_right = 510.0
margin_bottom = 298.0
[node name="SubViewportContainer" type="SubViewportContainer" parent="HBoxContainer2"]
offset_right = 510.0
offset_bottom = 298.0
size_flags_horizontal = 3
size_flags_vertical = 3
stretch = true
script = ExtResource( 1 )
target = NodePath("Viewport/Spatial/MeshInstance")
target = NodePath("SubViewport/Node3D/MeshInstance3D")
two_fingers_zoom = false
[node name="Viewport" type="Viewport" parent="HBoxContainer2/ViewportContainer"]
size = Vector2( 510, 298 )
[node name="SubViewport" type="SubViewport" parent="HBoxContainer2/SubViewportContainer"]
size = Vector2(510, 298)
own_world = true
transparent_bg = true
handle_input_locally = false
@@ -113,30 +113,30 @@ hdr = false
usage = 3
render_target_update_mode = 3
[node name="Spatial" parent="HBoxContainer2/ViewportContainer/Viewport" instance=ExtResource( 2 )]
[node name="Node3D" parent="HBoxContainer2/SubViewportContainer/SubViewport" instance=ExtResource( 2 )]
[node name="Camera" parent="HBoxContainer2/ViewportContainer/Viewport/Spatial" index="2"]
[node name="Camera3D" parent="HBoxContainer2/SubViewportContainer/SubViewport/Node3D" index="2"]
current = true
[node name="Label3" type="Label" parent="HBoxContainer2/ViewportContainer"]
margin_left = 8.0
margin_top = 9.0
margin_right = 236.0
margin_bottom = 23.0
[node name="Label3" type="Label" parent="HBoxContainer2/SubViewportContainer"]
offset_left = 8.0
offset_top = 9.0
offset_right = 236.0
offset_bottom = 23.0
text = "One-finger X/Y rot + two-finger Z rot"
[node name="ViewportContainer2" type="ViewportContainer" parent="HBoxContainer2"]
margin_left = 514.0
margin_right = 1024.0
margin_bottom = 298.0
[node name="ViewportContainer2" type="SubViewportContainer" parent="HBoxContainer2"]
offset_left = 514.0
offset_right = 1024.0
offset_bottom = 298.0
size_flags_horizontal = 3
size_flags_vertical = 3
stretch = true
script = ExtResource( 1 )
target = NodePath("Viewport/Spatial/MeshInstance")
target = NodePath("SubViewport/Node3D/MeshInstance3D")
[node name="Viewport" type="Viewport" parent="HBoxContainer2/ViewportContainer2"]
size = Vector2( 510, 298 )
[node name="SubViewport" type="SubViewport" parent="HBoxContainer2/ViewportContainer2"]
size = Vector2(510, 298)
own_world = true
transparent_bg = true
handle_input_locally = false
@@ -145,19 +145,19 @@ hdr = false
usage = 3
render_target_update_mode = 3
[node name="Spatial" parent="HBoxContainer2/ViewportContainer2/Viewport" instance=ExtResource( 2 )]
[node name="Node3D" parent="HBoxContainer2/ViewportContainer2/SubViewport" instance=ExtResource( 2 )]
[node name="Camera" parent="HBoxContainer2/ViewportContainer2/Viewport/Spatial" index="2"]
[node name="Camera3D" parent="HBoxContainer2/ViewportContainer2/SubViewport/Node3D" index="2"]
current = true
[node name="Label2" type="Label" parent="HBoxContainer2/ViewportContainer2"]
margin_left = 12.0
margin_top = 9.0
margin_right = 279.0
margin_bottom = 23.0
offset_left = 12.0
offset_top = 9.0
offset_right = 279.0
offset_bottom = 23.0
text = "One-finger X/Y, two-finger Z + pinch"
[editable path="HBoxContainer/ViewportContainer/Viewport/Spatial"]
[editable path="HBoxContainer/ViewportContainer2/Viewport/Spatial"]
[editable path="HBoxContainer2/ViewportContainer/Viewport/Spatial"]
[editable path="HBoxContainer2/ViewportContainer2/Viewport/Spatial"]
[editable path="HBoxContainer/SubViewportContainer/SubViewport/Node3D"]
[editable path="HBoxContainer/ViewportContainer2/SubViewport/Node3D"]
[editable path="HBoxContainer2/SubViewportContainer/SubViewport/Node3D"]
[editable path="HBoxContainer2/ViewportContainer2/SubViewport/Node3D"]

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
type="StreamTexture2D"
path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://icon.png"
dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"]
[params]

View File

@@ -17,7 +17,7 @@ config/icon="res://icon.png"
[gdnative]
singletons=[ ]
singletons=[]
[input_devices]
@@ -30,5 +30,5 @@ quality/intended_usage/framebuffer_allocation=0
quality/intended_usage/framebuffer_allocation.mobile=0
vram_compression/import_etc=true
vram_compression/import_etc2=false
environment/default_clear_color=Color( 0.113725, 0.133333, 0.196078, 1 )
environment/default_clear_color=Color(0.113725, 0.133333, 0.196078, 1)
environment/default_environment="res://default_env.tres"

View File

@@ -7,7 +7,7 @@ func _process(_delta):
func _draw():
# Get the touch helper singleton.
var touch_helper = get_node("/root/TouchHelper")
var touch_helper = get_node(^"/root/TouchHelper")
# Draw every pointer as a circle.
for ptr_index in touch_helper.state.keys():
var pos = touch_helper.state[ptr_index]

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
type="StreamTexture2D"
path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://icon.png"
dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"]
[params]

View File

@@ -21,7 +21,7 @@ TouchHelper="*res://TouchHelper.gd"
[gdnative]
singletons=[ ]
singletons=[]
[input_devices]
@@ -32,4 +32,4 @@ pointing/emulate_touch_from_mouse=true
quality/driver/driver_name="GLES2"
vram_compression/import_etc=true
vram_compression/import_etc2=false
environment/default_clear_color=Color( 0.113725, 0.133333, 0.196078, 1 )
environment/default_clear_color=Color(0.113725, 0.133333, 0.196078, 1)

View File

@@ -1,18 +1,18 @@
[remap]
importer="texture"
type="StreamTexture"
path.s3tc="res://.import/cube_6.png-0b954e2c88c21596044fe6448711988e.s3tc.stex"
path.etc="res://.import/cube_6.png-0b954e2c88c21596044fe6448711988e.etc.stex"
type="StreamTexture2D"
path.s3tc="res://.godot/imported/cube_6.png-0b954e2c88c21596044fe6448711988e.s3tc.stex"
path.etc="res://.godot/imported/cube_6.png-0b954e2c88c21596044fe6448711988e.etc.stex"
metadata={
"imported_formats": [ "s3tc", "etc" ],
"imported_formats": ["s3tc", "etc"],
"vram_texture": true
}
[deps]
source_file="res://cube_6.png"
dest_files=[ "res://.import/cube_6.png-0b954e2c88c21596044fe6448711988e.s3tc.stex", "res://.import/cube_6.png-0b954e2c88c21596044fe6448711988e.etc.stex" ]
dest_files=["res://.godot/imported/cube_6.png-0b954e2c88c21596044fe6448711988e.s3tc.stex", "res://.godot/imported/cube_6.png-0b954e2c88c21596044fe6448711988e.etc.stex"]
[params]

View File

@@ -1,6 +1,6 @@
[gd_resource type="Environment" load_steps=2 format=2]
[sub_resource type="ProceduralSky" id=1]
[sub_resource type="Sky" id=1]
[resource]
background_mode = 2

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
type="StreamTexture2D"
path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://icon.png"
dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"]
[params]

View File

@@ -98,9 +98,9 @@ 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)
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)
# Check if we have all needed data
if grav.length() < 0.1:
@@ -116,23 +116,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)
get_node(^"Arrows/AccelerometerArrow").transform.basis = get_basis_for_arrow(grav)
# Update our arrow showing our magnetometer
# Note that in absense 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)
get_node(^"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)
get_node(^"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 = get_node(^"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 = get_node(^"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)

View File

@@ -1,11 +1,11 @@
[gd_scene load_steps=11 format=2]
[ext_resource path="res://main.gd" type="Script" id=1]
[ext_resource path="res://cube_6.png" type="Texture" id=2]
[ext_resource path="res://cube_6.png" type="Texture2D" id=2]
[sub_resource type="Environment" id=1]
background_mode = 1
ambient_light_color = Color( 0.648438, 0.64578, 0.64578, 1 )
ambient_light_color = Color(0.648438, 0.64578, 0.64578, 1)
[sub_resource type="CylinderMesh" id=2]
top_radius = 0.2
@@ -13,29 +13,29 @@ bottom_radius = 0.1
height = 4.0
radial_segments = 16
[sub_resource type="SpatialMaterial" id=3]
[sub_resource type="StandardMaterial3D" id=3]
params_diffuse_mode = 1
albedo_color = Color( 0.356557, 1, 0.366611, 1 )
albedo_color = Color(0.356557, 1, 0.366611, 1)
roughness = 0.0
[sub_resource type="CylinderMesh" id=4]
top_radius = 0.1
radial_segments = 16
[sub_resource type="SpatialMaterial" id=5]
[sub_resource type="StandardMaterial3D" id=5]
params_diffuse_mode = 1
albedo_color = Color( 0.0266393, 0.292793, 1, 1 )
albedo_color = Color(0.0266393, 0.292793, 1, 1)
roughness = 0.0
[sub_resource type="SpatialMaterial" id=6]
[sub_resource type="StandardMaterial3D" id=6]
params_diffuse_mode = 1
albedo_color = Color( 0.957031, 0.801627, 0.0921731, 1 )
albedo_color = Color(0.957031, 0.801627, 0.0921731, 1)
roughness = 0.0
[sub_resource type="CubeMesh" id=7]
size = Vector3( 4, 4, 4 )
[sub_resource type="BoxMesh" id=7]
size = Vector3(4, 4, 4)
[sub_resource type="SpatialMaterial" id=8]
[sub_resource type="StandardMaterial3D" id=8]
params_diffuse_mode = 1
albedo_texture = ExtResource( 2 )
roughness = 0.0
@@ -44,89 +44,89 @@ roughness = 0.0
script = ExtResource( 1 )
[node name="Control" type="Control" parent="."]
margin_right = 1025.0
margin_bottom = 602.0
offset_right = 1025.0
offset_bottom = 602.0
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="Accelerometer" type="Label" parent="Control"]
margin_right = 340.0
margin_bottom = 14.0
rect_scale = Vector2( 2, 2 )
offset_right = 340.0
offset_bottom = 14.0
rect_scale = Vector2(2, 2)
text = "Accelerometer"
[node name="Magnetometer" type="Label" parent="Control"]
margin_top = 30.0
margin_right = 340.0
margin_bottom = 44.0
rect_scale = Vector2( 2, 2 )
offset_top = 30.0
offset_right = 340.0
offset_bottom = 44.0
rect_scale = Vector2(2, 2)
text = "Magnetometer"
[node name="Gyroscope" type="Label" parent="Control"]
margin_top = 60.0
margin_right = 340.0
margin_bottom = 74.0
rect_scale = Vector2( 2, 2 )
offset_top = 60.0
offset_right = 340.0
offset_bottom = 74.0
rect_scale = Vector2(2, 2)
text = "Gyroscope"
[node name="Camera" type="Camera" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.285209, 0, 11.9833 )
[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 )
fov = 74.0
near = 0.1
[node name="Arrows" type="Spatial" parent="."]
[node name="Arrows" type="Node3D" parent="."]
[node name="AccelerometerArrow" type="Spatial" parent="Arrows"]
transform = Transform( 1, 0, 0, 0, -1, 8.74228e-08, 0, -8.74228e-08, -1, 0, 0, 0 )
[node name="AccelerometerArrow" type="Node3D" parent="Arrows"]
transform = Transform3D(1, 0, 0, 0, -1, 8.74228e-08, 0, -8.74228e-08, -1, 0, 0, 0)
[node name="Bottom" type="MeshInstance" parent="Arrows/AccelerometerArrow"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 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 )
material/0 = SubResource( 3 )
surface_material_override/0 = SubResource( 3 )
[node name="Top" type="MeshInstance" parent="Arrows/AccelerometerArrow"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, 0 )
[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 )
material/0 = SubResource( 3 )
surface_material_override/0 = SubResource( 3 )
[node name="MagnetoArrow" type="Spatial" parent="Arrows"]
transform = Transform( -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 0, 0, 0 )
[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="MeshInstance" parent="Arrows/MagnetoArrow"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 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 )
material/0 = SubResource( 5 )
surface_material_override/0 = SubResource( 5 )
[node name="Top" type="MeshInstance" parent="Arrows/MagnetoArrow"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, 0 )
[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 )
material/0 = SubResource( 5 )
surface_material_override/0 = SubResource( 5 )
[node name="NorthArrow" type="Spatial" parent="Arrows"]
transform = Transform( 1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0 )
[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="MeshInstance" parent="Arrows/NorthArrow"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 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 )
material/0 = SubResource( 6 )
surface_material_override/0 = SubResource( 6 )
[node name="Top" type="MeshInstance" parent="Arrows/NorthArrow"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, 0 )
[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 )
material/0 = SubResource( 6 )
surface_material_override/0 = SubResource( 6 )
[node name="Boxes" type="Spatial" parent="."]
[node name="Boxes" type="Node3D" parent="."]
[node name="MagAndGrav" type="MeshInstance" parent="Boxes"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -7, -4, 0 )
[node name="MagAndGrav" type="MeshInstance3D" parent="Boxes"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7, -4, 0)
mesh = SubResource( 7 )
material/0 = SubResource( 8 )
surface_material_override/0 = SubResource( 8 )
[node name="GyroAndGrav" type="MeshInstance" parent="Boxes"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 7, -4, 0 )
[node name="GyroAndGrav" type="MeshInstance3D" parent="Boxes"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, -4, 0)
mesh = SubResource( 7 )
material/0 = SubResource( 8 )
surface_material_override/0 = SubResource( 8 )
[node name="DirectionalLight" type="DirectionalLight" parent="."]
transform = Transform( 0.884838, -0.329433, 0.329449, 0, 0.707124, 0.707089, -0.4659, -0.625659, 0.62569, 0, 4.69444, 0 )
[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)

View File

@@ -8,7 +8,7 @@
config_version=4
_global_script_classes=[ ]
_global_script_classes=[]
_global_script_class_icons={
}
@@ -22,7 +22,7 @@ config/icon="res://icon.png"
[gdnative]
singletons=[ ]
singletons=[]
[rendering]