mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-11-09 15:39:55 +00:00
make_wall now gets the actual wall ID
This commit is contained in:
parent
0fdfd0c406
commit
f3e1d1c447
@ -468,7 +468,7 @@ hpcshape
|
||||
void pushShape(usershapelayer& ds);
|
||||
void make_sidewalls();
|
||||
void procedural_shapes();
|
||||
void make_wall(int id, const vector<hyperpoint> vertices, vector<ld> weights = equal_weights);
|
||||
void make_wall(int wo, int id, const vector<hyperpoint> vertices, vector<ld> weights = equal_weights);
|
||||
|
||||
void reserve_wall3d(int i);
|
||||
void compute_cornerbonus();
|
||||
|
@ -4396,7 +4396,7 @@ int hrmap::wall_offset(cell *c) {
|
||||
|
||||
|
||||
for(int i=0; i<isize(ss.faces); i++) {
|
||||
cgi.make_wall(wo + i, ss.faces[i]);
|
||||
cgi.make_wall(wo, i, ss.faces[i]);
|
||||
cgi.walltester[wo + i] = ss.walltester[i];
|
||||
}
|
||||
|
||||
|
32
polygons.cpp
32
polygons.cpp
@ -867,7 +867,7 @@ void geometry_information::procedural_shapes() {
|
||||
vector<ld> equal_weights(1000, 1);
|
||||
|
||||
#if MAXMDIM < 4
|
||||
void geometry_information::make_wall(int id, vector<hyperpoint> vertices, vector<ld> weights) { }
|
||||
void geometry_information::make_wall(int wo, int id, vector<hyperpoint> vertices, vector<ld> weights) { }
|
||||
void geometry_information::reserve_wall3d(int i) { }
|
||||
void geometry_information::create_wall3d() { }
|
||||
void geometry_information::compute_cornerbonus() { }
|
||||
@ -894,7 +894,9 @@ hyperpoint ray_kleinize(hyperpoint h, int id, ld pz) {
|
||||
return kleinize(h);
|
||||
}
|
||||
|
||||
void geometry_information::make_wall(int id, vector<hyperpoint> vertices, vector<ld> weights) {
|
||||
void geometry_information::make_wall(int wo, int id, vector<hyperpoint> vertices, vector<ld> weights) {
|
||||
|
||||
int id1 = wo + id;
|
||||
|
||||
wallstart.push_back(isize(raywall));
|
||||
|
||||
@ -908,7 +910,7 @@ void geometry_information::make_wall(int id, vector<hyperpoint> vertices, vector
|
||||
reverse(vertices.begin(), vertices.end()),
|
||||
reverse(weights.begin(), weights.end());
|
||||
|
||||
bshape(shWall3D[id], PPR::WALL);
|
||||
bshape(shWall3D[id1], PPR::WALL);
|
||||
last->flags |= POLY_TRIANGLES | POLY_PRINTABLE;
|
||||
|
||||
hyperpoint center = Hypc;
|
||||
@ -971,7 +973,7 @@ void geometry_information::make_wall(int id, vector<hyperpoint> vertices, vector
|
||||
});
|
||||
}
|
||||
|
||||
bshape(shWireframe3D[id], PPR::WALL);
|
||||
bshape(shWireframe3D[id1], PPR::WALL);
|
||||
if(true) {
|
||||
int STEP = vid.texture_step;
|
||||
for(int a=0; a<n; a++) for(int y=0; y<STEP; y++) {
|
||||
@ -990,21 +992,21 @@ void geometry_information::make_wall(int id, vector<hyperpoint> vertices, vector
|
||||
hpcpush(hpc[last->s]);
|
||||
}
|
||||
|
||||
bshape(shMiniWall3D[id], PPR::WALL);
|
||||
bshape(shMiniWall3D[id], PPR::WALL);
|
||||
for(int a=shWall3D[id].s; a < shWall3D[id].e; a++)
|
||||
bshape(shMiniWall3D[id1], PPR::WALL);
|
||||
bshape(shMiniWall3D[id1], PPR::WALL);
|
||||
for(int a=shWall3D[id1].s; a < shWall3D[id1].e; a++)
|
||||
hpcpush(mid(C0, hpc[a]));
|
||||
if(shWall3D[id].flags & POLY_TRIANGLES)
|
||||
if(shWall3D[id1].flags & POLY_TRIANGLES)
|
||||
last->flags |= POLY_TRIANGLES;
|
||||
if(shWall3D[id].flags & POLY_PRINTABLE)
|
||||
if(shWall3D[id1].flags & POLY_PRINTABLE)
|
||||
last->flags |= POLY_PRINTABLE;
|
||||
|
||||
finishshape();
|
||||
|
||||
shWall3D[id].intester = C0;
|
||||
shMiniWall3D[id].intester = C0;
|
||||
shWall3D[id1].intester = C0;
|
||||
shMiniWall3D[id1].intester = C0;
|
||||
|
||||
shPlainWall3D[id] = shWall3D[id]; // force_triangles ? shWall3D[id] : shWireframe3D[id];
|
||||
shPlainWall3D[id1] = shWall3D[id1]; // force_triangles ? shWall3D[id] : shWireframe3D[id];
|
||||
}
|
||||
|
||||
void geometry_information::reserve_wall3d(int i) {
|
||||
@ -1031,7 +1033,7 @@ void geometry_information::create_wall3d() {
|
||||
for(auto& ss: cgi.subshapes) {
|
||||
walloffsets.emplace_back(id, nullptr);
|
||||
for(auto& face: ss.faces_local)
|
||||
make_wall(id++, face);
|
||||
make_wall(0, id++, face);
|
||||
}
|
||||
hassert(id == tot);
|
||||
compute_cornerbonus();
|
||||
@ -1045,11 +1047,11 @@ void geometry_information::create_wall3d() {
|
||||
auto& we = cgi.heptshape->weights;
|
||||
if(we.empty()) {
|
||||
for(int w=0; w<isize(faces); w++)
|
||||
make_wall(w, faces[w]);
|
||||
make_wall(0, w, faces[w]);
|
||||
}
|
||||
else {
|
||||
for(int w=0; w<isize(faces); w++)
|
||||
make_wall(w, faces[w], we[w]);
|
||||
make_wall(0, w, faces[w], we[w]);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user