fyrox update

This commit is contained in:
artem 2024-01-22 21:22:14 +03:00
parent 760a76a3e6
commit a1ca80c8cc
7 changed files with 177 additions and 114 deletions

48
Cargo.lock generated
View File

@ -207,6 +207,15 @@ version = "0.21.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"
[[package]]
name = "bincode"
version = "1.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
dependencies = [
"serde",
]
[[package]]
name = "bindgen"
version = "0.69.1"
@ -951,14 +960,14 @@ dependencies = [
[[package]]
name = "fyrox"
version = "0.32.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0f789108c271c0b593b7b7ad9bc24ff3a00cf72a91efd82997bf8dda9fbd4dd"
source = "git+https://github.com/FyroxEngine/Fyrox#b2e11b0679a1c2ffddee330233b78c8973349f8a"
dependencies = [
"bitflags 2.4.1",
"clap",
"ddsfile",
"fast_image_resize",
"fxhash",
"fyrox-animation",
"fyrox-core",
"fyrox-core-derive",
"fyrox-resource",
@ -977,7 +986,6 @@ dependencies = [
"rayon",
"ron",
"serde",
"spade",
"strum",
"strum_macros",
"tbc",
@ -985,15 +993,27 @@ dependencies = [
"winit",
]
[[package]]
name = "fyrox-animation"
version = "0.1.0"
source = "git+https://github.com/FyroxEngine/Fyrox#b2e11b0679a1c2ffddee330233b78c8973349f8a"
dependencies = [
"fxhash",
"fyrox-core",
"spade",
"strum",
"strum_macros",
]
[[package]]
name = "fyrox-core"
version = "0.26.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c18752435c86ea9cbd58ecad958ceaa6accccc5fd070c3a613de3c8d7dd2d57"
source = "git+https://github.com/FyroxEngine/Fyrox#b2e11b0679a1c2ffddee330233b78c8973349f8a"
dependencies = [
"android-activity",
"arrayvec",
"base64",
"bincode",
"bitflags 2.4.1",
"byteorder",
"futures",
@ -1019,8 +1039,7 @@ dependencies = [
[[package]]
name = "fyrox-core-derive"
version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "790f5b126d3777c465960bcf0e8ec13ee0aa638f6f7be66bb37fdd1c83e584f2"
source = "git+https://github.com/FyroxEngine/Fyrox#b2e11b0679a1c2ffddee330233b78c8973349f8a"
dependencies = [
"convert_case",
"darling",
@ -1033,20 +1052,20 @@ dependencies = [
[[package]]
name = "fyrox-resource"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfc35a102aed1ebc318039f6a1f5a8d1562616ef00e7065f525c0cc2efc3bc13"
source = "git+https://github.com/FyroxEngine/Fyrox#b2e11b0679a1c2ffddee330233b78c8973349f8a"
dependencies = [
"fxhash",
"fyrox-core",
"rayon",
"ron",
"serde",
"walkdir",
]
[[package]]
name = "fyrox-sound"
version = "0.33.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f93ca4e7a568494507a2f30b3726b74a63b199986caf670812d9414f0a208e2f"
source = "git+https://github.com/FyroxEngine/Fyrox#b2e11b0679a1c2ffddee330233b78c8973349f8a"
dependencies = [
"fyrox-core",
"fyrox-resource",
@ -1063,13 +1082,13 @@ dependencies = [
[[package]]
name = "fyrox-ui"
version = "0.23.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "941c34403f7c791ef351eaa6b74ce5655558980a6efa036451a9a0578bd3ab45"
source = "git+https://github.com/FyroxEngine/Fyrox#b2e11b0679a1c2ffddee330233b78c8973349f8a"
dependencies = [
"copypasta",
"fontdue",
"fxhash",
"fyrox-core",
"fyrox-resource",
"lazy_static",
"notify",
"serde",
@ -1081,8 +1100,7 @@ dependencies = [
[[package]]
name = "fyroxed_base"
version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4acc2d4e8fc5e96057ad85ea1ec6c5f2e7f988b53b18648083133dcb816110e8"
source = "git+https://github.com/FyroxEngine/Fyrox#b2e11b0679a1c2ffddee330233b78c8973349f8a"
dependencies = [
"fyrox",
"lazy_static",

View File

@ -4,9 +4,10 @@ members = ["editor", "executor", "executor-wasm", "executor-android", "game"]
resolver = "2"
[workspace.dependencies.fyrox]
version = "0.32.0"
git = "https://github.com/FyroxEngine/Fyrox"
[workspace.dependencies.fyroxed_base]
version = "0.19.0"
git = "https://github.com/FyroxEngine/Fyrox"
# Optimize the engine in debug builds, but leave project's code non-optimized.
# By using this technique, you can still debug you code, but engine will be fully

View File

@ -348,6 +348,10 @@ function __wbg_get_imports() {
imports.wbg.__wbindgen_object_drop_ref = function(arg0) {
takeObject(arg0);
};
imports.wbg.__wbindgen_is_undefined = function(arg0) {
const ret = getObject(arg0) === undefined;
return ret;
};
imports.wbg.__wbindgen_cb_drop = function(arg0) {
const obj = takeObject(arg0).original;
if (obj.cnt-- == 1) {
@ -357,10 +361,6 @@ function __wbg_get_imports() {
const ret = false;
return ret;
};
imports.wbg.__wbindgen_is_undefined = function(arg0) {
const ret = getObject(arg0) === undefined;
return ret;
};
imports.wbg.__wbindgen_object_clone_ref = function(arg0) {
const ret = getObject(arg0);
return addHeapObject(ret);
@ -474,6 +474,9 @@ function __wbg_get_imports() {
const ret = getObject(arg0).Window;
return addHeapObject(ret);
};
imports.wbg.__wbg_webkitExitFullscreen_51924dedcb0cfce0 = function(arg0) {
getObject(arg0).webkitExitFullscreen();
};
imports.wbg.__wbg_webkitFullscreenElement_7cc38bee61c82f9b = function(arg0) {
const ret = getObject(arg0).webkitFullscreenElement;
return isLikeNone(ret) ? 0 : addHeapObject(ret);
@ -856,6 +859,9 @@ function __wbg_get_imports() {
const ret = getObject(arg0).createElement(getStringFromWasm0(arg1, arg2));
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbg_exitFullscreen_b5d53ae882b17a5c = function(arg0) {
getObject(arg0).exitFullscreen();
};
imports.wbg.__wbg_style_97c680a5cbdf49cd = function(arg0) {
const ret = getObject(arg0).style;
return addHeapObject(ret);
@ -1599,68 +1605,68 @@ function __wbg_get_imports() {
const ret = wasm.memory;
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper10077 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9479, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper10078 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9479, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper10079 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9479, __wbg_adapter_37);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper10080 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9479, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper10081 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9479, __wbg_adapter_32);
const ret = makeMutClosure(arg0, arg1, 9482, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper10082 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9479, __wbg_adapter_44);
const ret = makeMutClosure(arg0, arg1, 9482, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper10083 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9479, __wbg_adapter_32);
const ret = makeMutClosure(arg0, arg1, 9482, __wbg_adapter_37);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper17896 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 13689, __wbg_adapter_49);
imports.wbg.__wbindgen_closure_wrapper10084 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9482, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper19745 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 14503, __wbg_adapter_52);
imports.wbg.__wbindgen_closure_wrapper10085 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9482, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper19746 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 14503, __wbg_adapter_52);
imports.wbg.__wbindgen_closure_wrapper10086 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9482, __wbg_adapter_44);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper19747 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 14503, __wbg_adapter_52);
imports.wbg.__wbindgen_closure_wrapper10087 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9482, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper19748 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 14503, __wbg_adapter_59);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper19749 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 14503, __wbg_adapter_52);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper19750 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 14503, __wbg_adapter_52);
imports.wbg.__wbindgen_closure_wrapper17900 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 13692, __wbg_adapter_49);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper19751 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 14503, __wbg_adapter_52);
const ret = makeMutClosure(arg0, arg1, 14506, __wbg_adapter_52);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper19879 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 14574, __wbg_adapter_68);
imports.wbg.__wbindgen_closure_wrapper19752 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 14506, __wbg_adapter_52);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper19753 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 14506, __wbg_adapter_52);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper19754 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 14506, __wbg_adapter_59);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper19755 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 14506, __wbg_adapter_52);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper19756 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 14506, __wbg_adapter_52);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper19757 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 14506, __wbg_adapter_52);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper19885 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 14577, __wbg_adapter_68);
return addHeapObject(ret);
};

View File

@ -1,19 +1,19 @@
//! Game project.
use fyrox::{
monitor::MonitorHandle,
window::Fullscreen,
engine::GraphicsContext,
keyboard::PhysicalKey,
asset::manager::ResourceManager,
core::{pool::Handle, uuid::Uuid, TypeUuidProvider, log::Log},
core::{pool::Handle, uuid::Uuid, TypeUuidProvider, log::Log, impl_component_provider},
event::{ElementState, Event, WindowEvent, TouchPhase},
keyboard::KeyCode,
gui::message::UiMessage,
impl_component_provider,
plugin::{Plugin, PluginConstructor, PluginContext, PluginRegistrationContext},
scene::{
Scene,
graph::Graph,
},
script::{ScriptContext, ScriptTrait},
script::{ScriptContext, ScriptTrait}, raw_window_handle::HasWindowHandle,
};
use std::path::Path;
mod map;
@ -39,7 +39,20 @@ impl ScriptTrait for Player {
fn on_start(&mut self, _context: &mut ScriptContext) {}
// Called whenever there is an event from OS (mouse click, keypress, etc.)
fn on_os_event(&mut self, event: &Event<()>, _context: &mut ScriptContext) {
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();
}
// // Option 2: Use true exclusive full screen mode.
// if let Some(monitor) = graphics_context.window.current_monitor() {
// if let Some(first_avilable_video_mode) = monitor.video_modes().next() {
// graphics_context
// .window
// .set_fullscreen(Some(Fullscreen::Exclusive(first_avilable_video_mode)));
// }
// }
}
if let Event::WindowEvent { event, .. } = event {
if let WindowEvent::KeyboardInput { event, .. } = event {
if let PhysicalKey::Code(keycode) = event.physical_key {
@ -100,10 +113,6 @@ impl ScriptTrait for Player {
self.loop_over(context);
}
// Returns unique script ID for serialization needs.
fn id(&self) -> Uuid {
Self::type_uuid()
}
}
impl PluginConstructor for GameConstructor {
@ -143,8 +152,20 @@ impl Plugin for Game {
// Add your global update code here.
}
fn on_os_event(&mut self, _event: &Event<()>, _context: PluginContext) {
// Do something on OS event here.
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();
}
// // Option 2: Use true exclusive full screen mode.
// if let Some(monitor) = graphics_context.window.current_monitor() {
// if let Some(first_avilable_video_mode) = monitor.video_modes().next() {
// graphics_context
// .window
// .set_fullscreen(Some(Fullscreen::Exclusive(first_avilable_video_mode)));
// }
// }
}
}
fn on_ui_message(&mut self, _context: &mut PluginContext, _message: &UiMessage) {

View File

@ -1,54 +1,67 @@
use fyrox::{
material::shader::{SamplerFallback},
asset::manager::ResourceManager,
core::{algebra::Vector3, math::Rect, visitor::Visit},
core::sstorage::ImmutableString,
material::{Material, PropertyValue, MaterialResource},
resource::texture::Texture,
core::{algebra::Vector3, math::Rect},
scene::{
base::BaseBuilder,
graph::Graph,
transform::TransformBuilder,
rigidbody::RigidBodyType,
dim2::{
collider::{ColliderBuilder, ColliderShape, CuboidShape}, rectangle::RectangleBuilder, rigidbody::RigidBodyBuilder,
collider::{ColliderBuilder, ColliderShape, CuboidShape},
rectangle::RectangleBuilder,
rigidbody::RigidBodyBuilder,
},
graph::Graph,
rigidbody::RigidBodyType,
transform::TransformBuilder,
},
};
// /mnt/23154027-2dd3-43ea-93f1-02a8df7a3c5a/projects/fyrox/platformer/assets/data/tiles/
//
pub fn build_map(graph: &mut Graph, resource_manager: &ResourceManager) {
let ground_texture = resource_manager.request::<Texture, _>("assets/data/tiles/2.png");
//
pub fn build_map(graph: &mut Graph, resource_manager: &ResourceManager) {
for x in -100..100 {
let mut material = Material::standard_2d();
material
.set_property(
&ImmutableString::new("diffuseTexture"),
PropertyValue::Sampler {
value: Some(resource_manager.request::<Texture>("assets/data/tiles/2.png")),
fallback: SamplerFallback::Normal,
},
)
.unwrap();
let material_resource = MaterialResource::new_ok(Default::default(), material);
let rb_transform = TransformBuilder::new()
.with_local_position(Vector3::new(
x as f32,
-5.0,
0.0,
))
.build();
RigidBodyBuilder::new(
BaseBuilder::new()
.with_children(&[
// Collider to prevent player from moving past boundary
RectangleBuilder::new(BaseBuilder::new())
.with_texture(ground_texture.clone())
// Sprite is located in top left corner of sprite sheet
.with_uv_rect(Rect::new(0.0, 0.0, 1.0, 1.0))
.build(graph),
ColliderBuilder::new(BaseBuilder::new()).with_shape(ColliderShape::Cuboid(CuboidShape::default())).build(graph),
])
// Optional, set name of tile
.with_name(format!("Boundary ({x}, 0)",))
// Set position of tile
.with_local_transform(rb_transform),
)
// Turn off gravity for tile
.with_gravity_scale(0.)
// Set tile to be static and not rotate
.with_rotation_locked(true)
.with_body_type(RigidBodyType::Static)
.build(graph);
.with_local_position(Vector3::new(x as f32, -5.0, 0.0))
.build();
RigidBodyBuilder::new(
BaseBuilder::new()
.with_children(&[
// Collider to prevent player from moving past boundary
RectangleBuilder::new(BaseBuilder::new())
.with_material(material_resource)
// Sprite is located in top left corner of sprite sheet
.with_uv_rect(Rect::new(0.0, 0.0, 1.0, 1.0))
.build(graph),
ColliderBuilder::new(BaseBuilder::new())
.with_shape(ColliderShape::Cuboid(CuboidShape::default()))
.build(graph),
])
// Optional, set name of tile
.with_name(format!("Boundary ({x}, 0)",))
// Set position of tile
.with_local_transform(rb_transform),
)
// Turn off gravity for tile
.with_gravity_scale(0.)
// Set tile to be static and not rotate
.with_rotation_locked(true)
.with_body_type(RigidBodyType::Static)
.build(graph);
}
}
}

View File

@ -1,5 +1,4 @@
use fyrox::{
animation::spritesheet::SpriteSheetAnimation,
core::{
algebra::{Vector2, Vector3},
pool::Handle,
@ -9,6 +8,7 @@ use fyrox::{
TypeUuidProvider,
},
keyboard::KeyCode,
scene::animation::spritesheet::SpriteSheetAnimation,
scene::dim2::{rectangle::Rectangle, rigidbody::RigidBody},
scene::node::Node,
script::ScriptContext,
@ -173,7 +173,11 @@ impl Player {
.try_get_mut(self.sprite)
.and_then(|n| n.cast_mut::<Rectangle>())
{
sprite.set_texture(animation_data.texture());
sprite
.material()
.data_ref()
.set_texture(&"diffuseTexture".into(), animation_data.texture())
.unwrap();
sprite.set_uv_rect(animation_data.current_frame_uv_rect().unwrap_or_default());
}
}