Skip to content

Commit

Permalink
Pass d_level_shared_segment_state to validate_segment_all
Browse files Browse the repository at this point in the history
  • Loading branch information
vLKp committed Sep 19, 2018
1 parent f7ad4d9 commit 406be26
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 26 deletions.
8 changes: 4 additions & 4 deletions common/main/gameseg.h
Expand Up @@ -175,15 +175,15 @@ vm_distance find_connected_distance(const vms_vector &p0, vcsegptridx_t seg0, co
//create a matrix that describes the orientation of the given segment
void extract_orient_from_segment(fvcvertptr &vcvertptr, vms_matrix &m, const shared_segment &seg);

void validate_segment_all(d_level_shared_segment_state &);

#if DXX_USE_EDITOR
// In segment.c
// Make a just-modified segment valid.
// check all sides to see how many faces they each should have (0,1,2)
// create new vector normals
void validate_segment(vmsegptridx_t sp);
void validate_segment(fvcvertptr &vcvertptr, vmsegptridx_t sp);

extern void validate_segment_all(void);

#if DXX_USE_EDITOR
// Extract the forward vector from segment *sp, return in *vp.
// The forward vector is defined to be the vector from the the center of the front face of the segment
// to the center of the back face of the segment.
Expand Down
2 changes: 1 addition & 1 deletion similar/editor/group.cpp
Expand Up @@ -843,7 +843,7 @@ int AttachSegmentNew(void)
void validate_selected_segments(void)
{
range_for (const auto &gs, GroupList[current_group].segments)
validate_segment(vmsegptridx(gs));
validate_segment(vcvertptr, vmsegptridx(gs));
}

// =====================================================================================
Expand Down
2 changes: 1 addition & 1 deletion similar/editor/ksegsize.cpp
Expand Up @@ -61,7 +61,7 @@ static void validate_modified_segments(void)
if (w == v0)
{
modified_segments[segp] = true;
validate_segment(segp);
validate_segment(vcvertptr, segp);
for (unsigned s=0; s<MAX_SIDES_PER_SEGMENT; s++) {
Num_tilings = 1;
assign_default_uvs_to_side(segp, s);
Expand Down
10 changes: 5 additions & 5 deletions similar/editor/segment.cpp
Expand Up @@ -687,7 +687,7 @@ static int med_attach_segment_rotated(const vmsegptridx_t destseg, const vmsegpt
set_vertex_counts();

// Now all the vertices are in place. Create the faces.
validate_segment(nsp);
validate_segment(vcvertptr, nsp);

// Say to not render at the joint.
// destseg->sides[destside].render_flag = 0;
Expand Down Expand Up @@ -1102,7 +1102,7 @@ int med_form_joint(const vmsegptridx_t seg1, int side1, const vmsegptridx_t seg2
range_for (auto &s, partial_const_range(validation_list, nv))
{
const auto &&segp = seg1.absolute_sibling(s);
validate_segment(segp);
validate_segment(vcvertptr, segp);
remap_side_uvs(segp, remap_vertices); // remap uv coordinates on sides which were reshaped (ie, have a vertex in lost_vertices)
warn_if_concave_segment(segp);
}
Expand Down Expand Up @@ -1164,7 +1164,7 @@ int med_form_bridge_segment(const vmsegptridx_t seg1, int side1, const vmsegptri
// Validate bridge segment, and if degenerate, clean up mess.
Degenerate_segment_found = 0;

validate_segment(bs);
validate_segment(vcvertptr, bs);

if (Degenerate_segment_found) {
seg1->children[side1] = segment_none;
Expand All @@ -1177,8 +1177,8 @@ int med_form_bridge_segment(const vmsegptridx_t seg1, int side1, const vmsegptri
editor_status("Bridge segment would be degenerate, not created.\n");
return 1;
} else {
validate_segment(seg1); // used to only validate side, but segment does more error checking: ,side1);
validate_segment(seg2); // ,side2);
validate_segment(vcvertptr, seg1); // used to only validate side, but segment does more error checking: ,side1);
validate_segment(vcvertptr, seg2); // ,side2);
med_propagate_tmaps_to_segments(seg1,bs,0);

editor_status("Bridge segment formed.");
Expand Down
5 changes: 1 addition & 4 deletions similar/editor/seguvs.cpp
Expand Up @@ -1117,7 +1117,6 @@ static void calim_process_all_lights(int quick_light)
range_for (const auto &&segp, vmsegptridx)
{
for (sidenum=0; sidenum<MAX_SIDES_PER_SEGMENT; sidenum++) {
// if (!IS_CHILD(segp->children[sidenum])) {
if (WALL_IS_DOORWAY(GameBitmaps, Textures, vcwallptr, segp, segp, sidenum) != WID_NO_WALL)
{
const auto sidep = &segp->sides[sidenum];
Expand Down Expand Up @@ -1150,9 +1149,7 @@ static void calim_process_all_lights(int quick_light)
// Then, for all light sources, cast their light.
static void cast_all_light_in_mine(int quick_flag)
{

validate_segment_all();

validate_segment_all(LevelSharedSegmentState);
calim_zero_light_values();

calim_process_all_lights(quick_flag);
Expand Down
4 changes: 2 additions & 2 deletions similar/main/gamemine.cpp
Expand Up @@ -816,7 +816,7 @@ int load_mine_data(PHYSFS_File *LoadFile)
#endif

#if DXX_USE_EDITOR
validate_segment_all();
validate_segment_all(LevelSharedSegmentState);
#endif

//create_local_segment_data();
Expand Down Expand Up @@ -1026,7 +1026,7 @@ int load_mine_data_compiled(PHYSFS_File *LoadFile)
Vertices.set_count(Num_vertices);
Segments.set_count(Num_segments);

validate_segment_all(); // Fill in side type and normals.
validate_segment_all(LevelSharedSegmentState); // Fill in side type and normals.

range_for (const auto &&pi, vmsegptridx)
{
Expand Down
18 changes: 9 additions & 9 deletions similar/main/gameseg.cpp
Expand Up @@ -1522,36 +1522,36 @@ Levels 9-end: unchecked
// sp->sides[sidenum].render_flag = 0;
}

#if !DXX_USE_EDITOR
}
#endif

// -------------------------------------------------------------------------------
// Make a just-modified segment valid.
// check all sides to see how many faces they each should have (0,1,2)
// create new vector normals
void validate_segment(const vmsegptridx_t sp)
void validate_segment(fvcvertptr &vcvertptr, const vmsegptridx_t sp)
{
check_for_degenerate_segment(vcvertptr, sp);

for (int side = 0; side < MAX_SIDES_PER_SEGMENT; side++)
validate_segment_side(vcvertptr, sp, side);
}

// assign_default_uvs_to_segment(sp);
#if !DXX_USE_EDITOR
}
#endif

// -------------------------------------------------------------------------------
// Validate all segments.
// Highest_segment_index must be set.
// For all used segments (number <= Highest_segment_index), segnum field must be != -1.
void validate_segment_all(void)
void validate_segment_all(d_level_shared_segment_state &LevelSharedSegmentState)
{
range_for (const auto &&segp, vmsegptridx)
auto &Segments = LevelSharedSegmentState.get_segments();
auto &Vertices = LevelSharedSegmentState.get_vertices();
range_for (const auto &&segp, Segments.vmptridx)
{
#if DXX_USE_EDITOR
if (segp->segnum != segment_none)
#endif
validate_segment(segp);
validate_segment(Vertices.vcptr, segp);
}

#if DXX_USE_EDITOR
Expand Down

0 comments on commit 406be26

Please sign in to comment.