#pragma once #include #include #include "dxxsconf.h" #include "fwd-segment.h" #include "fwd-robot.h" #include "objnum.h" #include constexpr std::integral_constant MAX_RENDER_SEGS{}; struct rect { short left,top,right,bot; }; namespace dcx { struct render_state_t { struct per_segment_state_t { struct distant_object { objnum_t objnum; }; std::vector objects; uint16_t Seg_depth = 0; //depth for this seg in Render_list bool processed = false; //whether this entry has been processed rect render_window; }; unsigned N_render_segs = 0; std::array Render_list; std::array render_pos; //where in render_list does this segment appear? std::unordered_map render_seg_map; }; } #ifdef dsx namespace dsx { #if defined(DXX_BUILD_DESCENT_I) #define set_dynamic_light(Robot_info, render) set_dynamic_light(render) #elif defined(DXX_BUILD_DESCENT_II) #undef set_dynamic_light #endif void set_dynamic_light(const d_robot_info_array &, render_state_t &); } #endif