mittens_engine/engine/ecs/component/
transform_camera_specific.rs1use super::Component;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub enum TransformCameraSpecificMode {
6 Monoscopic,
7 Stereoscopic,
8}
9
10#[derive(Debug, Clone, Copy)]
11pub struct TransformCameraSpecificComponent {
12 pub mode: TransformCameraSpecificMode,
13}
14
15impl TransformCameraSpecificComponent {
16 pub fn active_monoscopic() -> Self {
17 Self {
18 mode: TransformCameraSpecificMode::Monoscopic,
19 }
20 }
21
22 pub fn active_stereoscopic() -> Self {
23 Self {
24 mode: TransformCameraSpecificMode::Stereoscopic,
25 }
26 }
27}
28
29impl Component for TransformCameraSpecificComponent {
30 fn name(&self) -> &'static str {
31 "transform_camera_specific"
32 }
33 fn as_any(&self) -> &dyn std::any::Any {
34 self
35 }
36 fn as_any_mut(&mut self) -> &mut dyn std::any::Any {
37 self
38 }
39
40 fn to_mms_ast(
41 &self,
42 _world: &crate::engine::ecs::World,
43 ) -> crate::scripting::ast::ComponentExpression {
44 use crate::engine::ecs::component::ce_helpers::ce_call;
45 let ctor = match self.mode {
46 TransformCameraSpecificMode::Monoscopic => "active_monoscopic",
47 TransformCameraSpecificMode::Stereoscopic => "active_stereoscopic",
48 };
49 ce_call("TransformCameraSpecific", ctor, vec![])
50 }
51}