Pass object & to update_item_state::process_powerup

This commit is contained in:
Kp 2016-07-14 01:59:04 +00:00
parent d5a64c4f33
commit ed7376c695

View file

@ -3171,14 +3171,14 @@ class update_item_state
{
std::bitset<MAX_OBJECTS> m_modified;
public:
bool must_skip(const vcobjptridx_t i) const
bool must_skip(const vcobjidx_t i) const
{
return m_modified.test(i);
}
void process_powerup(vcobjptridx_t, powerup_type_t);
void process_powerup(const object &, powerup_type_t);
};
void update_item_state::process_powerup(const vcobjptridx_t o, const powerup_type_t id)
void update_item_state::process_powerup(const object &o, const powerup_type_t id)
{
uint_fast32_t count;
switch (id)
@ -3232,20 +3232,20 @@ void update_item_state::process_powerup(const vcobjptridx_t o, const powerup_typ
}
if (!count)
return;
const auto &vc = Vclip[o->rtype.vclip_info.vclip_num];
const auto &vc = Vclip[o.rtype.vclip_info.vclip_num];
const auto vc_num_frames = vc.num_frames;
const auto &&segp = vsegptridx(o->segnum);
const auto &&segp = vsegptridx(o.segnum);
const auto &seg_verts = segp->verts;
for (uint_fast32_t i = count++; i; --i)
{
const auto no = obj_create(OBJ_POWERUP, id, segp, vm_vec_avg(o->pos, Vertices[seg_verts[i % seg_verts.size()]]), &vmd_identity_matrix, o->size, CT_POWERUP, MT_PHYSICS, RT_POWERUP);
const auto &&no = obj_create(OBJ_POWERUP, id, segp, vm_vec_avg(o.pos, Vertices[seg_verts[i % seg_verts.size()]]), &vmd_identity_matrix, o.size, CT_POWERUP, MT_PHYSICS, RT_POWERUP);
if (no == object_none)
return;
m_modified.set(no);
no->mtype.phys_info = o->mtype.phys_info;
no->rtype.vclip_info = o->rtype.vclip_info;
no->rtype.vclip_info.framenum = (o->rtype.vclip_info.framenum + (i * vc_num_frames) / count) % vc_num_frames;
no->ctype.powerup_info = o->ctype.powerup_info;
no->mtype.phys_info = o.mtype.phys_info;
no->rtype.vclip_info = o.rtype.vclip_info;
no->rtype.vclip_info.framenum = (o.rtype.vclip_info.framenum + (i * vc_num_frames) / count) % vc_num_frames;
no->ctype.powerup_info = o.ctype.powerup_info;
}
}