fix(logic step): proper procedure
This commit is contained in:
@@ -3,31 +3,40 @@ use crate::nodes::data;
|
||||
use crate::nodes::field;
|
||||
use crate::nodes::input;
|
||||
use crate::nodes::item;
|
||||
use crate::nodes::root;
|
||||
use crate::nodes::root::Root;
|
||||
use crate::nodes::spatial;
|
||||
use lazy_static::lazy_static;
|
||||
use libstardustxr::messenger::Messenger;
|
||||
use mio::net::UnixStream;
|
||||
use once_cell::sync::OnceCell;
|
||||
use std::sync::Arc;
|
||||
|
||||
lazy_static! {
|
||||
pub static ref INTERNAL_CLIENT: Arc<Client> = Default::default();
|
||||
pub static ref INTERNAL_CLIENT: Arc<Client> = Client::new_local();
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct Client {
|
||||
pub messenger: Option<Messenger>,
|
||||
pub scenegraph: Scenegraph,
|
||||
pub root: OnceCell<Arc<Root>>,
|
||||
}
|
||||
|
||||
impl Client {
|
||||
pub fn new_local() -> Arc<Self> {
|
||||
Arc::new(Client {
|
||||
messenger: None,
|
||||
scenegraph: Default::default(),
|
||||
root: OnceCell::new(),
|
||||
})
|
||||
}
|
||||
pub fn from_connection(connection: UnixStream) -> Arc<Self> {
|
||||
println!("New client connected");
|
||||
let client = Arc::new(Client {
|
||||
messenger: Some(Messenger::new(connection)),
|
||||
scenegraph: Default::default(),
|
||||
root: OnceCell::new(),
|
||||
});
|
||||
let _ = client.scenegraph.client.set(Arc::downgrade(&client));
|
||||
root::create_root(&client);
|
||||
let _ = client.root.set(Root::create(&client));
|
||||
spatial::create_interface(&client);
|
||||
field::create_interface(&client);
|
||||
data::create_interface(&client);
|
||||
@@ -43,3 +52,8 @@ impl Client {
|
||||
}
|
||||
}
|
||||
}
|
||||
impl Drop for Client {
|
||||
fn drop(&mut self) {
|
||||
println!("Client disconnected");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user