refactoring window size
This commit is contained in:
parent
86356b3904
commit
2d99a49eda
|
|
@ -2,7 +2,8 @@
|
|||
use fyrox::{
|
||||
asset::manager::ResourceManager,
|
||||
core::pool::Handle,
|
||||
event::Event,
|
||||
engine::GraphicsContext,
|
||||
event::{Event, WindowEvent},
|
||||
gui::message::UiMessage,
|
||||
plugin::{Plugin, PluginConstructor, PluginContext, PluginRegistrationContext},
|
||||
scene::{
|
||||
|
|
@ -14,10 +15,12 @@ use std::path::Path;
|
|||
mod map;
|
||||
mod player;
|
||||
mod enemy;
|
||||
mod msg;
|
||||
|
||||
use map::build_map;
|
||||
use player::Player;
|
||||
use enemy::Enemy;
|
||||
use msg::Message;
|
||||
|
||||
|
||||
pub struct GameConstructor;
|
||||
|
|
@ -60,7 +63,29 @@ impl Plugin for Game {
|
|||
// Add your global update code here.
|
||||
}
|
||||
|
||||
fn on_os_event(&mut self, _event: &Event<()>, _context: PluginContext) {}
|
||||
fn on_os_event(&mut self, event: &Event<()>, context: PluginContext) {
|
||||
if let Event::Resumed {} = event {
|
||||
if let GraphicsContext::Initialized(ref graphics_context) = context.graphics_context {
|
||||
let window_size = graphics_context.window.inner_size();
|
||||
for script_scene in &context.script_processor.scripted_scenes {
|
||||
script_scene.message_sender.send_global(Message::Resize {
|
||||
width: window_size.width,
|
||||
height: window_size.height
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
if let Event::WindowEvent { event, .. } = event {
|
||||
if let WindowEvent::Resized(size) = event {
|
||||
for script_scene in &context.script_processor.scripted_scenes {
|
||||
script_scene.message_sender.send_global(Message::Resize {
|
||||
width: size.width,
|
||||
height: size.height
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn on_ui_message(&mut self, _context: &mut PluginContext, _message: &UiMessage) {
|
||||
// Handle UI events here.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
#[derive(Debug, Clone)]
|
||||
pub enum Message {
|
||||
Resize {
|
||||
width: u32,
|
||||
height: u32,
|
||||
},
|
||||
}
|
||||
|
|
@ -11,7 +11,6 @@ use fyrox::{
|
|||
uuid_provider,
|
||||
visitor::prelude::*,
|
||||
},
|
||||
engine::GraphicsContext,
|
||||
event::{ElementState, Event, TouchPhase, WindowEvent},
|
||||
keyboard::{KeyCode, PhysicalKey},
|
||||
scene::{
|
||||
|
|
@ -24,8 +23,9 @@ use fyrox::{
|
|||
node::Node,
|
||||
transform::TransformBuilder,
|
||||
},
|
||||
script::{ScriptContext, ScriptTrait},
|
||||
script::{ScriptContext, ScriptTrait, ScriptMessageContext, ScriptMessagePayload},
|
||||
};
|
||||
use crate::msg::Message;
|
||||
|
||||
#[derive(Visit, Reflect, Debug, Clone, Default)]
|
||||
pub struct Player {
|
||||
|
|
@ -439,17 +439,24 @@ impl ScriptTrait for Player {
|
|||
}
|
||||
|
||||
// Put start logic - it is called when every other script is already initialized.
|
||||
fn on_start(&mut self, _context: &mut ScriptContext) {}
|
||||
fn on_start(&mut self, context: &mut ScriptContext) {
|
||||
context.message_dispatcher.subscribe_to::<Message>(context.handle);
|
||||
}
|
||||
|
||||
fn on_message(
|
||||
&mut self,
|
||||
message: &mut dyn ScriptMessagePayload,
|
||||
_ctx: &mut ScriptMessageContext,
|
||||
) {
|
||||
// React to message.
|
||||
if let Some(Message::Resize { width, height }) = message.downcast_ref::<Message>() {
|
||||
self.window_height = height.clone();
|
||||
self.window_width = width.clone();
|
||||
}
|
||||
}
|
||||
|
||||
// Called whenever there is an event from OS (mouse click, keypress, etc.)
|
||||
fn on_os_event(&mut self, event: &Event<()>, context: &mut ScriptContext) {
|
||||
if let Event::Resumed {} = event {
|
||||
if let GraphicsContext::Initialized(ref graphics_context) = context.graphics_context {
|
||||
let window_size = graphics_context.window.inner_size();
|
||||
self.window_height = window_size.height;
|
||||
self.window_width = window_size.width;
|
||||
}
|
||||
}
|
||||
if let Event::WindowEvent { event, .. } = event {
|
||||
if let WindowEvent::KeyboardInput { event, .. } = event {
|
||||
if let PhysicalKey::Code(keycode) = event.physical_key {
|
||||
|
|
@ -491,15 +498,6 @@ impl ScriptTrait for Player {
|
|||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
if let WindowEvent::Resized(size) = event {
|
||||
Log::info(format!(
|
||||
"Resized xheight{:?}, width {:?}",
|
||||
size.height, size.width
|
||||
));
|
||||
self.window_height = size.height;
|
||||
self.window_width = size.width;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue