feat(README): added plugin guidelines
This commit is contained in:
parent
93d25e93ba
commit
74cc64c568
|
@ -16,3 +16,6 @@ Second, all structs that are passed as events should not be naked if they contai
|
|||
|
||||
Third, you must put events and resources within their own local files `event` and `resource` and you should also only refer to them using the `event::EVENT` or `resource::RESOURCE` syntax. You should not import the full namespace down to `event` or `resource`, at maximum you can only import to the level before that. This helps to keep events and resources and other structs distinct.
|
||||
|
||||
### Plugins
|
||||
|
||||
The `plugin` is a very important concept in `bevy` for modularity, and reusability. As such many pieces of `nexus` are split into multiple plugins. As plugins are once again structs given extra behavior they follow the rules above, placed in their own local `plugin` folder, however plugins are likely to be used outside of `nexus` so having `plugin` as part of the name, such as `struct PayloadPlugin` is not only permissible, but required, `Plugin` must be postfixed to the end of any `plugin` struct.
|
|
@ -0,0 +1,28 @@
|
|||
use std::net::SocketAddr;
|
||||
use bevy::app::{App, Plugin};
|
||||
use bevy::prelude::{Commands, EventReader, ResMut};
|
||||
use bytes::Bytes;
|
||||
use crossbeam_channel::{Receiver, Sender};
|
||||
use qp2p::{Config, Endpoint};
|
||||
use tokio::runtime::Runtime;
|
||||
use bevy_add_events_macro::add_events;
|
||||
use crate::networking::{event, resource};
|
||||
|
||||
pub struct NetworkingPlugin;
|
||||
|
||||
impl Plugin for NetworkingPlugin {
|
||||
fn build(&self, app: &mut App) {
|
||||
add_events!(app, ServerConnection, ServerSocketAddr);
|
||||
app.add_startup_system(setup_networking_runtime());
|
||||
}
|
||||
}
|
||||
|
||||
pub fn setup_networking_runtime(mut commands: Commands) {
|
||||
commands.insert_resource(resource::NetworkingRuntime(Runtime::new().expect("networking runtime needs to be init'd to work!")));
|
||||
}
|
||||
|
||||
pub fn connection_added(mut commands: Commands, mut socket_addr: EventReader<event::ServerSocketAddr>, mut networking_runtime: ResMut<resource::NetworkingRuntime>) {
|
||||
let mut config = Config::default();
|
||||
config.idle_timeout = None;
|
||||
let endpoint = Endpoint::new_client(SocketAddr::from)
|
||||
}
|
Loading…
Reference in New Issue