commonlibsse_ng\re\p\PlayerCamera/
camera_state.rs

1/// SE, AE
2///
3/// These indicate the `TESCameraState` index.
4#[commonlibsse_ng_derive_internal::ffi_enum]
5#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
6#[repr(u32)]
7pub enum CameraStateSE {
8    FirstPerson = 0,
9    AutoVanity,
10    VATS,
11    Free,
12    IronSights,
13    Furniture,
14    PCTransition,
15    Tween,
16    Animated,
17    ThirdPerson,
18    Mount,
19    Bleedout,
20    Dragon,
21}
22
23impl CameraStateSE {
24    /// Into `CameraState`([`u32`])
25    #[inline]
26    pub const fn to_state(self) -> CameraState {
27        CameraState(self as u32)
28    }
29}
30impl From<CameraStateSE> for CameraState {
31    #[inline]
32    fn from(value: CameraStateSE) -> Self {
33        Self(value as u32)
34    }
35}
36
37/// VR has VR in between Animated and ThirdPerson
38///
39/// These indicate the `TESCameraState` index.
40#[commonlibsse_ng_derive_internal::ffi_enum]
41#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
42#[repr(u32)]
43pub enum CameraStateVR {
44    FirstPerson = 0,
45    AutoVanity,
46    VATS,
47    Free,
48    IronSights,
49    Furniture,
50    PCTransition,
51    Tween,
52    Animated,
53    VR = 9,
54    VRThirdPerson,
55    VRMount,
56    VRBleedout,
57    VRDragon,
58}
59
60impl CameraStateVR {
61    /// Into `CameraState`([`u32`])
62    #[inline]
63    pub const fn to_state(self) -> CameraState {
64        CameraState(self as u32)
65    }
66}
67
68impl From<CameraStateVR> for CameraState {
69    #[inline]
70    fn from(value: CameraStateVR) -> Self {
71        Self(value as u32)
72    }
73}
74
75#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
76#[repr(transparent)]
77pub struct CameraState(pub u32);
78const _: () = assert!(core::mem::size_of::<CameraState>() == 0x4);
79
80impl CameraState {
81    /// Try to cast valid enum for SE, AE.
82    #[inline]
83    pub const fn as_se(&self) -> Option<CameraStateSE> {
84        CameraStateSE_CEnum(self.0).to_enum()
85    }
86
87    /// Try to cast valid enum for VR.
88    #[inline]
89    pub const fn as_vr(&self) -> Option<CameraStateVR> {
90        CameraStateVR_CEnum(self.0).to_enum()
91    }
92}