aframe/
yew_ext.rs

1//! Support for yew. See the below example:
2//! ```rust,ignore
3//! static INIT: AtomicBool = AtomicBool::new(false);
4//!
5//! #[derive(Clone, PartialEq, Properties)]
6//! pub struct AframeProps
7//! {
8//!     scene: aframe::Scene
9//! }
10//!
11//! pub struct Aframe
12//! {
13//!     props: AframeProps
14//! }
15//!
16//! impl crate::utils::Component for Aframe 
17//! {
18//!     type Message = Msg;
19//!     type Properties = AframeProps;
20//!
21//!     fn create(props: Self::Properties, _: ComponentLink<Self>) -> Self 
22//!     {
23//!         // Register aframe stuff first time only
24//!         if !INIT.load(Ordering::Relaxed)
25//!         {
26//!             unsafe 
27//!             {
28//!                // Code in this block registers shaders, components, and primitives with aframe
29//!                 shaders::register_shaders(); 
30//!                 component::register_components();
31//!                 primitive::register_primitives();
32//!             }
33//!             INIT.store(true, Ordering::Relaxed)
34//!         }
35//!         Self 
36//!         { 
37//!             props
38//!         }
39//!     }
40//!
41//!     fn update(&mut self, _: Self::Message) -> ShouldRender 
42//!     {
43//!         true
44//!     }
45//!
46//!     fn change(&mut self, props: Self::Properties) -> ShouldRender 
47//!     {
48//!         if self.props != props 
49//!         {
50//!             self.props = props;
51//!             true
52//!         } 
53//!         else 
54//!         {
55//!             false
56//!         }
57//!     }
58//!
59//!     fn view(&self) -> Html 
60//!     {
61//!         (&self.props.scene).into()
62//!     }
63//! }
64//! ```
65
66use yew::Html;
67use yew::html;
68use crate::Entity;
69use crate::Scene;
70
71impl From<&Scene> for Html
72{
73    fn from(scene: &Scene) -> Self 
74    {
75        html!{{htmlify::yew::RawHtml::from(scene)}}
76    }
77}
78
79impl From<&Entity> for Html
80{
81    fn from(entity: &Entity) -> Self 
82    {
83        html!{{htmlify::yew::RawHtml::from(entity)}}
84    }
85}