Pass canvas to g3 interpreters
This commit is contained in:
parent
b7bbe21e4d
commit
0c0026ef1b
|
@ -194,6 +194,7 @@ class g3_interpreter_draw_base
|
||||||
protected:
|
protected:
|
||||||
grs_bitmap *const *const model_bitmaps;
|
grs_bitmap *const *const model_bitmaps;
|
||||||
polygon_model_points &Interp_point_list;
|
polygon_model_points &Interp_point_list;
|
||||||
|
grs_canvas &canvas;
|
||||||
const submodel_angles anim_angles;
|
const submodel_angles anim_angles;
|
||||||
const g3s_lrgb model_light;
|
const g3s_lrgb model_light;
|
||||||
private:
|
private:
|
||||||
|
@ -224,8 +225,9 @@ protected:
|
||||||
set_color_by_model_light(&g3s_lrgb::b, light, color);
|
set_color_by_model_light(&g3s_lrgb::b, light, color);
|
||||||
return light;
|
return light;
|
||||||
}
|
}
|
||||||
g3_interpreter_draw_base(grs_bitmap *const *const mbitmaps, const submodel_angles aangles, polygon_model_points &plist, const g3s_lrgb &mlight) :
|
g3_interpreter_draw_base(grs_bitmap *const *const mbitmaps, polygon_model_points &plist, grs_canvas &ccanvas, const submodel_angles aangles, const g3s_lrgb &mlight) :
|
||||||
model_bitmaps(mbitmaps), Interp_point_list(plist),
|
model_bitmaps(mbitmaps), Interp_point_list(plist),
|
||||||
|
canvas(ccanvas),
|
||||||
anim_angles(aangles), model_light(mlight)
|
anim_angles(aangles), model_light(mlight)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -252,7 +254,7 @@ protected:
|
||||||
const g3s_lrgb rodbm_light{
|
const g3s_lrgb rodbm_light{
|
||||||
f1_0, f1_0, f1_0
|
f1_0, f1_0, f1_0
|
||||||
};
|
};
|
||||||
g3_draw_rod_tmap(*grd_curcanv, *model_bitmaps[w(p + 2)], rod_bot_p, w(p + 16), rod_top_p, w(p + 32), rodbm_light);
|
g3_draw_rod_tmap(canvas, *model_bitmaps[w(p + 2)], rod_bot_p, w(p + 16), rod_top_p, w(p + 32), rodbm_light);
|
||||||
}
|
}
|
||||||
void op_subcall(const uint8_t *const p, const glow_values_t *const glow_values)
|
void op_subcall(const uint8_t *const p, const glow_values_t *const glow_values)
|
||||||
{
|
{
|
||||||
|
@ -269,8 +271,8 @@ class g3_draw_polygon_model_state :
|
||||||
const glow_values_t *const glow_values;
|
const glow_values_t *const glow_values;
|
||||||
unsigned glow_num;
|
unsigned glow_num;
|
||||||
public:
|
public:
|
||||||
g3_draw_polygon_model_state(grs_bitmap *const *const mbitmaps, const submodel_angles aangles, const g3s_lrgb &mlight, const glow_values_t *const glvalues, polygon_model_points &plist) :
|
g3_draw_polygon_model_state(grs_bitmap *const *const mbitmaps, polygon_model_points &plist, grs_canvas &ccanvas, const submodel_angles aangles, const g3s_lrgb &mlight, const glow_values_t *const glvalues) :
|
||||||
g3_interpreter_draw_base(mbitmaps, aangles, plist, mlight),
|
g3_interpreter_draw_base(mbitmaps, plist, ccanvas, aangles, mlight),
|
||||||
glow_values(glvalues),
|
glow_values(glvalues),
|
||||||
glow_num(~0u) //glow off by default
|
glow_num(~0u) //glow off by default
|
||||||
{
|
{
|
||||||
|
@ -329,7 +331,7 @@ public:
|
||||||
uvl_list[i].l = average_light;
|
uvl_list[i].l = average_light;
|
||||||
}
|
}
|
||||||
const auto point_list = prepare_point_list<MAX_POINTS_PER_POLY>(nv, p);
|
const auto point_list = prepare_point_list<MAX_POINTS_PER_POLY>(nv, p);
|
||||||
g3_draw_tmap(*grd_curcanv, nv, point_list, uvl_list, lrgb_list, *model_bitmaps[w(p + 28)]);
|
g3_draw_tmap(canvas, nv, point_list, uvl_list, lrgb_list, *model_bitmaps[w(p + 28)]);
|
||||||
}
|
}
|
||||||
void op_sortnorm(const uint8_t *const p)
|
void op_sortnorm(const uint8_t *const p)
|
||||||
{
|
{
|
||||||
|
@ -358,8 +360,8 @@ class g3_draw_morphing_model_state :
|
||||||
const vms_vector *const new_points;
|
const vms_vector *const new_points;
|
||||||
static constexpr const glow_values_t *glow_values = nullptr;
|
static constexpr const glow_values_t *glow_values = nullptr;
|
||||||
public:
|
public:
|
||||||
g3_draw_morphing_model_state(grs_bitmap *const *const mbitmaps, const submodel_angles aangles, const g3s_lrgb mlight, const vms_vector *const npoints, polygon_model_points &plist) :
|
g3_draw_morphing_model_state(grs_bitmap *const *const mbitmaps, polygon_model_points &plist, grs_canvas &ccanvas, const submodel_angles aangles, const g3s_lrgb &mlight, const vms_vector *const npoints) :
|
||||||
g3_interpreter_draw_base(mbitmaps, aangles, plist, mlight),
|
g3_interpreter_draw_base(mbitmaps, plist, ccanvas, aangles, mlight),
|
||||||
new_points(npoints)
|
new_points(npoints)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -413,7 +415,7 @@ public:
|
||||||
for (uint_fast32_t i = 0; i != nv; i++)
|
for (uint_fast32_t i = 0; i != nv; i++)
|
||||||
uvl_list[i] = (reinterpret_cast<const g3s_uvl *>(p+30+((nv&~1)+1)*2))[i];
|
uvl_list[i] = (reinterpret_cast<const g3s_uvl *>(p+30+((nv&~1)+1)*2))[i];
|
||||||
const auto point_list = prepare_point_list<MAX_POINTS_PER_POLY>(nv, p);
|
const auto point_list = prepare_point_list<MAX_POINTS_PER_POLY>(nv, p);
|
||||||
g3_draw_tmap(*grd_curcanv, nv, point_list, uvl_list, lrgb_list, *model_bitmaps[w(p + 28)]);
|
g3_draw_tmap(canvas, nv, point_list, uvl_list, lrgb_list, *model_bitmaps[w(p + 28)]);
|
||||||
}
|
}
|
||||||
void op_sortnorm(const uint8_t *const p)
|
void op_sortnorm(const uint8_t *const p)
|
||||||
{
|
{
|
||||||
|
@ -748,7 +750,7 @@ int g3_poly_get_color(const uint8_t *p)
|
||||||
//is really a seperate pipeline. returns true if drew
|
//is really a seperate pipeline. returns true if drew
|
||||||
void g3_draw_polygon_model(const uint8_t *p, grs_bitmap *const *const model_bitmaps, const submodel_angles anim_angles, const g3s_lrgb model_light, const glow_values_t *glow_values, polygon_model_points &Interp_point_list)
|
void g3_draw_polygon_model(const uint8_t *p, grs_bitmap *const *const model_bitmaps, const submodel_angles anim_angles, const g3s_lrgb model_light, const glow_values_t *glow_values, polygon_model_points &Interp_point_list)
|
||||||
{
|
{
|
||||||
g3_draw_polygon_model_state state(model_bitmaps, anim_angles, model_light, glow_values, Interp_point_list);
|
g3_draw_polygon_model_state state(model_bitmaps, Interp_point_list, *grd_curcanv, anim_angles, model_light, glow_values);
|
||||||
iterate_polymodel(p, state);
|
iterate_polymodel(p, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -759,7 +761,7 @@ static int nest_count;
|
||||||
//alternate interpreter for morphing object
|
//alternate interpreter for morphing object
|
||||||
void g3_draw_morphing_model(const uint8_t *const p, grs_bitmap *const *const model_bitmaps, const submodel_angles anim_angles, const g3s_lrgb model_light, const vms_vector *new_points, polygon_model_points &Interp_point_list)
|
void g3_draw_morphing_model(const uint8_t *const p, grs_bitmap *const *const model_bitmaps, const submodel_angles anim_angles, const g3s_lrgb model_light, const vms_vector *new_points, polygon_model_points &Interp_point_list)
|
||||||
{
|
{
|
||||||
g3_draw_morphing_model_state state(model_bitmaps, anim_angles, model_light, new_points, Interp_point_list);
|
g3_draw_morphing_model_state state(model_bitmaps, Interp_point_list, *grd_curcanv, anim_angles, model_light, new_points);
|
||||||
iterate_polymodel(p, state);
|
iterate_polymodel(p, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue