Switch Laser_render to vobjptr_t

This commit is contained in:
Kp 2014-11-30 22:09:23 +00:00
parent d79287e368
commit cf31cc4a5d
6 changed files with 15 additions and 14 deletions

View file

@ -206,7 +206,7 @@ void compress_objects();
void render_object(vobjptridx_t obj);
// Draw a blob-type object, like a fireball
void draw_object_blob(object &obj, bitmap_index bitmap);
void draw_object_blob(vobjptr_t obj, bitmap_index bitmap);
// draw an object that is a texture-mapped rod
void draw_object_tmap_rod(vobjptridx_t obj, bitmap_index bitmap, int lighted);

View file

@ -162,7 +162,7 @@ enum laser_level_t
#define HOMING_TURN_TIME (DESIGNATED_GAME_FRAMETIME)
void Laser_render(object &obj);
void Laser_render(vobjptr_t obj);
objptridx_t Laser_player_fire(vobjptridx_t obj, enum weapon_type_t laser_type, int gun_num, int make_sound, vms_vector shot_orientation);
void Laser_do_weapon_sequence(vobjptridx_t obj);
void Flare_create(vobjptridx_t obj);

View file

@ -77,7 +77,7 @@ static objptridx_t find_homing_object(const vms_vector &curpos, const vobjptridx
// Called by render code.... determines if the laser is from a robot or the
// player and calls the appropriate routine.
void Laser_render(object &obj)
void Laser_render(const vobjptr_t obj)
{
// Commented out by John (sort of, typed by Mike) on 6/8/94
@ -92,14 +92,15 @@ void Laser_render(object &obj)
Error( "Invalid weapon type in Laser_render\n" );
}
#endif
switch( Weapon_info[get_weapon_id(&obj)].render_type ) {
auto &wi = Weapon_info[get_weapon_id(obj)];
switch(wi.render_type)
{
case WEAPON_RENDER_LASER:
Int3(); // Not supported anymore!
//Laser_draw_one(obj-Objects, Weapon_info[obj->id].bitmap );
break;
case WEAPON_RENDER_BLOB:
draw_object_blob(obj, Weapon_info[get_weapon_id(&obj)].bitmap );
draw_object_blob(obj, wi.bitmap);
break;
case WEAPON_RENDER_POLYMODEL:
break;

View file

@ -189,25 +189,25 @@ objptridx_t obj_find_first_of_type(int type)
}
//draw an object that has one bitmap & doesn't rotate
void draw_object_blob(object &obj,bitmap_index bmi)
void draw_object_blob(const vobjptr_t obj,bitmap_index bmi)
{
grs_bitmap * bm = &GameBitmaps[bmi.index];
vms_vector pos = obj.pos;
vms_vector pos = obj->pos;
PIGGY_PAGE_IN( bmi );
// draw these with slight offset to viewer preventing too much ugly clipping
if ( obj.type == OBJ_FIREBALL && obj.id == VCLIP_VOLATILE_WALL_HIT )
if ( obj->type == OBJ_FIREBALL && obj->id == VCLIP_VOLATILE_WALL_HIT )
{
vms_vector offs_vec;
vm_vec_normalized_dir_quick(offs_vec,Viewer->pos,obj.pos);
vm_vec_normalized_dir_quick(offs_vec,Viewer->pos,obj->pos);
vm_vec_scale_add2(pos,offs_vec,F1_0);
}
if (bm->bm_w > bm->bm_h)
g3_draw_bitmap(pos,obj.size,fixmuldiv(obj.size,bm->bm_h,bm->bm_w),*bm);
g3_draw_bitmap(pos,obj->size,fixmuldiv(obj->size,bm->bm_h,bm->bm_w),*bm);
else
g3_draw_bitmap(pos,fixmuldiv(obj.size,bm->bm_w,bm->bm_h),obj.size,*bm);
g3_draw_bitmap(pos,fixmuldiv(obj->size,bm->bm_w,bm->bm_h),obj->size,*bm);
}
//draw an object that is a texture-mapped rod

View file

@ -118,7 +118,7 @@ void do_powerup_frame(const vobjptridx_t obj)
void draw_powerup(const vobjptridx_t obj)
{
draw_object_blob(*obj, Vclip[obj->rtype.vclip_info.vclip_num].frames[obj->rtype.vclip_info.framenum] );
draw_object_blob(obj, Vclip[obj->rtype.vclip_info.vclip_num].frames[obj->rtype.vclip_info.framenum] );
}
static void _powerup_basic_nonhud(int redadd, int greenadd, int blueadd, int score)

View file

@ -60,7 +60,7 @@ void draw_vclip_object(const vobjptridx_t obj,fix timeleft,int lighted, int vcli
else {
Assert(lighted==0); //blob cannot now be lighted
draw_object_blob(*obj, Vclip[vclip_num].frames[bitmapnum] );
draw_object_blob(obj, Vclip[vclip_num].frames[bitmapnum] );
}
}