X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FObjects%2FWeapons.cpp;h=1fe60115a6d969c5bd1a2c12350eb31eed0af809;hb=afdb97f1c3e430801a1fd0c1b04a8a2102e8f1ac;hp=5ef40e6ff08e47d17a8963419f2eed0e32c659f9;hpb=33270590a498f404a091ddf032850de2e7e3d037;p=lugaru.git diff --git a/Source/Objects/Weapons.cpp b/Source/Objects/Weapons.cpp index 5ef40e6..1fe6011 100644 --- a/Source/Objects/Weapons.cpp +++ b/Source/Objects/Weapons.cpp @@ -97,7 +97,44 @@ void Weapon::setType(int t) } } -void Weapon::DoStuff(int i) +/* Load weapons models and textures */ +void Weapon::Load() +{ + LOG("Loading weapon data..."); + + knifetextureptr.load("Textures/Knife.png", 0); + bloodknifetextureptr.load("Textures/BloodKnife.png", 0); + lightbloodknifetextureptr.load("Textures/BloodKnifeLight.png", 0); + swordtextureptr.load("Textures/Sword.jpg", 1); + bloodswordtextureptr.load("Textures/SwordBlood.jpg", 1); + lightbloodswordtextureptr.load("Textures/SwordBloodLight.jpg", 1); + stafftextureptr.load("Textures/Staff.jpg", 1); + + throwingknifemodel.load("Models/ThrowingKnife.solid"); + throwingknifemodel.Scale(.001, .001, .001); + throwingknifemodel.Rotate(90, 0, 0); + throwingknifemodel.Rotate(0, 90, 0); + throwingknifemodel.flat = 0; + throwingknifemodel.CalculateNormals(1); + + swordmodel.load("Models/Sword.solid"); + swordmodel.Scale(.001, .001, .001); + swordmodel.Rotate(90, 0, 0); + swordmodel.Rotate(0, 90, 0); + swordmodel.Rotate(0, 0, 90); + swordmodel.flat = 1; + swordmodel.CalculateNormals(1); + + staffmodel.load("Models/Staff.solid"); + staffmodel.Scale(.005, .005, .005); + staffmodel.Rotate(90, 0, 0); + staffmodel.Rotate(0, 90, 0); + staffmodel.Rotate(0, 0, 90); + staffmodel.flat = 1; + staffmodel.CalculateNormals(1); +} + +void Weapon::doStuff(int i) { static int whichpatchx, whichpatchz, whichhit; static XYZ start, end, colpoint, normalrot, footvel, footpoint; @@ -585,10 +622,10 @@ void Weapon::DoStuff(int i) if (whichhit != -1) { hitsomething = 1; closestdistance = -1; - closestswordpoint = colpoint; //(position+tippoint)/2; - point[0] = DoRotation(Object::objects[k]->model.vertex[Object::objects[k]->model.Triangles[whichhit].vertex[0]], 0, Object::objects[k]->yaw, 0) + Object::objects[k]->position; - point[1] = DoRotation(Object::objects[k]->model.vertex[Object::objects[k]->model.Triangles[whichhit].vertex[1]], 0, Object::objects[k]->yaw, 0) + Object::objects[k]->position; - point[2] = DoRotation(Object::objects[k]->model.vertex[Object::objects[k]->model.Triangles[whichhit].vertex[2]], 0, Object::objects[k]->yaw, 0) + Object::objects[k]->position; + closestswordpoint = colpoint; + point[0] = DoRotation(Object::objects[k]->model.getTriangleVertex(whichhit, 0), 0, Object::objects[k]->yaw, 0) + Object::objects[k]->position; + point[1] = DoRotation(Object::objects[k]->model.getTriangleVertex(whichhit, 1), 0, Object::objects[k]->yaw, 0) + Object::objects[k]->position; + point[2] = DoRotation(Object::objects[k]->model.getTriangleVertex(whichhit, 2), 0, Object::objects[k]->yaw, 0) + Object::objects[k]->position; if (DistancePointLine(&closestswordpoint, &point[0], &point[1], &distance, &colpoint )) { if (distance < closestdistance || closestdistance == -1) { closestpoint = colpoint; @@ -920,11 +957,11 @@ void Weapons::DoStuff() //Move int i = 0; for (std::vector::iterator weapon = begin(); weapon != end(); ++weapon) { - weapon->DoStuff(i++); + weapon->doStuff(i++); } } -void Weapon::Draw() +void Weapon::draw() { static XYZ terrainlight; static GLfloat M[16]; @@ -1103,7 +1140,7 @@ int Weapons::Draw() glDepthMask(1); for (std::vector::iterator weapon = begin(); weapon != end(); ++weapon) { - weapon->Draw(); + weapon->draw(); } return 0; }