#pragma once #include #include #include "dxxsconf.h" #include "fwd-segment.h" #include "compiler-array.h" #include "segnum.h" #include "objnum.h" constexpr unsigned MAX_RENDER_SEGS = 500; struct rect { short left,top,right,bot; }; struct render_state_t { struct per_segment_state_t { struct distant_object { objnum_t objnum; }; std::vector objects; uint16_t Seg_depth; //depth for this seg in Render_list bool processed; //whether this entry has been processed rect render_window; per_segment_state_t() : Seg_depth(0), processed(false) { } }; unsigned N_render_segs; array Render_list; array render_pos; //where in render_list does this segment appear? std::unordered_map render_seg_map; render_state_t() : N_render_segs(0) { } }; void set_dynamic_light(render_state_t &);