#[cfg(test)]
#[path = "../tests/entities/debug_overlays.rs"]
mod tests;
use crate::entities::Entity;
use crate::entities::fields::{BaseField, FieldError};
use crate::interfaces::ValveEngine;
use sdk_raw::entities::debug_overlays::{
OVERLAY_ABSBOX_BIT, OVERLAY_ATTACHMENTS_BIT, OVERLAY_AUTOAIM_BIT, OVERLAY_BBOX_BIT,
OVERLAY_BUDDHA_MODE, OVERLAY_MESSAGE_BIT, OVERLAY_NAME_BIT, OVERLAY_NPC_CONDITIONS_BIT,
OVERLAY_NPC_ENEMIES_BIT, OVERLAY_NPC_FOCUS_BIT, OVERLAY_NPC_KILL_BIT, OVERLAY_NPC_NEAREST_BIT,
OVERLAY_NPC_RELATION_BIT, OVERLAY_NPC_ROUTE_BIT, OVERLAY_NPC_SELECTED_BIT,
OVERLAY_NPC_SQUAD_BIT, OVERLAY_NPC_STEERING_REGULATIONS, OVERLAY_NPC_TASK_BIT,
OVERLAY_NPC_TRIANGULATE_BIT, OVERLAY_NPC_VIEWCONE_BIT, OVERLAY_NPC_ZAP_BIT, OVERLAY_PIVOT_BIT,
OVERLAY_PROP_DEBUG, OVERLAY_RBOX_BIT, OVERLAY_SHOW_BLOCKSLOS, OVERLAY_TASK_TEXT_BIT,
OVERLAY_TEXT_BIT, OVERLAY_VIEWOFFSET, OVERLAY_WC_CHANGE_ENTITY,
};
use std::ffi::c_int;
static DEBUG_OVERLAYS: BaseField<c_int> =
BaseField::new(c"m_debugOverlays", sys::_fieldtypes_FIELD_INTEGER);
bitflags::bitflags! {
#[doc(alias("m_debugOverlays", "DebugOverlayBits_t"))]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
pub struct DebugOverlays: c_int {
#[doc(alias("OVERLAY_ABSBOX_BIT"))]
const ABS_BOX = OVERLAY_ABSBOX_BIT;
#[doc(alias("OVERLAY_ATTACHMENTS_BIT"))]
const ATTACHMENTS = OVERLAY_ATTACHMENTS_BIT;
#[doc(alias("OVERLAY_AUTOAIM_BIT"))]
const AUTOAIM = OVERLAY_AUTOAIM_BIT;
#[doc(alias("OVERLAY_BBOX_BIT"))]
const BOUNDING_BOX = OVERLAY_BBOX_BIT;
#[doc(alias("OVERLAY_BUDDHA_MODE", "buddha"))]
const BUDDHA_MODE = OVERLAY_BUDDHA_MODE;
#[doc(alias("OVERLAY_MESSAGE_BIT"))]
const MESSAGES = OVERLAY_MESSAGE_BIT;
#[doc(alias("OVERLAY_NAME_BIT"))]
const NAME = OVERLAY_NAME_BIT;
#[doc(alias("OVERLAY_NPC_CONDITIONS_BIT"))]
const NPC_CONDITIONS = OVERLAY_NPC_CONDITIONS_BIT;
#[doc(alias("OVERLAY_NPC_ENEMIES_BIT"))]
const NPC_ENEMIES = OVERLAY_NPC_ENEMIES_BIT;
#[doc(alias("OVERLAY_NPC_FOCUS_BIT"))]
const NPC_FOCUS = OVERLAY_NPC_FOCUS_BIT;
#[doc(alias("OVERLAY_NPC_KILL_BIT"))]
const NPC_KILL = OVERLAY_NPC_KILL_BIT;
#[doc(alias("OVERLAY_NPC_NEAREST_BIT"))]
const NPC_NEAREST = OVERLAY_NPC_NEAREST_BIT;
#[doc(alias("OVERLAY_NPC_RELATION_BIT"))]
const NPC_RELATIONS = OVERLAY_NPC_RELATION_BIT;
#[doc(alias("OVERLAY_NPC_ROUTE_BIT"))]
const NPC_ROUTE = OVERLAY_NPC_ROUTE_BIT;
#[doc(alias("OVERLAY_NPC_SELECTED_BIT"))]
const NPC_SELECTED = OVERLAY_NPC_SELECTED_BIT;
#[doc(alias("OVERLAY_NPC_SQUAD_BIT"))]
const NPC_SQUAD = OVERLAY_NPC_SQUAD_BIT;
#[doc(alias("OVERLAY_NPC_STEERING_REGULATIONS"))]
const NPC_STEERING_REGULATIONS = OVERLAY_NPC_STEERING_REGULATIONS;
#[doc(alias("OVERLAY_NPC_TASK_BIT"))]
const NPC_TASK = OVERLAY_NPC_TASK_BIT;
#[doc(alias("OVERLAY_NPC_TRIANGULATE_BIT"))]
const NPC_TRIANGULATE = OVERLAY_NPC_TRIANGULATE_BIT;
#[doc(alias("OVERLAY_NPC_VIEWCONE_BIT"))]
const NPC_VIEW_CONE = OVERLAY_NPC_VIEWCONE_BIT;
#[doc(alias("OVERLAY_NPC_ZAP_BIT"))]
const NPC_ZAP = OVERLAY_NPC_ZAP_BIT;
#[doc(alias("OVERLAY_PIVOT_BIT"))]
const PIVOT = OVERLAY_PIVOT_BIT;
#[doc(alias("OVERLAY_PROP_DEBUG"))]
const PROP_DEBUG = OVERLAY_PROP_DEBUG;
#[doc(alias("OVERLAY_RBOX_BIT"))]
const ROTATED_BOX = OVERLAY_RBOX_BIT;
#[doc(alias("OVERLAY_SHOW_BLOCKSLOS"))]
const SHOW_BLOCKS_SIGHT = OVERLAY_SHOW_BLOCKSLOS;
#[doc(alias("OVERLAY_TASK_TEXT_BIT"))]
const TASK_TEXT = OVERLAY_TASK_TEXT_BIT;
#[doc(alias("OVERLAY_TEXT_BIT"))]
const TEXT = OVERLAY_TEXT_BIT;
#[doc(alias("OVERLAY_VIEWOFFSET"))]
const VIEW_OFFSET = OVERLAY_VIEWOFFSET;
#[doc(alias("OVERLAY_WC_CHANGE_ENTITY"))]
const WC_CHANGE_ENTITY = OVERLAY_WC_CHANGE_ENTITY;
}
}
impl<'s> Entity<'s> {
#[doc(alias("m_debugOverlays"))]
pub fn debug_overlays(self) -> Result<DebugOverlays, FieldError> {
DEBUG_OVERLAYS
.read(self)
.map(DebugOverlays::from_bits_retain)
}
#[doc(alias("m_debugOverlays"))]
pub fn set_debug_overlays(
self,
engine: ValveEngine<'_>,
overlays: DebugOverlays,
) -> Result<(), FieldError> {
DEBUG_OVERLAYS.write(engine, self, overlays.bits())
}
}