codename-routes/routes-native/\

45 lines
935 B
Text
Raw Permalink Normal View History

2022-05-01 20:23:01 +00:00
use gdnative::{export::hint::EnumHint, prelude::*};
use lazy_static::lazy_static;
use std::{string::ToString, vec};
use strum::IntoEnumIterator;
use strum_macros::{Display, EnumIter};
use tokio::sync::RwLock;
lazy_static! {
// static ref STATE: RwLock<Vector3> = RwLock::new(Vector3::new(1.0, 2.0, 3.0));
}
#[derive(Debug, EnumIter, Display, FromVariant, ToVariant)]
enum Terrain {
Earth,
Rock,
Sand,
Water,
Air,
}
#[derive(NativeClass)]
#[inherit(Node)]
pub struct StateServer;
#[methods]
impl StateServer {
fn new(_owner: &Node) -> Self {
StateServer
}
#[export]
fn _ready(&self, _owner: &Node) {
// godot_print!("hello, state")
}
#[export]
fn terrain_types(&self, _owner: &Node) -> EnumHint{
let mut hints = vec![];
for terrain in Terrain::iter() {
hints.push(terrain.to_string());
}
EnumHint::new(hints)
}
}