Refactor (#1)
This commit is contained in:
17
.github/release.yml
vendored
Normal file
17
.github/release.yml
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
changelog:
|
||||||
|
categories:
|
||||||
|
- title: Breaking Changes 🛠
|
||||||
|
labels:
|
||||||
|
- breaking-change
|
||||||
|
- title: Exciting New Features 🎉
|
||||||
|
labels:
|
||||||
|
- enhancement
|
||||||
|
- title: Improvements to existing features
|
||||||
|
labels:
|
||||||
|
- improvement
|
||||||
|
- title: Bug Fixes
|
||||||
|
labels:
|
||||||
|
- bug
|
||||||
|
- title: Other Changes
|
||||||
|
labels:
|
||||||
|
- "*"
|
||||||
32
.github/workflows/book.yml
vendored
Normal file
32
.github/workflows/book.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
name: book
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup mdBook
|
||||||
|
uses: peaceiris/actions-mdbook@v2
|
||||||
|
with:
|
||||||
|
mdbook-version: 'latest'
|
||||||
|
|
||||||
|
- name: Build docs
|
||||||
|
run: |
|
||||||
|
cd docs
|
||||||
|
mdbook build
|
||||||
|
|
||||||
|
- name: Deploy
|
||||||
|
uses: peaceiris/actions-gh-pages@v3
|
||||||
|
with:
|
||||||
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
publish_dir: ./docs/book
|
||||||
839
Cargo.lock
generated
839
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
26
Cargo.toml
26
Cargo.toml
@@ -1,10 +1,14 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "bevy_cef"
|
name = "bevy_cef"
|
||||||
|
description = "Bevy CEF integration for web rendering"
|
||||||
version.workspace = true
|
version.workspace = true
|
||||||
edition.workspace = true
|
edition.workspace = true
|
||||||
license.workspace = true
|
license.workspace = true
|
||||||
authors.workspace = true
|
authors.workspace = true
|
||||||
repository.workspace = true
|
repository.workspace = true
|
||||||
|
readme.workspace = true
|
||||||
|
keywords.workspace = true
|
||||||
|
categories.workspace = true
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
@@ -19,13 +23,25 @@ edition = "2024"
|
|||||||
license = "Apache-2.0 OR MIT"
|
license = "Apache-2.0 OR MIT"
|
||||||
authors = ["notelm"]
|
authors = ["notelm"]
|
||||||
repository = "https://github.com/not-elm/bevy_cef"
|
repository = "https://github.com/not-elm/bevy_cef"
|
||||||
|
readme = "README.md"
|
||||||
|
keywords = ["bevy", "cef", "web", "rendering"]
|
||||||
|
categories = ["game-development", "web-programming", "graphics"]
|
||||||
|
|
||||||
[workspace.dependencies]
|
[workspace.dependencies]
|
||||||
bevy = { version = "0.16" }
|
bevy = { version = "0.16", default-features = false, features = [
|
||||||
|
"bevy_log",
|
||||||
|
"bevy_window",
|
||||||
|
"bevy_asset",
|
||||||
|
"bevy_sprite",
|
||||||
|
"bevy_pbr",
|
||||||
|
"bevy_winit",
|
||||||
|
"bevy_picking",
|
||||||
|
"bevy_mesh_picking_backend",
|
||||||
|
"bevy_sprite_picking_backend",
|
||||||
|
] }
|
||||||
bevy_remote = "0.16"
|
bevy_remote = "0.16"
|
||||||
cef = { version = "138" }
|
cef = { version = "139" }
|
||||||
cef-dll-sys = { version = "138", features = ["sandbox"] }
|
cef-dll-sys = { version = "139.0", features = ["sandbox"] }
|
||||||
download-cef = { version = "2" }
|
|
||||||
bevy_cef = { path = "." }
|
bevy_cef = { path = "." }
|
||||||
bevy_cef_core = { path = "crates/bevy_cef_core" }
|
bevy_cef_core = { path = "crates/bevy_cef_core" }
|
||||||
async-channel = { version = "2.5" }
|
async-channel = { version = "2.5" }
|
||||||
@@ -44,7 +60,7 @@ serde_json = { workspace = true }
|
|||||||
raw-window-handle = "0.6"
|
raw-window-handle = "0.6"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
bevy = { workspace = true, features = ["file_watcher"]}
|
bevy = { workspace = true, features = ["tonemapping_luts", "multi_threaded", "file_watcher"]}
|
||||||
bevy_cef = { workspace = true, features = ["debug"] }
|
bevy_cef = { workspace = true, features = ["debug"] }
|
||||||
|
|
||||||
[target.'cfg(target_os = "macos")'.dependencies]
|
[target.'cfg(target_os = "macos")'.dependencies]
|
||||||
|
|||||||
5
build.rs
5
build.rs
@@ -1,4 +1,6 @@
|
|||||||
|
#[cfg(all(target_os = "macos", feature = "debug"))]
|
||||||
use std::env::home_dir;
|
use std::env::home_dir;
|
||||||
|
#[cfg(all(target_os = "macos", feature = "debug"))]
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
|
|
||||||
fn main() -> std::io::Result<()> {
|
fn main() -> std::io::Result<()> {
|
||||||
@@ -12,6 +14,7 @@ fn main() -> std::io::Result<()> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(all(target_os = "macos", feature = "debug"))]
|
||||||
fn install_bevy_cef_debug_render_process() -> std::io::Result<()> {
|
fn install_bevy_cef_debug_render_process() -> std::io::Result<()> {
|
||||||
let bevy_cef_render_process_path = home_dir()
|
let bevy_cef_render_process_path = home_dir()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
@@ -26,6 +29,7 @@ fn install_bevy_cef_debug_render_process() -> std::io::Result<()> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(all(target_os = "macos", feature = "debug"))]
|
||||||
fn install_export_cef_dir() -> std::io::Result<()> {
|
fn install_export_cef_dir() -> std::io::Result<()> {
|
||||||
let export_cef_dir_path = home_dir()
|
let export_cef_dir_path = home_dir()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
@@ -40,6 +44,7 @@ fn install_export_cef_dir() -> std::io::Result<()> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(all(target_os = "macos", feature = "debug"))]
|
||||||
fn export_cef_dir() -> std::io::Result<()> {
|
fn export_cef_dir() -> std::io::Result<()> {
|
||||||
let cef_dir = home_dir().unwrap().join(".local").join("share").join("cef");
|
let cef_dir = home_dir().unwrap().join(".local").join("share").join("cef");
|
||||||
if cef_dir.exists() {
|
if cef_dir.exists() {
|
||||||
|
|||||||
@@ -5,6 +5,9 @@ edition.workspace = true
|
|||||||
license.workspace = true
|
license.workspace = true
|
||||||
authors.workspace = true
|
authors.workspace = true
|
||||||
repository.workspace = true
|
repository.workspace = true
|
||||||
|
readme.workspace = true
|
||||||
|
keywords.workspace = true
|
||||||
|
categories.workspace = true
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
bevy = { workspace = true }
|
bevy = { workspace = true }
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ impl DataResponser {
|
|||||||
pub fn prepare(&mut self, data: Vec<u8>, range: &Option<(usize, Option<usize>)>) {
|
pub fn prepare(&mut self, data: Vec<u8>, range: &Option<(usize, Option<usize>)>) {
|
||||||
if let Some((start, end)) = range {
|
if let Some((start, end)) = range {
|
||||||
self.offset = *start;
|
self.offset = *start;
|
||||||
self.end_offset = end.unwrap_or(data.len() - 1) + 1;
|
self.end_offset = end.unwrap_or(data.len()-1);
|
||||||
self.data = data;
|
self.data = data;
|
||||||
} else {
|
} else {
|
||||||
self.offset = 0;
|
self.offset = 0;
|
||||||
@@ -40,7 +40,7 @@ impl DataResponser {
|
|||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
|
||||||
let slice = &self.data[start..end.min(self.data.len())];
|
let slice = &self.data[start..=end.min(self.data.len()-1)];
|
||||||
self.offset += slice.len();
|
self.offset += slice.len();
|
||||||
Some(slice)
|
Some(slice)
|
||||||
}
|
}
|
||||||
@@ -114,123 +114,4 @@ mod tests {
|
|||||||
assert_eq!(responser.offset, 2);
|
assert_eq!(responser.offset, 2);
|
||||||
assert_eq!(responser.end_offset, 7);
|
assert_eq!(responser.end_offset, 7);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#[test]
|
|
||||||
fn data_responser_new_with_start_only() {
|
|
||||||
let data = vec![1, 2, 3, 4, 5];
|
|
||||||
let mut responser = DataResponser::default();
|
|
||||||
responser.prepare(data.clone(), &Some((3, None)));
|
|
||||||
|
|
||||||
assert_eq!(responser.data, data);
|
|
||||||
assert_eq!(responser.offset, 3);
|
|
||||||
assert_eq!(responser.end_offset, 5);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn data_responser_new_with_zero_start() {
|
|
||||||
let data = vec![1, 2, 3];
|
|
||||||
let mut responser = DataResponser::default();
|
|
||||||
responser.prepare(data.clone(), &Some((0, None)));
|
|
||||||
|
|
||||||
assert_eq!(responser.data, data);
|
|
||||||
assert_eq!(responser.offset, 0);
|
|
||||||
assert_eq!(responser.end_offset, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn data_responser_new_with_empty_data() {
|
|
||||||
let data = vec![];
|
|
||||||
let mut responser = DataResponser::default();
|
|
||||||
responser.prepare(data.clone(), &Some((0, None)));
|
|
||||||
|
|
||||||
assert_eq!(responser.data, data);
|
|
||||||
assert_eq!(responser.offset, 0);
|
|
||||||
assert_eq!(responser.end_offset, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn data_responser_new_with_start_beyond_data_length() {
|
|
||||||
let data = vec![1, 2, 3];
|
|
||||||
let mut responser = DataResponser::default();
|
|
||||||
responser.prepare(data.clone(), &Some((5, None)));
|
|
||||||
|
|
||||||
assert_eq!(responser.data, data);
|
|
||||||
assert_eq!(responser.offset, 5);
|
|
||||||
assert_eq!(responser.end_offset, 3);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn data_responser_new_with_end_beyond_data_length() {
|
|
||||||
let data = vec![1, 2, 3];
|
|
||||||
let mut responser = DataResponser::default();
|
|
||||||
responser.prepare(data.clone(), &Some((1, Some(10))));
|
|
||||||
|
|
||||||
assert_eq!(responser.data, data);
|
|
||||||
assert_eq!(responser.offset, 1);
|
|
||||||
assert_eq!(responser.end_offset, 10);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn data_responser_read_no_end_data_smaller_than_bytes_to_read() {
|
|
||||||
let data = vec![1, 2, 3, 4, 5];
|
|
||||||
let mut responser = DataResponser::default();
|
|
||||||
responser.prepare(data, &Some((2, None)));
|
|
||||||
|
|
||||||
let result = responser.read(10);
|
|
||||||
assert_eq!(result, Some(&[3, 4, 5][..]));
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn data_responser_read_no_end_data_larger_than_bytes_to_read() {
|
|
||||||
let data = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
|
|
||||||
let mut responser = DataResponser::default();
|
|
||||||
responser.prepare(data, &Some((2, None)));
|
|
||||||
|
|
||||||
let result1 = responser.read(3);
|
|
||||||
assert_eq!(result1, Some(&[3, 4, 5][..]));
|
|
||||||
|
|
||||||
let result2 = responser.read(3);
|
|
||||||
assert_eq!(result2, Some(&[6, 7, 8][..]));
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn data_responser_read_with_end_data_smaller_than_bytes_to_read() {
|
|
||||||
let data = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
|
|
||||||
let mut responser = DataResponser::default();
|
|
||||||
responser.prepare(data, &Some((2, Some(6))));
|
|
||||||
|
|
||||||
let result = responser.read(10);
|
|
||||||
assert_eq!(result, Some(&[3, 4, 5, 6][..]));
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn data_responser_read_with_end_data_larger_than_bytes_to_read() {
|
|
||||||
let data = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
|
|
||||||
let mut responser = DataResponser::default();
|
|
||||||
responser.prepare(data, &Some((1, Some(7))));
|
|
||||||
|
|
||||||
let result1 = responser.read(3);
|
|
||||||
assert_eq!(result1, Some(&[2, 3, 4][..]));
|
|
||||||
|
|
||||||
let result2 = responser.read(3);
|
|
||||||
assert_eq!(result2, Some(&[5, 6, 7][..]));
|
|
||||||
}
|
|
||||||
#[test]
|
|
||||||
fn data_responser_read_consecutive_calls_until_end() {
|
|
||||||
let data = vec![1, 2, 3, 4, 5, 6, 7, 8];
|
|
||||||
let mut responser = DataResponser::default();
|
|
||||||
responser.prepare(data, &Some((1, Some(6))));
|
|
||||||
|
|
||||||
let result1 = responser.read(2);
|
|
||||||
assert_eq!(result1, Some(&[2, 3][..]));
|
|
||||||
|
|
||||||
let result2 = responser.read(2);
|
|
||||||
assert_eq!(result2, Some(&[4, 5][..]));
|
|
||||||
|
|
||||||
let result3 = responser.read(2);
|
|
||||||
assert_eq!(result3, Some(&[6][..]));
|
|
||||||
|
|
||||||
let result4 = responser.read(2);
|
|
||||||
assert_eq!(result4, None);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -42,14 +42,14 @@ fn content_range_header_value(
|
|||||||
Some(format!(
|
Some(format!(
|
||||||
"bytes {}-{}/{}",
|
"bytes {}-{}/{}",
|
||||||
start,
|
start,
|
||||||
end.unwrap_or(data.len() - 1),
|
end.unwrap_or(data.len()),
|
||||||
data.len()
|
data.len()
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn obtain_response_length(data: &[u8], range: &Option<(usize, Option<usize>)>) -> usize {
|
fn obtain_response_length(data: &[u8], range: &Option<(usize, Option<usize>)>) -> usize {
|
||||||
match range {
|
match range {
|
||||||
Some((start, end)) => end.unwrap_or(data.len() - 1) - start + 1,
|
Some((start, end)) => end.unwrap_or(data.len()) - start,
|
||||||
None => data.len(),
|
None => data.len(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -147,77 +147,77 @@ mod tests {
|
|||||||
fn test_content_range_header_value_range_with_end() {
|
fn test_content_range_header_value_range_with_end() {
|
||||||
let data = b"Hello, World!";
|
let data = b"Hello, World!";
|
||||||
let result = content_range_header_value(data, &Some((0, Some(5))));
|
let result = content_range_header_value(data, &Some((0, Some(5))));
|
||||||
assert_eq!(result, Some("bytes 0-4/13".to_string()));
|
assert_eq!(result, Some("bytes 0-5/13".to_string()));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_content_range_header_value_range_without_end() {
|
fn test_content_range_header_value_range_without_end() {
|
||||||
let data = b"Hello, World!";
|
let data = b"Hello, World!";
|
||||||
let result = content_range_header_value(data, &Some((7, None)));
|
let result = content_range_header_value(data, &Some((7, None)));
|
||||||
assert_eq!(result, Some("bytes 7-12/13".to_string()));
|
assert_eq!(result, Some("bytes 7-13/13".to_string()));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_content_range_header_value_range_from_start() {
|
fn test_content_range_header_value_range_from_start() {
|
||||||
let data = b"Hello, World!";
|
let data = b"Hello, World!";
|
||||||
let result = content_range_header_value(data, &Some((0, None)));
|
let result = content_range_header_value(data, &Some((0, None)));
|
||||||
assert_eq!(result, Some("bytes 0-12/13".to_string()));
|
assert_eq!(result, Some("bytes 0-13/13".to_string()));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_content_range_header_value_range_partial() {
|
fn test_content_range_header_value_range_partial() {
|
||||||
let data = b"Hello, World!";
|
let data = b"Hello, World!";
|
||||||
let result = content_range_header_value(data, &Some((7, Some(12))));
|
let result = content_range_header_value(data, &Some((7, Some(12))));
|
||||||
assert_eq!(result, Some("bytes 7-11/13".to_string()));
|
assert_eq!(result, Some("bytes 7-12/13".to_string()));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_content_range_header_value_range_single_byte() {
|
fn test_content_range_header_value_range_single_byte() {
|
||||||
let data = b"Hello, World!";
|
let data = b"Hello, World!";
|
||||||
let result = content_range_header_value(data, &Some((5, Some(6))));
|
let result = content_range_header_value(data, &Some((5, Some(6))));
|
||||||
assert_eq!(result, Some("bytes 5-5/13".to_string()));
|
assert_eq!(result, Some("bytes 5-6/13".to_string()));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_content_range_header_value_range_last_byte() {
|
fn test_content_range_header_value_range_last_byte() {
|
||||||
let data = b"Hello, World!";
|
let data = b"Hello, World!";
|
||||||
let result = content_range_header_value(data, &Some((12, Some(13))));
|
let result = content_range_header_value(data, &Some((12, Some(13))));
|
||||||
assert_eq!(result, Some("bytes 12-12/13".to_string()));
|
assert_eq!(result, Some("bytes 12-13/13".to_string()));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_content_range_header_value_single_byte_data() {
|
fn test_content_range_header_value_single_byte_data() {
|
||||||
let data = b"a";
|
let data = b"a";
|
||||||
let result = content_range_header_value(data, &Some((0, None)));
|
let result = content_range_header_value(data, &Some((0, None)));
|
||||||
assert_eq!(result, Some("bytes 0-0/1".to_string()));
|
assert_eq!(result, Some("bytes 0-1/1".to_string()));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_content_range_header_value_large_data() {
|
fn test_content_range_header_value_large_data() {
|
||||||
let data = vec![0u8; 1024];
|
let data = vec![0u8; 1024];
|
||||||
let result = content_range_header_value(&data, &Some((100, Some(200))));
|
let result = content_range_header_value(&data, &Some((100, Some(200))));
|
||||||
assert_eq!(result, Some("bytes 100-199/1024".to_string()));
|
assert_eq!(result, Some("bytes 100-200/1024".to_string()));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_content_range_header_value_large_data_no_end() {
|
fn test_content_range_header_value_large_data_no_end() {
|
||||||
let data = vec![0u8; 1024];
|
let data = vec![0u8; 1024];
|
||||||
let result = content_range_header_value(&data, &Some((500, None)));
|
let result = content_range_header_value(&data, &Some((500, None)));
|
||||||
assert_eq!(result, Some("bytes 500-1023/1024".to_string()));
|
assert_eq!(result, Some("bytes 500-1024/1024".to_string()));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_content_range_header_value_zero_start() {
|
fn test_content_range_header_value_zero_start() {
|
||||||
let data = b"test";
|
let data = b"test";
|
||||||
let result = content_range_header_value(data, &Some((0, Some(2))));
|
let result = content_range_header_value(data, &Some((0, Some(2))));
|
||||||
assert_eq!(result, Some("bytes 0-1/4".to_string()));
|
assert_eq!(result, Some("bytes 0-2/4".to_string()));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_content_range_header_value_range_end_equals_data_len() {
|
fn test_content_range_header_value_range_end_equals_data_len() {
|
||||||
let data = b"Hello, World!";
|
let data = b"Hello, World!";
|
||||||
let result = content_range_header_value(data, &Some((0, Some(13))));
|
let result = content_range_header_value(data, &Some((0, Some(13))));
|
||||||
assert_eq!(result, Some("bytes 0-12/13".to_string()));
|
assert_eq!(result, Some("bytes 0-13/13".to_string()));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
@@ -5,8 +5,10 @@ edition.workspace = true
|
|||||||
license.workspace = true
|
license.workspace = true
|
||||||
authors.workspace = true
|
authors.workspace = true
|
||||||
repository.workspace = true
|
repository.workspace = true
|
||||||
|
readme.workspace = true
|
||||||
|
keywords.workspace = true
|
||||||
|
categories.workspace = true
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
cef = { workspace = true }
|
cef = { workspace = true }
|
||||||
bevy_cef_core = { workspace = true }
|
bevy_cef_core = { workspace = true }
|
||||||
libloading = { version = "0.8"}
|
|
||||||
@@ -4,11 +4,8 @@
|
|||||||
|
|
||||||
use bevy::prelude::*;
|
use bevy::prelude::*;
|
||||||
use bevy::time::common_conditions::on_timer;
|
use bevy::time::common_conditions::on_timer;
|
||||||
use bevy::window::PrimaryWindow;
|
|
||||||
use bevy_cef::prelude::*;
|
use bevy_cef::prelude::*;
|
||||||
use bevy_remote::{BrpResult, RemotePlugin};
|
use bevy_remote::{BrpResult, RemotePlugin};
|
||||||
use cef::Window;
|
|
||||||
use serde::Deserialize;
|
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ fn spawn_webview(
|
|||||||
asset_server: Res<AssetServer>,
|
asset_server: Res<AssetServer>,
|
||||||
) {
|
) {
|
||||||
commands.spawn((
|
commands.spawn((
|
||||||
CefWebviewUri("https://bevy.org/".to_string()),
|
CefWebviewUri::new("https://github.com/not-elm/bevy_cef"),
|
||||||
Mesh3d(meshes.add(Plane3d::new(Vec3::Z, Vec2::ONE))),
|
Mesh3d(meshes.add(Plane3d::new(Vec3::Z, Vec2::ONE))),
|
||||||
MeshMaterial3d(materials.add(WebviewExtendedMaterial {
|
MeshMaterial3d(materials.add(WebviewExtendedMaterial {
|
||||||
extension: CustomExtension {
|
extension: CustomExtension {
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ fn spawn_github_webview(
|
|||||||
mut materials: ResMut<Assets<WebviewExtendStandardMaterial>>,
|
mut materials: ResMut<Assets<WebviewExtendStandardMaterial>>,
|
||||||
) {
|
) {
|
||||||
commands.spawn((
|
commands.spawn((
|
||||||
CefWebviewUri("https://github.com/not-elm".to_string()),
|
CefWebviewUri::new("https://github.com/not-elm/bevy_cef"),
|
||||||
Mesh3d(meshes.add(Plane3d::new(Vec3::Z, Vec2::ONE))),
|
Mesh3d(meshes.add(Plane3d::new(Vec3::Z, Vec2::ONE))),
|
||||||
WebviewSize(Vec2::splat(800.0)),
|
WebviewSize(Vec2::splat(800.0)),
|
||||||
MeshMaterial3d(materials.add(WebviewExtendStandardMaterial::default())),
|
MeshMaterial3d(materials.add(WebviewExtendStandardMaterial::default())),
|
||||||
@@ -70,7 +70,7 @@ fn spawn_google_search_webview(
|
|||||||
mut materials: ResMut<Assets<WebviewExtendStandardMaterial>>,
|
mut materials: ResMut<Assets<WebviewExtendStandardMaterial>>,
|
||||||
) {
|
) {
|
||||||
commands.spawn((
|
commands.spawn((
|
||||||
CefWebviewUri("https://www.youtube.com/".to_string()),
|
CefWebviewUri::new("https://not-elm.github.io/bevy_cef/"),
|
||||||
WebviewSize(Vec2::splat(800.0)),
|
WebviewSize(Vec2::splat(800.0)),
|
||||||
Mesh3d(meshes.add(Plane3d::new(Vec3::Z, Vec2::ONE))),
|
Mesh3d(meshes.add(Plane3d::new(Vec3::Z, Vec2::ONE))),
|
||||||
MeshMaterial3d(materials.add(WebviewExtendStandardMaterial::default())),
|
MeshMaterial3d(materials.add(WebviewExtendStandardMaterial::default())),
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ fn spawn_webview(
|
|||||||
) {
|
) {
|
||||||
commands.spawn((
|
commands.spawn((
|
||||||
DebugWebview,
|
DebugWebview,
|
||||||
CefWebviewUri("https://bevy.org/".to_string()),
|
CefWebviewUri::new("https://github.com/not-elm/bevy_cef"),
|
||||||
Mesh3d(meshes.add(Plane3d::new(Vec3::Z, Vec2::ONE))),
|
Mesh3d(meshes.add(Plane3d::new(Vec3::Z, Vec2::ONE))),
|
||||||
MeshMaterial3d(materials.add(WebviewExtendStandardMaterial {
|
MeshMaterial3d(materials.add(WebviewExtendStandardMaterial {
|
||||||
base: StandardMaterial {
|
base: StandardMaterial {
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ fn spawn_webview(
|
|||||||
) {
|
) {
|
||||||
commands.spawn((
|
commands.spawn((
|
||||||
DebugWebview,
|
DebugWebview,
|
||||||
CefWebviewUri("https://bevy.org/".to_string()),
|
CefWebviewUri::new("https://github.com/not-elm/bevy_cef"),
|
||||||
Mesh3d(meshes.add(Plane3d::new(Vec3::Z, Vec2::ONE))),
|
Mesh3d(meshes.add(Plane3d::new(Vec3::Z, Vec2::ONE))),
|
||||||
MeshMaterial3d(materials.add(WebviewExtendStandardMaterial::default())),
|
MeshMaterial3d(materials.add(WebviewExtendStandardMaterial::default())),
|
||||||
));
|
));
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ fn spawn_webview(
|
|||||||
mut materials: ResMut<Assets<WebviewExtendStandardMaterial>>,
|
mut materials: ResMut<Assets<WebviewExtendStandardMaterial>>,
|
||||||
) {
|
) {
|
||||||
commands.spawn((
|
commands.spawn((
|
||||||
CefWebviewUri("https://bevy.org/".to_string()),
|
CefWebviewUri::new("https://github.com/not-elm/bevy_cef"),
|
||||||
Mesh3d(meshes.add(Plane3d::new(Vec3::Z, Vec2::ONE))),
|
Mesh3d(meshes.add(Plane3d::new(Vec3::Z, Vec2::ONE))),
|
||||||
MeshMaterial3d(materials.add(WebviewExtendStandardMaterial::default())),
|
MeshMaterial3d(materials.add(WebviewExtendStandardMaterial::default())),
|
||||||
));
|
));
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ fn spawn_camera_2d(mut commands: Commands) {
|
|||||||
|
|
||||||
fn spawn_sprite_webview(mut commands: Commands, mut images: ResMut<Assets<Image>>) {
|
fn spawn_sprite_webview(mut commands: Commands, mut images: ResMut<Assets<Image>>) {
|
||||||
commands.spawn((
|
commands.spawn((
|
||||||
CefWebviewUri::new("https://bevyengine.org/"),
|
CefWebviewUri::new("https://github.com/not-elm/bevy_cef"),
|
||||||
Pickable::default(),
|
Pickable::default(),
|
||||||
Sprite {
|
Sprite {
|
||||||
image: images.add(Image::default()),
|
image: images.add(Image::default()),
|
||||||
|
|||||||
Reference in New Issue
Block a user