Setup basic scene to move the cube to last data received
This commit is contained in:
parent
73fed102c2
commit
372468b5a1
6 changed files with 59 additions and 4 deletions
|
|
@ -2,6 +2,11 @@
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
if not os.path.isdir("modules/mavlink"):
|
||||||
|
raise UserError("MAVLink sources missing, run git submodule update --init --recursive")
|
||||||
|
if not os.path.isdir("include/mavlink"):
|
||||||
|
raise UserError("MAVLink generated headers missing, run python update_mavlink.py")
|
||||||
|
|
||||||
env = SConscript("modules/godot-cpp/SConstruct")
|
env = SConscript("modules/godot-cpp/SConstruct")
|
||||||
|
|
||||||
# For reference:
|
# For reference:
|
||||||
|
|
|
||||||
6
project/aircraft.gd
Normal file
6
project/aircraft.gd
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
extends Node3D
|
||||||
|
|
||||||
|
@export var connector: MarshConnector
|
||||||
|
|
||||||
|
func _process(_delta: float) -> void:
|
||||||
|
transform = connector.get_aircraft()
|
||||||
1
project/aircraft.gd.uid
Normal file
1
project/aircraft.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://cx30pr7kn4c74
|
||||||
|
|
@ -1,5 +1,38 @@
|
||||||
[gd_scene format=3 uid="uid://cjrkxv8ix1h8s"]
|
[gd_scene load_steps=7 format=3 uid="uid://cjrkxv8ix1h8s"]
|
||||||
|
|
||||||
[node name="Node3D" type="Node3D"]
|
[ext_resource type="Script" uid="uid://cx30pr7kn4c74" path="res://aircraft.gd" id="1_ig7tw"]
|
||||||
|
|
||||||
|
[sub_resource type="BoxMesh" id="BoxMesh_0xm2m"]
|
||||||
|
|
||||||
|
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_ig7tw"]
|
||||||
|
|
||||||
|
[sub_resource type="Sky" id="Sky_0xm2m"]
|
||||||
|
sky_material = SubResource("ProceduralSkyMaterial_ig7tw")
|
||||||
|
|
||||||
|
[sub_resource type="Environment" id="Environment_ig7tw"]
|
||||||
|
background_mode = 2
|
||||||
|
sky = SubResource("Sky_0xm2m")
|
||||||
|
|
||||||
|
[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_0xm2m"]
|
||||||
|
|
||||||
|
[node name="Main" type="Node3D"]
|
||||||
|
|
||||||
[node name="MarshConnector" type="MarshConnector" parent="."]
|
[node name="MarshConnector" type="MarshConnector" parent="."]
|
||||||
|
process_mode = 0
|
||||||
|
|
||||||
|
[node name="Aircraft" type="Node3D" parent="." node_paths=PackedStringArray("connector")]
|
||||||
|
script = ExtResource("1_ig7tw")
|
||||||
|
connector = NodePath("../MarshConnector")
|
||||||
|
|
||||||
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="Aircraft"]
|
||||||
|
mesh = SubResource("BoxMesh_0xm2m")
|
||||||
|
|
||||||
|
[node name="Camera3D" type="Camera3D" parent="."]
|
||||||
|
transform = Transform3D(-1, -2.26267e-08, 8.44439e-08, 0, 0.965926, 0.258819, -8.74228e-08, 0.258819, -0.965926, 0, 1, -3)
|
||||||
|
|
||||||
|
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||||
|
transform = Transform3D(-0.707107, -0.683013, 0.183013, 0, 0.258819, 0.965926, -0.707107, 0.683013, -0.183013, 3, 3, 3)
|
||||||
|
|
||||||
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||||
|
environment = SubResource("Environment_ig7tw")
|
||||||
|
camera_attributes = SubResource("CameraAttributesPractical_0xm2m")
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,10 @@
|
||||||
#include "godot_cpp/core/math.hpp"
|
#include "godot_cpp/core/math.hpp"
|
||||||
#include "godot_cpp/core/memory.hpp"
|
#include "godot_cpp/core/memory.hpp"
|
||||||
#include "godot_cpp/core/print_string.hpp"
|
#include "godot_cpp/core/print_string.hpp"
|
||||||
|
#include "godot_cpp/variant/basis.hpp"
|
||||||
#include "godot_cpp/variant/packed_byte_array.hpp"
|
#include "godot_cpp/variant/packed_byte_array.hpp"
|
||||||
#include "godot_cpp/variant/quaternion.hpp"
|
#include "godot_cpp/variant/quaternion.hpp"
|
||||||
|
#include "godot_cpp/variant/transform3d.hpp"
|
||||||
#include "godot_cpp/variant/vector3.hpp"
|
#include "godot_cpp/variant/vector3.hpp"
|
||||||
#include "mavlink/all/mavlink.h" // IWYU pragma: keep; always include the mavlink.h file for selected dialect
|
#include "mavlink/all/mavlink.h" // IWYU pragma: keep; always include the mavlink.h file for selected dialect
|
||||||
#include "mavlink/common/mavlink_msg_sim_state.h"
|
#include "mavlink/common/mavlink_msg_sim_state.h"
|
||||||
|
|
@ -21,6 +23,7 @@ using namespace godot;
|
||||||
void MarshConnector::_bind_methods() {
|
void MarshConnector::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("send_heartbeat"),
|
ClassDB::bind_method(D_METHOD("send_heartbeat"),
|
||||||
&MarshConnector::send_heartbeat);
|
&MarshConnector::send_heartbeat);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_aircraft"), &MarshConnector::get_aircraft);
|
||||||
}
|
}
|
||||||
|
|
||||||
MarshConnector::MarshConnector() {
|
MarshConnector::MarshConnector() {
|
||||||
|
|
@ -123,14 +126,18 @@ float MarshConnector::get_parameter(const String &id) {
|
||||||
return Math_NAN;
|
return Math_NAN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Transform3D MarshConnector::get_aircraft() {
|
||||||
|
return Transform3D{Basis{last_rotation}, last_location};
|
||||||
|
}
|
||||||
|
|
||||||
Vector2 MarshConnector::local_meters_from_global_degrees(double latitude,
|
Vector2 MarshConnector::local_meters_from_global_degrees(double latitude,
|
||||||
double longitude) {
|
double longitude) {
|
||||||
|
|
||||||
// Convert everything to radians
|
// Convert everything to radians
|
||||||
const double lat = latitude * Math_PI / 180.0;
|
const double lat = latitude * Math_PI / 180.0;
|
||||||
const double lon = longitude * Math_PI / 180.0;
|
const double lon = longitude * Math_PI / 180.0;
|
||||||
const double lat0 = parameters[LOCAL_FRAME_LAT] * M_PI / 180.0;
|
const double lat0 = parameters[LOCAL_FRAME_LAT] * Math_PI / 180.0;
|
||||||
const double lon0 = parameters[LOCAL_FRAME_LON] * M_PI / 180.0;
|
const double lon0 = parameters[LOCAL_FRAME_LON] * Math_PI / 180.0;
|
||||||
|
|
||||||
double EARTH_RADIUS = 6371008.7714; // mean radius for WGS-84, in meters
|
double EARTH_RADIUS = 6371008.7714; // mean radius for WGS-84, in meters
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
#include "godot_cpp/classes/packet_peer_udp.hpp"
|
#include "godot_cpp/classes/packet_peer_udp.hpp"
|
||||||
#include "godot_cpp/classes/timer.hpp"
|
#include "godot_cpp/classes/timer.hpp"
|
||||||
#include "godot_cpp/variant/quaternion.hpp"
|
#include "godot_cpp/variant/quaternion.hpp"
|
||||||
|
#include "godot_cpp/variant/transform3d.hpp"
|
||||||
#include "godot_cpp/variant/vector2.hpp"
|
#include "godot_cpp/variant/vector2.hpp"
|
||||||
#include "godot_cpp/variant/vector3.hpp"
|
#include "godot_cpp/variant/vector3.hpp"
|
||||||
#include "mavlink/mavlink_types.h"
|
#include "mavlink/mavlink_types.h"
|
||||||
|
|
@ -32,6 +33,8 @@ public:
|
||||||
Error set_parameter(const String &id, float value);
|
Error set_parameter(const String &id, float value);
|
||||||
// Get current parameter value
|
// Get current parameter value
|
||||||
float get_parameter(const String &id);
|
float get_parameter(const String &id);
|
||||||
|
// Get current state of the aircraft
|
||||||
|
Transform3D get_aircraft();
|
||||||
|
|
||||||
// Convert from global coordinates to local position x=north, y=east
|
// Convert from global coordinates to local position x=north, y=east
|
||||||
// taking into account current configuration.
|
// taking into account current configuration.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue