feat: disabled/enabled

This commit is contained in:
Nova
2023-02-16 00:30:25 -05:00
parent e5acb3013f
commit 969e4de882
6 changed files with 48 additions and 18 deletions

View File

@@ -9,6 +9,7 @@ use color_eyre::eyre::{bail, ensure, Result};
use glam::Vec3A;
use mint::Vector3;
use parking_lot::Mutex;
use portable_atomic::{AtomicBool, Ordering};
use prisma::{Flatten, Lerp, Rgba};
use serde::Deserialize;
use stardust_xr::{schemas::flex::deserialize, values::Transform};
@@ -33,6 +34,7 @@ struct LineData {
}
pub struct Lines {
enabled: Arc<AtomicBool>,
space: Arc<Spatial>,
data: Mutex<LineData>,
}
@@ -44,6 +46,7 @@ impl Lines {
);
let lines = LINES_REGISTRY.add(Lines {
enabled: node.enabled.clone(),
space: node.get_aspect("Lines", "spatial", |n| &n.spatial)?.clone(),
data: Mutex::new(LineData { points, cyclic }),
});
@@ -112,7 +115,9 @@ impl Drop for Lines {
pub fn draw_all(draw_ctx: &StereoKitDraw) {
for lines in LINES_REGISTRY.get_valid_contents() {
lines.draw(draw_ctx);
if lines.enabled.load(Ordering::Relaxed) {
lines.draw(draw_ctx);
}
}
}

View File

@@ -9,6 +9,7 @@ use color_eyre::eyre::{bail, ensure, eyre, Result};
use mint::{ColumnMatrix4, Vector2, Vector3, Vector4};
use once_cell::sync::OnceCell;
use parking_lot::Mutex;
use portable_atomic::{AtomicBool, Ordering};
use rustc_hash::FxHashMap;
use send_wrapper::SendWrapper;
use serde::Deserialize;
@@ -117,6 +118,7 @@ impl MaterialParameter {
}
pub struct Model {
enabled: Arc<AtomicBool>,
space: Arc<Spatial>,
resource_id: ResourceID,
pending_model_path: OnceCell<PathBuf>,
@@ -136,6 +138,7 @@ impl Model {
"Internal: Node already has a drawable attached!"
);
let model = Model {
enabled: node.enabled.clone(),
space: node.spatial.get().unwrap().clone(),
resource_id,
pending_model_path: OnceCell::new(),
@@ -244,7 +247,9 @@ impl Drop for Model {
pub fn draw_all(sk: &StereoKitDraw) {
for model in MODEL_REGISTRY.get_valid_contents() {
model.draw(sk);
if model.enabled.load(Ordering::Relaxed) {
model.draw(sk);
}
}
}

View File

@@ -11,6 +11,7 @@ use glam::{vec3, Mat4, Vec2};
use mint::Vector2;
use once_cell::sync::OnceCell;
use parking_lot::Mutex;
use portable_atomic::{AtomicBool, Ordering};
use prisma::{Flatten, Rgba};
use send_wrapper::SendWrapper;
use serde::Deserialize;
@@ -37,6 +38,7 @@ struct TextData {
}
pub struct Text {
enabled: Arc<AtomicBool>,
space: Arc<Spatial>,
font_path: Option<PathBuf>,
style: OnceCell<SendWrapper<TextStyle>>,
@@ -67,6 +69,7 @@ impl Text {
let client = node.get_client().ok_or_else(|| eyre!("Client not found"))?;
let text = TEXT_REGISTRY.add(Text {
enabled: node.enabled.clone(),
space: node.spatial.get().unwrap().clone(),
font_path: font_resource_id.and_then(|res| {
res.get_file(
@@ -170,7 +173,9 @@ impl Drop for Text {
pub fn draw_all(sk: &StereoKitDraw) {
for text in TEXT_REGISTRY.get_valid_contents() {
text.draw(sk);
if text.enabled.load(Ordering::Relaxed) {
text.draw(sk);
}
}
}