dreamwell_engine/physics/
render_mode.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
5pub enum RenderMode {
6 Billboard,
7 StretchedBillboard,
8 Ribbon,
9 Beam,
10 MeshInstance,
11 ShardInstance,
12 MeshletCluster,
13 VolumetricImpostor,
14 PointCloud,
15}
16
17#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
19pub enum RepresentationMode {
20 Sprite2D,
21 TopDown2D,
22 Isometric2D,
23 SideScroll2D,
24 World3D,
25 TopDown3D,
26 FirstPerson3D,
27 ThirdPerson3D,
28}
29
30impl RenderMode {
31 pub const ALL: &[RenderMode] = &[
32 Self::Billboard,
33 Self::StretchedBillboard,
34 Self::Ribbon,
35 Self::Beam,
36 Self::MeshInstance,
37 Self::ShardInstance,
38 Self::MeshletCluster,
39 Self::VolumetricImpostor,
40 Self::PointCloud,
41 ];
42
43 pub fn name(&self) -> &'static str {
44 match self {
45 Self::Billboard => "Billboard",
46 Self::StretchedBillboard => "Stretched Billboard",
47 Self::Ribbon => "Ribbon",
48 Self::Beam => "Beam",
49 Self::MeshInstance => "Mesh Instance",
50 Self::ShardInstance => "Shard Instance",
51 Self::MeshletCluster => "Meshlet Cluster",
52 Self::VolumetricImpostor => "Volumetric Impostor",
53 Self::PointCloud => "Point Cloud",
54 }
55 }
56}
57
58impl RepresentationMode {
59 pub const ALL: &[RepresentationMode] = &[
60 Self::Sprite2D,
61 Self::TopDown2D,
62 Self::Isometric2D,
63 Self::SideScroll2D,
64 Self::World3D,
65 Self::TopDown3D,
66 Self::FirstPerson3D,
67 Self::ThirdPerson3D,
68 ];
69}
70
71#[cfg(test)]
72mod tests {
73 use super::*;
74
75 #[test]
76 fn render_mode_all() {
77 assert_eq!(RenderMode::ALL.len(), 9);
78 }
79
80 #[test]
81 fn representation_mode_all() {
82 assert_eq!(RepresentationMode::ALL.len(), 8);
83 }
84}