added the studio mode viewing or editing

This commit is contained in:
Brooks Palin
2023-12-19 17:41:42 -07:00
parent 0a0acacfdb
commit cd0226f0fc
3 changed files with 21 additions and 2 deletions
+2
View File
@@ -14,6 +14,7 @@ export class ViewerElement extends LitElement {
@property() objectId?: string;
@property() skyboxId?: string;
@property() viewmode?: string = "viewer"
@inject(CANVAS_PROVIDER)
_canvasProvider?: CanvasProvider;
@@ -77,6 +78,7 @@ export class ViewerElement extends LitElement {
`#${this._canvasProvider!.canvasId}`,
"Storyteller Studio",
new ViewportSize(width, height),
this.viewmode
);
} catch (err) {
if (!(err as Error).message?.startsWith("Using exceptions for control flow"))
+5 -2
View File
@@ -6,7 +6,7 @@ use bevy_mod_picking::{prelude::Pointer, selection::Select, PickableBundle};
use crate::{
input::{self, Action, InputAction, Lifecycle},
scene::{SceneElement, SceneSpawnerSystem, SceneState},
scene::{SceneElement, SceneSpawnerSystem, SceneState}, StudioMode,
};
pub struct SelectionPlugin;
@@ -48,6 +48,7 @@ fn tag_scene_elements(
mut cmd: Commands,
q_scene_elements: Query<(Entity, &Children), (With<SceneElement>, Without<Selectable>)>,
q_primitives: Query<&Handle<Mesh>>,
r_studio_mode : Res<StudioMode>
) {
for (ent, children) in q_scene_elements.iter() {
cmd.entity(ent).insert(Selectable);
@@ -56,7 +57,9 @@ fn tag_scene_elements(
.iter()
.filter(|child| q_primitives.contains(**child))
{
cmd.entity(ent_child).insert(PickableBundle::default());
if let StudioMode::Editor = *r_studio_mode {
cmd.entity(ent_child).insert(PickableBundle::default());
}
}
}
}
+14
View File
@@ -103,12 +103,19 @@ pub fn start_viewer(
canvas_selector: &str,
canvas_alt: &str,
viewport_size: ViewportSize,
viewer_mode: &str,
) {
#[cfg(feature = "wasm")]
console_error_panic_hook::set_once();
let object_id = object_id.to_string();
let skybox_id = skybox_id.to_string();
let studio_mode = match viewer_mode {
"editor" => StudioMode::Editor,
"viewer" => StudioMode::Viewer,
//Fixme: Unclear how we should hadle errors like this: Should we choose a default value?
_ => panic!("Invalid viewer mode: {}", viewer_mode),
};
let mut app = App::new();
app.add_plugins((
@@ -139,6 +146,7 @@ pub fn start_viewer(
Startup,
move |mut cmd: Commands, mut ew: EventWriter<LoadSceneEvent>| {
cmd.insert_resource(SkyboxId(skybox_id.clone()));
cmd.insert_resource(studio_mode);
ew.send(LoadSceneEvent(object_id.clone()));
},
);
@@ -148,3 +156,9 @@ pub fn start_viewer(
app.run();
}
#[derive(Resource, Clone, Copy, PartialEq, Eq, Debug)]
pub enum StudioMode {
Editor,
Viewer
}