X-Git-Url: https://git.jsancho.org/?p=lugaru.git;a=blobdiff_plain;f=Source%2FObjects%2FObject.cpp;h=13f124cb6ff873b41f0cd7bcc83b10c0714dde53;hp=796e6ef16f222009ba01f3d53d667099463938b8;hb=1a6ef830cdd01a9b7a8bbcfde8a51b7c430671a3;hpb=828b5b9ec7818c7047e96aebeb67f79837cbc793 diff --git a/Source/Objects/Object.cpp b/Source/Objects/Object.cpp index 796e6ef..13f124c 100644 --- a/Source/Objects/Object.cpp +++ b/Source/Objects/Object.cpp @@ -206,15 +206,13 @@ void Object::doShadows(XYZ lightloc) patchx = terrainpoint.x / (terrain.size / subdivision * terrain.scale); patchz = terrainpoint.z / (terrain.size / subdivision * terrain.scale); if (patchx >= 0 && patchz >= 0 && patchx < subdivision && patchz < subdivision) { - if (terrain.patchobjectnum[patchx][patchz]) { - for (int k = 0; k < terrain.patchobjectnum[patchx][patchz]; k++) { - int l = terrain.patchobjects[patchx][patchz][k]; - if (objects[l]->type != treetrunktype) { - testpoint = terrainpoint; - testpoint2 = terrainpoint + lightloc * 50 * (1 - shadowed); - if (objects[l]->model.LineCheck(&testpoint, &testpoint2, &col, &objects[l]->position, &objects[l]->yaw) != -1) { - shadowed = 1 - (findDistance(&terrainpoint, &col) / 50); - } + for (unsigned int k = 0; k < terrain.patchobjects[patchx][patchz].size(); k++) { + unsigned int l = terrain.patchobjects[patchx][patchz][k]; + if (objects[l]->type != treetrunktype) { + testpoint = terrainpoint; + testpoint2 = terrainpoint + lightloc * 50 * (1 - shadowed); + if (objects[l]->model.LineCheck(&testpoint, &testpoint2, &col, &objects[l]->position, &objects[l]->yaw) != -1) { + shadowed = 1 - (findDistance(&terrainpoint, &col) / 50); } } } @@ -569,9 +567,9 @@ void Object::SphereCheckPossible(XYZ *p1, float radius) int whichpatchz = p1->z / (terrain.size / subdivision * terrain.scale); if (whichpatchx >= 0 && whichpatchz >= 0 && whichpatchx < subdivision && whichpatchz < subdivision) { - if (terrain.patchobjectnum[whichpatchx][whichpatchz] > 0 && terrain.patchobjectnum[whichpatchx][whichpatchz] < 500) { - for (int j = 0; j < terrain.patchobjectnum[whichpatchx][whichpatchz]; j++) { - int i = terrain.patchobjects[whichpatchx][whichpatchz][j]; + if (terrain.patchobjects[whichpatchx][whichpatchz].size() < 500) { + for (unsigned int j = 0; j < terrain.patchobjects[whichpatchx][whichpatchz].size(); j++) { + unsigned int i = terrain.patchobjects[whichpatchx][whichpatchz][j]; objects[i]->possible = false; if (objects[i]->model.SphereCheckPossible(p1, radius, &objects[i]->position, &objects[i]->yaw) != -1) { objects[i]->possible = true;