Pass vertex factory to compute_center_point_on_side
This commit is contained in:
parent
53a1d5f9ce
commit
e8645b2062
|
@ -59,11 +59,11 @@ using vertex_vertnum_array_list = array<vertex_vertnum_pair, 6>;
|
||||||
#ifdef dsx
|
#ifdef dsx
|
||||||
namespace dsx {
|
namespace dsx {
|
||||||
extern int Doing_lighting_hack_flag;
|
extern int Doing_lighting_hack_flag;
|
||||||
void compute_center_point_on_side(vms_vector &vp, const segment &sp, unsigned side);
|
void compute_center_point_on_side(fvcvertptr &vcvertptr, vms_vector &vp, const segment &sp, unsigned side);
|
||||||
static inline vms_vector compute_center_point_on_side(const segment &sp, const unsigned side)
|
static inline vms_vector compute_center_point_on_side(fvcvertptr &vcvertptr, const segment &sp, const unsigned side)
|
||||||
{
|
{
|
||||||
vms_vector v;
|
vms_vector v;
|
||||||
return compute_center_point_on_side(v, sp, side), v;
|
return compute_center_point_on_side(vcvertptr, v, sp, side), v;
|
||||||
}
|
}
|
||||||
void compute_segment_center(fvcvertptr &vcvertptr, vms_vector &vp, const segment &sp);
|
void compute_segment_center(fvcvertptr &vcvertptr, vms_vector &vp, const segment &sp);
|
||||||
static inline vms_vector compute_segment_center(fvcvertptr &vcvertptr, const segment &sp)
|
static inline vms_vector compute_segment_center(fvcvertptr &vcvertptr, const segment &sp)
|
||||||
|
|
|
@ -142,7 +142,7 @@ int generate_curve( fix r1scale, fix r4scale ) {
|
||||||
fixang rangle, uangle;
|
fixang rangle, uangle;
|
||||||
|
|
||||||
const vcsegptr_t cursegp = Cursegp;
|
const vcsegptr_t cursegp = Cursegp;
|
||||||
compute_center_point_on_side(p1, cursegp, Curside);
|
compute_center_point_on_side(vcvertptr, p1, cursegp, Curside);
|
||||||
|
|
||||||
switch( Curside ) {
|
switch( Curside ) {
|
||||||
case WLEFT:
|
case WLEFT:
|
||||||
|
@ -169,7 +169,7 @@ int generate_curve( fix r1scale, fix r4scale ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const vcsegptr_t markedsegp = Markedsegp;
|
const vcsegptr_t markedsegp = Markedsegp;
|
||||||
compute_center_point_on_side(p4, markedsegp, Markedside);
|
compute_center_point_on_side(vcvertptr, p4, markedsegp, Markedside);
|
||||||
|
|
||||||
switch( Markedside ) {
|
switch( Markedside ) {
|
||||||
case WLEFT:
|
case WLEFT:
|
||||||
|
|
|
@ -366,7 +366,7 @@ static inline vms_matrix med_create_group_rotation_matrix(int delta_flag, const
|
||||||
static void med_rotate_group(const vms_matrix &rotmat, group::segment_array_type_t &group_seglist, const vcsegptr_t first_seg, int first_side)
|
static void med_rotate_group(const vms_matrix &rotmat, group::segment_array_type_t &group_seglist, const vcsegptr_t first_seg, int first_side)
|
||||||
{
|
{
|
||||||
array<int8_t, MAX_VERTICES> vertex_list;
|
array<int8_t, MAX_VERTICES> vertex_list;
|
||||||
const auto rotate_center = compute_center_point_on_side(first_seg, first_side);
|
const auto &&rotate_center = compute_center_point_on_side(vcvertptr, first_seg, first_side);
|
||||||
|
|
||||||
// Create list of points to rotate.
|
// Create list of points to rotate.
|
||||||
vertex_list = {};
|
vertex_list = {};
|
||||||
|
@ -600,7 +600,7 @@ static int med_copy_group(int delta_flag, const vmsegptridx_t base_seg, int base
|
||||||
|
|
||||||
// Now do the copy
|
// Now do the copy
|
||||||
// First, xlate all vertices so center of group_seg:group_side is at origin
|
// First, xlate all vertices so center of group_seg:group_side is at origin
|
||||||
const auto srcv = compute_center_point_on_side(group_seg,group_side);
|
const auto &&srcv = compute_center_point_on_side(vcvertptr, group_seg, group_side);
|
||||||
range_for (auto &&v, vmvertptridx)
|
range_for (auto &&v, vmvertptridx)
|
||||||
if (in_vertex_list[v])
|
if (in_vertex_list[v])
|
||||||
vm_vec_sub2(*v, srcv);
|
vm_vec_sub2(*v, srcv);
|
||||||
|
@ -617,7 +617,7 @@ static int med_copy_group(int delta_flag, const vmsegptridx_t base_seg, int base
|
||||||
med_rotate_group(rotmat, GroupList[new_current_group].segments, group_seg, group_side);
|
med_rotate_group(rotmat, GroupList[new_current_group].segments, group_seg, group_side);
|
||||||
|
|
||||||
// Now xlate all vertices so group_seg:group_side shares center point with base_seg:base_side
|
// Now xlate all vertices so group_seg:group_side shares center point with base_seg:base_side
|
||||||
const auto destv = compute_center_point_on_side(base_seg,base_side);
|
const auto &&destv = compute_center_point_on_side(vcvertptr, base_seg, base_side);
|
||||||
range_for (auto &&v, vmvertptridx)
|
range_for (auto &&v, vmvertptridx)
|
||||||
if (in_vertex_list[v])
|
if (in_vertex_list[v])
|
||||||
vm_vec_add2(*v, destv);
|
vm_vec_add2(*v, destv);
|
||||||
|
@ -741,7 +741,7 @@ static int med_move_group(int delta_flag, const vmsegptridx_t base_seg, int base
|
||||||
|
|
||||||
// Now do the move
|
// Now do the move
|
||||||
// First, xlate all vertices so center of group_seg:group_side is at origin
|
// First, xlate all vertices so center of group_seg:group_side is at origin
|
||||||
const auto srcv = compute_center_point_on_side(group_seg,group_side);
|
const auto &&srcv = compute_center_point_on_side(vcvertptr, group_seg, group_side);
|
||||||
range_for (auto &&v, vmvertptridx)
|
range_for (auto &&v, vmvertptridx)
|
||||||
if (in_vertex_list[v])
|
if (in_vertex_list[v])
|
||||||
vm_vec_sub2(*v, srcv);
|
vm_vec_sub2(*v, srcv);
|
||||||
|
@ -758,7 +758,7 @@ static int med_move_group(int delta_flag, const vmsegptridx_t base_seg, int base
|
||||||
med_rotate_group(rotmat, GroupList[current_group].segments, group_seg, group_side);
|
med_rotate_group(rotmat, GroupList[current_group].segments, group_seg, group_side);
|
||||||
|
|
||||||
// Now xlate all vertices so group_seg:group_side shares center point with base_seg:base_side
|
// Now xlate all vertices so group_seg:group_side shares center point with base_seg:base_side
|
||||||
const auto destv = compute_center_point_on_side(base_seg,base_side);
|
const auto &&destv = compute_center_point_on_side(vcvertptr, base_seg, base_side);
|
||||||
range_for (auto &&v, vmvertptridx)
|
range_for (auto &&v, vmvertptridx)
|
||||||
if (in_vertex_list[v])
|
if (in_vertex_list[v])
|
||||||
vm_vec_add2(*v, destv);
|
vm_vec_add2(*v, destv);
|
||||||
|
|
|
@ -559,7 +559,7 @@ static void move_player_2_segment_and_rotate(const vmsegptridx_t seg, const unsi
|
||||||
static int edgenum=0;
|
static int edgenum=0;
|
||||||
|
|
||||||
compute_segment_center(vcvertptr, ConsoleObject->pos,seg);
|
compute_segment_center(vcvertptr, ConsoleObject->pos,seg);
|
||||||
auto vp = compute_center_point_on_side(seg,side);
|
auto vp = compute_center_point_on_side(vcvertptr, seg, side);
|
||||||
vm_vec_sub2(vp,ConsoleObject->pos);
|
vm_vec_sub2(vp,ConsoleObject->pos);
|
||||||
|
|
||||||
auto &sv = Side_to_verts[Curside];
|
auto &sv = Side_to_verts[Curside];
|
||||||
|
@ -590,7 +590,7 @@ int SetPlayerFromCursegMinusOne()
|
||||||
static int edgenum=0;
|
static int edgenum=0;
|
||||||
const auto view_vec = vm_vec_negated(Cursegp->sides[Curside].normals[0]);
|
const auto view_vec = vm_vec_negated(Cursegp->sides[Curside].normals[0]);
|
||||||
|
|
||||||
const auto side_center = compute_center_point_on_side(Cursegp,Curside);
|
const auto &&side_center = compute_center_point_on_side(vcvertptr, Cursegp, Curside);
|
||||||
const auto view_vec2 = vm_vec_copy_scale(view_vec,view_dist);
|
const auto view_vec2 = vm_vec_copy_scale(view_vec,view_dist);
|
||||||
vm_vec_sub(ConsoleObject->pos,side_center,view_vec2);
|
vm_vec_sub(ConsoleObject->pos,side_center,view_vec2);
|
||||||
|
|
||||||
|
|
|
@ -829,7 +829,7 @@ static int med_attach_segment_rotated(const vmsegptridx_t destseg, const vmsegpt
|
||||||
vm_transpose_matrix(rotmat2); // added 12:33 pm, 10/01/93
|
vm_transpose_matrix(rotmat2); // added 12:33 pm, 10/01/93
|
||||||
|
|
||||||
// Compute and rotate the center point of the attaching face.
|
// Compute and rotate the center point of the attaching face.
|
||||||
const auto vc0 = compute_center_point_on_side(newseg,newside);
|
const auto &&vc0 = compute_center_point_on_side(vcvertptr, newseg, newside);
|
||||||
const auto vr = vm_vec_rotate(vc0,rotmat2);
|
const auto vr = vm_vec_rotate(vc0,rotmat2);
|
||||||
|
|
||||||
// Now rotate the free vertices in the segment
|
// Now rotate the free vertices in the segment
|
||||||
|
@ -838,7 +838,7 @@ static int med_attach_segment_rotated(const vmsegptridx_t destseg, const vmsegpt
|
||||||
vm_vec_rotate(tvs[v], vcvertptr(newseg->verts[v + 4]), rotmat2);
|
vm_vec_rotate(tvs[v], vcvertptr(newseg->verts[v + 4]), rotmat2);
|
||||||
|
|
||||||
// Now translate the new segment so that the center point of the attaching faces are the same.
|
// Now translate the new segment so that the center point of the attaching faces are the same.
|
||||||
const auto vc1 = compute_center_point_on_side(destseg,destside);
|
const auto &&vc1 = compute_center_point_on_side(vcvertptr, destseg, destside);
|
||||||
const auto xlate_vec = vm_vec_sub(vc1,vr);
|
const auto xlate_vec = vm_vec_sub(vc1,vr);
|
||||||
|
|
||||||
// Create and add the 4 new vertices.
|
// Create and add the 4 new vertices.
|
||||||
|
@ -1649,7 +1649,7 @@ int med_find_closest_threshold_segment_side(const vmsegptridx_t sp, int side, im
|
||||||
if (IS_CHILD(sp->children[side]))
|
if (IS_CHILD(sp->children[side]))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
const auto vsc = compute_center_point_on_side(sp, side);
|
const auto &&vsc = compute_center_point_on_side(vcvertptr, sp, side);
|
||||||
|
|
||||||
closest_seg_dist = JOINT_THRESHOLD;
|
closest_seg_dist = JOINT_THRESHOLD;
|
||||||
|
|
||||||
|
@ -1659,7 +1659,7 @@ int med_find_closest_threshold_segment_side(const vmsegptridx_t sp, int side, im
|
||||||
if (segp != sp)
|
if (segp != sp)
|
||||||
for (s=0;s<MAX_SIDES_PER_SEGMENT;s++) {
|
for (s=0;s<MAX_SIDES_PER_SEGMENT;s++) {
|
||||||
if (!IS_CHILD(segp->children[s])) {
|
if (!IS_CHILD(segp->children[s])) {
|
||||||
const auto vtc = compute_center_point_on_side(segp, s);
|
const auto &&vtc = compute_center_point_on_side(vcvertptr, segp, s);
|
||||||
current_dist = vm_vec_dist( vsc, vtc );
|
current_dist = vm_vec_dist( vsc, vtc );
|
||||||
if (current_dist < closest_seg_dist) {
|
if (current_dist < closest_seg_dist) {
|
||||||
adj_sp = segp;
|
adj_sp = segp;
|
||||||
|
|
|
@ -3817,7 +3817,7 @@ _exit_cheat:
|
||||||
|
|
||||||
if (!ai_multiplayer_awareness(obj, 62))
|
if (!ai_multiplayer_awareness(obj, 62))
|
||||||
return;
|
return;
|
||||||
const auto &¢er_point = compute_center_point_on_side(vcsegptr(obj->segnum), aip->GOALSIDE);
|
const auto &¢er_point = compute_center_point_on_side(vcvertptr, vcsegptr(obj->segnum), aip->GOALSIDE);
|
||||||
const auto goal_vector = vm_vec_normalized_quick(vm_vec_sub(center_point, obj->pos));
|
const auto goal_vector = vm_vec_normalized_quick(vm_vec_sub(center_point, obj->pos));
|
||||||
ai_turn_towards_vector(goal_vector, obj, robptr.turn_time[Difficulty_level]);
|
ai_turn_towards_vector(goal_vector, obj, robptr.turn_time[Difficulty_level]);
|
||||||
move_towards_vector(obj, goal_vector, 0);
|
move_towards_vector(obj, goal_vector, 0);
|
||||||
|
|
|
@ -109,7 +109,7 @@ static uint_fast32_t insert_center_points(segment_array &segments, point_seg *ps
|
||||||
Assert(connect_side != side_none); // Impossible! These two segments must be connected, they were created by create_path_points (which was created by mk!)
|
Assert(connect_side != side_none); // Impossible! These two segments must be connected, they were created by create_path_points (which was created by mk!)
|
||||||
if (connect_side == side_none) // Try to blow past the assert, this should at least prevent a hang.
|
if (connect_side == side_none) // Try to blow past the assert, this should at least prevent a hang.
|
||||||
connect_side = 0;
|
connect_side = 0;
|
||||||
const auto &¢er_point = compute_center_point_on_side(seg1, connect_side);
|
const auto &¢er_point = compute_center_point_on_side(vcvertptr, seg1, connect_side);
|
||||||
auto new_point = vm_vec_sub(psegs[i-1].point, center_point);
|
auto new_point = vm_vec_sub(psegs[i-1].point, center_point);
|
||||||
new_point.x /= 16;
|
new_point.x /= 16;
|
||||||
new_point.y /= 16;
|
new_point.y /= 16;
|
||||||
|
@ -356,7 +356,7 @@ if ((objp->type == OBJ_ROBOT) && (objp->ctype.ai_info.behavior == ai_behavior::A
|
||||||
fvi_info hit_data;
|
fvi_info hit_data;
|
||||||
int hit_type;
|
int hit_type;
|
||||||
|
|
||||||
const auto center_point = compute_center_point_on_side(segp, snum);
|
const auto &¢er_point = compute_center_point_on_side(vcvertptr, segp, snum);
|
||||||
|
|
||||||
fq.p0 = &objp->pos;
|
fq.p0 = &objp->pos;
|
||||||
fq.startseg = objp->segnum;
|
fq.startseg = objp->segnum;
|
||||||
|
|
|
@ -2214,7 +2214,7 @@ static vms_vector find_exit_direction(vms_vector result, const vcobjptr_t objp,
|
||||||
{
|
{
|
||||||
for (unsigned side = MAX_SIDES_PER_SEGMENT; side --;)
|
for (unsigned side = MAX_SIDES_PER_SEGMENT; side --;)
|
||||||
if (WALL_IS_DOORWAY(segp, side) & WID_FLY_FLAG) {
|
if (WALL_IS_DOORWAY(segp, side) & WID_FLY_FLAG) {
|
||||||
const auto exit_point = compute_center_point_on_side(segp, side);
|
const auto &&exit_point = compute_center_point_on_side(vcvertptr, segp, side);
|
||||||
vm_vec_add2(result, vm_vec_normalized_quick(vm_vec_sub(exit_point, objp->pos)));
|
vm_vec_add2(result, vm_vec_normalized_quick(vm_vec_sub(exit_point, objp->pos)));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -874,7 +874,7 @@ static int find_exit_side(const object_base &obj)
|
||||||
fix d;
|
fix d;
|
||||||
|
|
||||||
if (pseg->children[i]!=segment_none) {
|
if (pseg->children[i]!=segment_none) {
|
||||||
auto sidevec = compute_center_point_on_side(pseg,i);
|
auto sidevec = compute_center_point_on_side(vcvertptr, pseg, i);
|
||||||
vm_vec_normalized_dir_quick(sidevec,sidevec,segcenter);
|
vm_vec_normalized_dir_quick(sidevec,sidevec,segcenter);
|
||||||
d = vm_vec_dot(sidevec,prefvec);
|
d = vm_vec_dot(sidevec,prefvec);
|
||||||
|
|
||||||
|
@ -1181,7 +1181,7 @@ void do_endlevel_flythrough(flythrough_data *flydata)
|
||||||
//update target point & angles
|
//update target point & angles
|
||||||
|
|
||||||
//where we are heading (center of exit_side)
|
//where we are heading (center of exit_side)
|
||||||
auto dest_point = compute_center_point_on_side(pseg,exit_side);
|
auto dest_point = compute_center_point_on_side(vcvertptr, pseg, exit_side);
|
||||||
const vms_vector nextcenter = (pseg->children[exit_side] == segment_exit)
|
const vms_vector nextcenter = (pseg->children[exit_side] == segment_exit)
|
||||||
? dest_point
|
? dest_point
|
||||||
: compute_segment_center(vcvertptr, vcsegptr(pseg->children[exit_side]));
|
: compute_segment_center(vcvertptr, vcsegptr(pseg->children[exit_side]));
|
||||||
|
@ -1202,8 +1202,8 @@ void do_endlevel_flythrough(flythrough_data *flydata)
|
||||||
s1 = i;
|
s1 = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto s0p = compute_center_point_on_side(pseg,s0);
|
const auto &&s0p = compute_center_point_on_side(vcvertptr, pseg, s0);
|
||||||
const auto s1p = compute_center_point_on_side(pseg,s1);
|
const auto &&s1p = compute_center_point_on_side(vcvertptr, pseg, s1);
|
||||||
dist = fixmul(vm_vec_dist(s0p,s1p),flydata->offset_frac);
|
dist = fixmul(vm_vec_dist(s0p,s1p),flydata->offset_frac);
|
||||||
|
|
||||||
if (dist-flydata->offset_dist > MAX_SLIDE_PER_SEGMENT)
|
if (dist-flydata->offset_dist > MAX_SLIDE_PER_SEGMENT)
|
||||||
|
@ -1463,7 +1463,7 @@ try_again:
|
||||||
const auto &&exit_seg = vmsegptr(exit_segnum);
|
const auto &&exit_seg = vmsegptr(exit_segnum);
|
||||||
compute_segment_center(vcvertptr, mine_exit_point, exit_seg);
|
compute_segment_center(vcvertptr, mine_exit_point, exit_seg);
|
||||||
extract_orient_from_segment(&mine_exit_orient, exit_seg);
|
extract_orient_from_segment(&mine_exit_orient, exit_seg);
|
||||||
compute_center_point_on_side(mine_side_exit_point, exit_seg, exit_side);
|
compute_center_point_on_side(vcvertptr, mine_side_exit_point, exit_seg, exit_side);
|
||||||
|
|
||||||
vm_vec_scale_add(mine_ground_exit_point,mine_exit_point,mine_exit_orient.uvec,-i2f(20));
|
vm_vec_scale_add(mine_ground_exit_point,mine_exit_point,mine_exit_orient.uvec,-i2f(20));
|
||||||
|
|
||||||
|
|
|
@ -1320,7 +1320,7 @@ void explode_wall(const vmsegptridx_t segnum,int sidenum)
|
||||||
w.time = 0;
|
w.time = 0;
|
||||||
|
|
||||||
//play one long sound for whole door wall explosion
|
//play one long sound for whole door wall explosion
|
||||||
const auto pos = compute_center_point_on_side(segnum,sidenum);
|
const auto &&pos = compute_center_point_on_side(vcvertptr, segnum, sidenum);
|
||||||
digi_link_sound_to_pos( SOUND_EXPLODING_WALL,segnum, sidenum, pos, 0, F1_0 );
|
digi_link_sound_to_pos( SOUND_EXPLODING_WALL,segnum, sidenum, pos, 0, F1_0 );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -507,7 +507,7 @@ void move_player_2_segment(const vmsegptridx_t seg,int side)
|
||||||
{
|
{
|
||||||
const auto &&console = vmobjptridx(ConsoleObject);
|
const auto &&console = vmobjptridx(ConsoleObject);
|
||||||
compute_segment_center(vcvertptr, console->pos, seg);
|
compute_segment_center(vcvertptr, console->pos, seg);
|
||||||
auto vp = compute_center_point_on_side(seg,side);
|
auto vp = compute_center_point_on_side(vcvertptr, seg, side);
|
||||||
vm_vec_sub2(vp, console->pos);
|
vm_vec_sub2(vp, console->pos);
|
||||||
vm_vector_2_matrix(console->orient, vp, nullptr, nullptr);
|
vm_vector_2_matrix(console->orient, vp, nullptr, nullptr);
|
||||||
obj_relink(vmobjptr, vmsegptr, console, seg);
|
obj_relink(vmobjptr, vmsegptr, console, seg);
|
||||||
|
|
|
@ -103,7 +103,7 @@ static uint_fast32_t find_connect_child(const vcsegidx_t base_seg, const array<s
|
||||||
return std::distance(b, std::find(b, end(children), base_seg));
|
return std::distance(b, std::find(b, end(children), base_seg));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void compute_center_point_on_side(vms_vector &r, const array<unsigned, MAX_VERTICES_PER_SEGMENT> &verts, const unsigned side)
|
static void compute_center_point_on_side(fvcvertptr &vcvertptr, vms_vector &r, const array<unsigned, MAX_VERTICES_PER_SEGMENT> &verts, const unsigned side)
|
||||||
{
|
{
|
||||||
vms_vector vp;
|
vms_vector vp;
|
||||||
vm_vec_zero(vp);
|
vm_vec_zero(vp);
|
||||||
|
@ -133,9 +133,9 @@ unsigned Num_static_lights;
|
||||||
// ------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------
|
||||||
// Compute the center point of a side of a segment.
|
// Compute the center point of a side of a segment.
|
||||||
// The center point is defined to be the average of the 4 points defining the side.
|
// The center point is defined to be the average of the 4 points defining the side.
|
||||||
void compute_center_point_on_side(vms_vector &vp, const segment &sp, const unsigned side)
|
void compute_center_point_on_side(fvcvertptr &vcvertptr, vms_vector &vp, const segment &sp, const unsigned side)
|
||||||
{
|
{
|
||||||
compute_center_point_on_side(vp, sp.verts, side);
|
compute_center_point_on_side(vcvertptr, vp, sp.verts, side);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------
|
||||||
|
@ -1185,7 +1185,7 @@ static int check_for_degenerate_side(const vcsegptr_t sp, int sidenum)
|
||||||
int degeneracy_flag = 0;
|
int degeneracy_flag = 0;
|
||||||
|
|
||||||
const auto segc = compute_segment_center(vcvertptr, sp);
|
const auto segc = compute_segment_center(vcvertptr, sp);
|
||||||
const auto sidec = compute_center_point_on_side(sp, sidenum);
|
const auto &&sidec = compute_center_point_on_side(vcvertptr, sp, sidenum);
|
||||||
const auto vec_to_center = vm_vec_sub(segc, sidec);
|
const auto vec_to_center = vm_vec_sub(segc, sidec);
|
||||||
|
|
||||||
//vm_vec_sub(&vec1, &Vertices[sp->verts[vp[1]]], &Vertices[sp->verts[vp[0]]]);
|
//vm_vec_sub(&vec1, &Vertices[sp->verts[vp[1]]], &Vertices[sp->verts[vp[0]]]);
|
||||||
|
|
|
@ -615,7 +615,7 @@ static void set_sound_sources(fvcsegptridx &vcsegptridx)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const auto pnt = compute_center_point_on_side(seg,sidenum);
|
const auto &&pnt = compute_center_point_on_side(vcvertptr, seg, sidenum);
|
||||||
digi_link_sound_to_pos(sn, seg, sidenum, pnt, 1, F1_0/2);
|
digi_link_sound_to_pos(sn, seg, sidenum, pnt, 1, F1_0/2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,7 +196,7 @@ static int do_change_walls(const trigger &t, const uint8_t new_wall_type)
|
||||||
case TT_OPEN_WALL:
|
case TT_OPEN_WALL:
|
||||||
if ((TmapInfo[segp->sides[side].tmap_num].flags & TMI_FORCE_FIELD)) {
|
if ((TmapInfo[segp->sides[side].tmap_num].flags & TMI_FORCE_FIELD)) {
|
||||||
ret |= 2;
|
ret |= 2;
|
||||||
const auto pos = compute_center_point_on_side(segp, side );
|
const auto &&pos = compute_center_point_on_side(vcvertptr, segp, side);
|
||||||
digi_link_sound_to_pos( SOUND_FORCEFIELD_OFF, segp, side, pos, 0, F1_0 );
|
digi_link_sound_to_pos( SOUND_FORCEFIELD_OFF, segp, side, pos, 0, F1_0 );
|
||||||
digi_kill_sound_linked_to_segment(segp,side,SOUND_FORCEFIELD_HUM);
|
digi_kill_sound_linked_to_segment(segp,side,SOUND_FORCEFIELD_HUM);
|
||||||
wall0.type = new_wall_type;
|
wall0.type = new_wall_type;
|
||||||
|
@ -214,7 +214,7 @@ static int do_change_walls(const trigger &t, const uint8_t new_wall_type)
|
||||||
if ((TmapInfo[segp->sides[side].tmap_num].flags & TMI_FORCE_FIELD)) {
|
if ((TmapInfo[segp->sides[side].tmap_num].flags & TMI_FORCE_FIELD)) {
|
||||||
ret |= 2;
|
ret |= 2;
|
||||||
{
|
{
|
||||||
const auto pos = compute_center_point_on_side(segp, side );
|
const auto &&pos = compute_center_point_on_side(vcvertptr, segp, side);
|
||||||
digi_link_sound_to_pos(SOUND_FORCEFIELD_HUM,segp,side,pos,1, F1_0/2);
|
digi_link_sound_to_pos(SOUND_FORCEFIELD_HUM,segp,side,pos,1, F1_0/2);
|
||||||
}
|
}
|
||||||
case TT_ILLUSORY_WALL:
|
case TT_ILLUSORY_WALL:
|
||||||
|
@ -270,7 +270,7 @@ static void do_il_off(const trigger &t)
|
||||||
#elif defined(DXX_BUILD_DESCENT_II)
|
#elif defined(DXX_BUILD_DESCENT_II)
|
||||||
const auto op = [](const vmsegptridx_t &seg, unsigned side) {
|
const auto op = [](const vmsegptridx_t &seg, unsigned side) {
|
||||||
wall_illusion_off(seg, side);
|
wall_illusion_off(seg, side);
|
||||||
const auto &&cp = compute_center_point_on_side(seg, side);
|
const auto &&cp = compute_center_point_on_side(vcvertptr, seg, side);
|
||||||
digi_link_sound_to_pos(SOUND_WALL_REMOVED, seg, side, cp, 0, F1_0);
|
digi_link_sound_to_pos(SOUND_WALL_REMOVED, seg, side, cp, 0, F1_0);
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -441,7 +441,7 @@ void wall_open_door(const vmsegptridx_t seg, int side)
|
||||||
if ( Newdemo_state != ND_STATE_PLAYBACK )
|
if ( Newdemo_state != ND_STATE_PLAYBACK )
|
||||||
{
|
{
|
||||||
// NOTE THE LINK TO ABOVE!!!!
|
// NOTE THE LINK TO ABOVE!!!!
|
||||||
const auto cp = compute_center_point_on_side(seg, side );
|
const auto &&cp = compute_center_point_on_side(vcvertptr, seg, side);
|
||||||
if (WallAnims[w->clip_num].open_sound > -1 )
|
if (WallAnims[w->clip_num].open_sound > -1 )
|
||||||
digi_link_sound_to_pos( WallAnims[w->clip_num].open_sound, seg, side, cp, 0, F1_0 );
|
digi_link_sound_to_pos( WallAnims[w->clip_num].open_sound, seg, side, cp, 0, F1_0 );
|
||||||
|
|
||||||
|
@ -507,7 +507,7 @@ void start_wall_cloak(const vmsegptridx_t seg, int side)
|
||||||
Assert(w->linked_wall == wall_none);
|
Assert(w->linked_wall == wall_none);
|
||||||
|
|
||||||
if ( Newdemo_state != ND_STATE_PLAYBACK ) {
|
if ( Newdemo_state != ND_STATE_PLAYBACK ) {
|
||||||
const auto cp = compute_center_point_on_side(seg, side );
|
const auto &&cp = compute_center_point_on_side(vcvertptr, seg, side);
|
||||||
digi_link_sound_to_pos( SOUND_WALL_CLOAK_ON, seg, side, cp, 0, F1_0 );
|
digi_link_sound_to_pos( SOUND_WALL_CLOAK_ON, seg, side, cp, 0, F1_0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -583,7 +583,7 @@ void start_wall_decloak(const vmsegptridx_t seg, int side)
|
||||||
Assert(w->linked_wall == wall_none);
|
Assert(w->linked_wall == wall_none);
|
||||||
|
|
||||||
if ( Newdemo_state != ND_STATE_PLAYBACK ) {
|
if ( Newdemo_state != ND_STATE_PLAYBACK ) {
|
||||||
const auto cp = compute_center_point_on_side(seg, side );
|
const auto &&cp = compute_center_point_on_side(vcvertptr, seg, side);
|
||||||
digi_link_sound_to_pos( SOUND_WALL_CLOAK_OFF, seg, side, cp, 0, F1_0 );
|
digi_link_sound_to_pos( SOUND_WALL_CLOAK_OFF, seg, side, cp, 0, F1_0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -733,7 +733,7 @@ void wall_close_door(const vmsegptridx_t seg, int side)
|
||||||
if ( Newdemo_state != ND_STATE_PLAYBACK )
|
if ( Newdemo_state != ND_STATE_PLAYBACK )
|
||||||
{
|
{
|
||||||
// NOTE THE LINK TO ABOVE!!!!
|
// NOTE THE LINK TO ABOVE!!!!
|
||||||
const auto cp = compute_center_point_on_side(seg, side );
|
const auto &&cp = compute_center_point_on_side(vcvertptr, seg, side);
|
||||||
if (WallAnims[w->clip_num].open_sound > -1 )
|
if (WallAnims[w->clip_num].open_sound > -1 )
|
||||||
digi_link_sound_to_pos( WallAnims[w->clip_num].open_sound, seg, side, cp, 0, F1_0 );
|
digi_link_sound_to_pos( WallAnims[w->clip_num].open_sound, seg, side, cp, 0, F1_0 );
|
||||||
|
|
||||||
|
@ -872,7 +872,7 @@ static bool do_door_close(active_door &d)
|
||||||
{ //first time
|
{ //first time
|
||||||
if (WallAnims[wp.clip_num].close_sound > -1 )
|
if (WallAnims[wp.clip_num].close_sound > -1 )
|
||||||
{
|
{
|
||||||
digi_link_sound_to_pos(WallAnims[wp.clip_num].close_sound, seg, side, compute_center_point_on_side(seg, side), 0, F1_0);
|
digi_link_sound_to_pos(WallAnims[wp.clip_num].close_sound, seg, side, compute_center_point_on_side(vcvertptr, seg, side), 0, F1_0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1392,7 +1392,7 @@ static void bng_process_segment(const object &objp, fix damage, const vmsegptrid
|
||||||
tm &= 0x3fff; //tm without flags
|
tm &= 0x3fff; //tm without flags
|
||||||
|
|
||||||
if ((((ec=TmapInfo[tm].eclip_num)!=-1) && ((db=Effects[ec].dest_bm_num)!=-1 && !(Effects[ec].flags&EF_ONE_SHOT))) || (ec==-1 && (TmapInfo[tm].destroyed!=-1))) {
|
if ((((ec=TmapInfo[tm].eclip_num)!=-1) && ((db=Effects[ec].dest_bm_num)!=-1 && !(Effects[ec].flags&EF_ONE_SHOT))) || (ec==-1 && (TmapInfo[tm].destroyed!=-1))) {
|
||||||
const auto pnt = compute_center_point_on_side(segp, sidenum);
|
const auto &&pnt = compute_center_point_on_side(vcvertptr, segp, sidenum);
|
||||||
dist = vm_vec_dist_quick(pnt, objp.pos);
|
dist = vm_vec_dist_quick(pnt, objp.pos);
|
||||||
if (dist < damage/2) {
|
if (dist < damage/2) {
|
||||||
dist = find_connected_distance(pnt, segp, objp.pos, segp.absolute_sibling(objp.segnum), MAX_BLAST_GLASS_DEPTH, WID_RENDPAST_FLAG);
|
dist = find_connected_distance(pnt, segp, objp.pos, segp.absolute_sibling(objp.segnum), MAX_BLAST_GLASS_DEPTH, WID_RENDPAST_FLAG);
|
||||||
|
|
Loading…
Reference in a new issue