Skip to content

Commit

Permalink
Create window_rendered_data locally
Browse files Browse the repository at this point in the history
  • Loading branch information
vLKp committed Dec 18, 2014
1 parent 4af33f1 commit 9ffd958
Show file tree
Hide file tree
Showing 12 changed files with 42 additions and 38 deletions.
2 changes: 0 additions & 2 deletions common/main/fwdobject.h
Original file line number Diff line number Diff line change
Expand Up @@ -130,10 +130,8 @@ struct obj_position;
extern const array<array<char, 9>, MAX_OBJECT_TYPES> Object_type_names;
#if defined(DXX_BUILD_DESCENT_I)
const unsigned MAX_CONTROLCEN_GUNS = 4;
const unsigned MAX_RENDERED_WINDOWS = 1;
#elif defined(DXX_BUILD_DESCENT_II)
const unsigned MAX_CONTROLCEN_GUNS = 8;
const unsigned MAX_RENDERED_WINDOWS = 3;
#endif

struct reactor_static;
Expand Down
12 changes: 0 additions & 12 deletions common/main/object.h
Original file line number Diff line number Diff line change
Expand Up @@ -408,18 +408,6 @@ struct obj_position
};

#if defined(DXX_BUILD_DESCENT_I) || defined(DXX_BUILD_DESCENT_II)
struct window_rendered_data
{
#if defined(DXX_BUILD_DESCENT_II)
fix64 time;
object *viewer;
int rear_view;
#endif
std::vector<objnum_t> rendered_robots;
};

extern array<window_rendered_data, MAX_RENDERED_WINDOWS> Window_rendered_data;

struct object_array_t : array<object, MAX_OBJECTS>
{
int highest;
Expand Down
24 changes: 22 additions & 2 deletions common/main/render.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,17 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#ifdef __cplusplus
#include "segnum.h"
#include "objnum.h"
#include "fwdvalptridx.h"
#include "fwdobject.h"

struct window_rendered_data;
struct window_rendered_data
{
#if defined(DXX_BUILD_DESCENT_II)
fix64 time;
object *viewer;
int rear_view;
#endif
std::vector<objnum_t> rendered_robots;
};

extern int Render_depth; //how many segments deep to render
static const unsigned Max_perspective_depth = 8; // Deepest segment at which perspective extern interpolation will be used.
Expand Down Expand Up @@ -115,4 +123,16 @@ void render_mine(segnum_t start_seg_num, fix eye_offset, window_rendered_data &)
void update_rendered_data(window_rendered_data &window, vobjptr_t viewer, int rear_view_flag);
#endif

static inline void render_mine(segnum_t start_seg_num, fix eye_offset)
{
window_rendered_data window;
render_mine(start_seg_num, eye_offset, window);
}

static inline void render_frame(fix eye_offset)
{
window_rendered_data window;
render_frame(eye_offset, window);
}

#endif
2 changes: 1 addition & 1 deletion similar/editor/medmisc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ if (!render_3d_in_big_window)
}

gr_set_current_canvas(render_canv);
render_frame(0, Window_rendered_data[0]);
render_frame(0);

Assert(render_canv->cv_bitmap.bm_w == show_canv->cv_bitmap.bm_w &&
render_canv->cv_bitmap.bm_h == show_canv->cv_bitmap.bm_h);
Expand Down
2 changes: 1 addition & 1 deletion similar/main/endlevel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1117,7 +1117,7 @@ static void endlevel_render_mine(fix eye_offset)
else
g3_set_view_matrix(Viewer_eye,Viewer->orient,Render_zoom);

render_mine(start_seg_num,eye_offset,Window_rendered_data[0]);
render_mine(start_seg_num,eye_offset);
}

void render_endlevel_frame(fix eye_offset)
Expand Down
4 changes: 2 additions & 2 deletions similar/main/gamecntl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -505,7 +505,7 @@ static int HandleDemoKey(int key)
if (PlayerCfg.PRShot)
{
gr_set_current_canvas(NULL);
render_frame(0, Window_rendered_data[0]);
render_frame(0);
gr_set_curfont(MEDIUM2_FONT);
gr_string(SWIDTH-FSPACX(92),SHEIGHT-LINE_SPACING,"DXX-Rebirth\n");
gr_flip();
Expand Down Expand Up @@ -764,7 +764,7 @@ static window_event_result HandleSystemKey(int key)
if (PlayerCfg.PRShot)
{
gr_set_current_canvas(NULL);
render_frame(0, Window_rendered_data[0]);
render_frame(0);
gr_set_curfont(MEDIUM2_FONT);
gr_string(SWIDTH-FSPACX(92),SHEIGHT-LINE_SPACING,"DXX-Rebirth\n");
gr_flip();
Expand Down
14 changes: 9 additions & 5 deletions similar/main/gamerend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -594,10 +594,11 @@ void game_render_frame_mono()

Viewer = Guided_missile[Player_num];

update_rendered_data(Window_rendered_data[0], Viewer, 0);
render_frame(0, Window_rendered_data[0]);
window_rendered_data window;
update_rendered_data(window, Viewer, 0);
render_frame(0, window);

wake_up_rendered_objects(Viewer, Window_rendered_data[0]);
wake_up_rendered_objects(Viewer, window);
show_HUD_names();

Viewer = viewer_save;
Expand All @@ -624,9 +625,12 @@ void game_render_frame_mono()
BigWindowSwitch=0;
return;
}
update_rendered_data(Window_rendered_data[0], Viewer, Rear_view);
#endif
render_frame(0, Window_rendered_data[0]);
window_rendered_data window;
#if defined(DXX_BUILD_DESCENT_II)
update_rendered_data(window, Viewer, Rear_view);
#endif
render_frame(0, window);
}

#if defined(DXX_BUILD_DESCENT_II)
Expand Down
7 changes: 4 additions & 3 deletions similar/main/gauges.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3178,7 +3178,8 @@ void do_cockpit_window_view(int win,const objptridx_t viewer,int rear_view_flag,
return;
}

update_rendered_data(Window_rendered_data[win+1], viewer, rear_view_flag);
window_rendered_data window;
update_rendered_data(window, viewer, rear_view_flag);

weapon_box_user[win] = user; //say who's using window

Expand Down Expand Up @@ -3211,12 +3212,12 @@ void do_cockpit_window_view(int win,const objptridx_t viewer,int rear_view_flag,

gr_set_current_canvas(&window_canv);

render_frame(0, Window_rendered_data[win+1]);
render_frame(0, window);

// HACK! If guided missile, wake up robots as necessary.
if (viewer->type == OBJ_WEAPON) {
// -- Used to require to be GUIDED -- if (viewer->id == GUIDEDMISS_ID)
wake_up_rendered_objects(viewer, Window_rendered_data[win+1]);
wake_up_rendered_objects(viewer, window);
}

if (label) {
Expand Down
2 changes: 0 additions & 2 deletions similar/main/object.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,6 @@ int print_object_info = 0;

//--unused-- int Player_controller_type = 0;

array<window_rendered_data, MAX_RENDERED_WINDOWS> Window_rendered_data;

#if defined(EDITOR) || !defined(NDEBUG)
const array<array<char, 9>, MAX_OBJECT_TYPES> Object_type_names{{
"WALL ",
Expand Down
7 changes: 1 addition & 6 deletions similar/main/render.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1515,9 +1515,6 @@ void render_mine(segnum_t start_seg_num,fix eye_offset, window_rendered_data &wi
{
using std::advance;
render_state_t rstate;
// Initialize number of objects (actually, robots!) rendered this frame.
window.rendered_robots.clear();

#ifndef NDEBUG
object_rendered = {};
#endif
Expand Down Expand Up @@ -1867,13 +1864,11 @@ int find_seg_side_face(short x,short y,segnum_t &seg,objnum_t &obj,int &side,int

if (render_3d_in_big_window) {
gr_set_current_canvas(LargeView.ev_canv);

render_frame(0, Window_rendered_data[0]);
}
else {
gr_set_current_canvas(Canv_editor_game);
render_frame(0, Window_rendered_data[0]);
}
render_frame(0);

_search_mode = 0;

Expand Down
2 changes: 1 addition & 1 deletion similar/main/state.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -936,7 +936,7 @@ int state_save_all_sub(const char *filename, const char *desc)

gr_set_current_canvas( cnv );

render_frame(0, Window_rendered_data[0]);
render_frame(0);

#if defined(OGL)
RAIIdubyte buf;
Expand Down
2 changes: 1 addition & 1 deletion similar/main/terrain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ static void draw_cell(int i,int j,g3s_point *p0,g3s_point *p1,g3s_point *p2,g3s_
mine_tiles_drawn |= 8;

if (mine_tiles_drawn == 0xf) {
render_mine(exit_segnum, 0, Window_rendered_data[0]);
render_mine(exit_segnum, 0);
//draw_exit_model();
mine_tiles_drawn=-1;
//if (ext_expl_playing)
Expand Down

0 comments on commit 9ffd958

Please sign in to comment.