1
0
mirror of https://github.com/rwengine/openrw.git synced 2024-09-15 06:52:34 +02:00

Fix compiler errors and test problems

This commit is contained in:
Daniel Evans 2014-05-25 22:30:50 +01:00
parent f289b6d0b0
commit c5451f5fd4
17 changed files with 34 additions and 23 deletions

View File

@ -4,6 +4,9 @@ project(OpenRW)
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++11 -Wall" ) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++11 -Wall" )
# Make GLM use radians
add_definitions(-DGLM_FORCE_RADIANS)
add_subdirectory(datadump) add_subdirectory(datadump)
add_subdirectory(rwgame) add_subdirectory(rwgame)
add_subdirectory(rwviewer) add_subdirectory(rwviewer)

View File

@ -58,8 +58,8 @@ int main(int argc, char** argv)
for (int i = 0; i < 16; i++) { for (int i = 0; i < 16; i++) {
uint8_t pixelIndex = 4 * (j*16 + i); uint8_t pixelIndex = 4 * (j*16 + i);
for (int y = 0; y < scaleUp; y++) { for (u_int32_t y = 0; y < scaleUp; y++) {
for (int x = 0; x < scaleUp; x++) { for (u_int32_t x = 0; x < scaleUp; x++) {
img.setPixel((i*scaleUp)+x, (j*scaleUp)+y, { img.setPixel((i*scaleUp)+x, (j*scaleUp)+y, {
tex.body.palette[pixelIndex + 0], tex.body.palette[pixelIndex + 0],
tex.body.palette[pixelIndex + 1], tex.body.palette[pixelIndex + 1],

View File

@ -163,7 +163,7 @@ void dumpModelFile(char* data)
} }
} }
for(int j = 0; j < geom.numtris; ++j) for(size_t j = 0; j < geom.numtris; ++j)
{ {
auto tri = readStructure<BSGeometryTriangle>(data, dataI); auto tri = readStructure<BSGeometryTriangle>(data, dataI);
std::cout << " Triangle " << std::dec std::cout << " Triangle " << std::dec

View File

@ -71,7 +71,7 @@ namespace RW
{ {
BSTMatrix rotation; BSTMatrix rotation;
BSTVector3 position; BSTVector3 position;
uint32_t index; int32_t index;
uint32_t matrixflags; // UNUSED BY ANYTHING. uint32_t matrixflags; // UNUSED BY ANYTHING.
}; };
@ -111,7 +111,7 @@ namespace RW
}; };
}; };
typedef glm::detail::tvec4<uint8_t> BSColor; typedef glm::u8vec4 BSColor;
struct BSGeometryColor struct BSGeometryColor
{ {

View File

@ -86,7 +86,7 @@ public:
struct Material { struct Material {
std::vector<Texture> textures; std::vector<Texture> textures;
glm::detail::tvec4<uint8_t> colour; glm::u8vec4 colour;
uint8_t flags; uint8_t flags;

View File

@ -188,7 +188,7 @@ void GameData::loadIMG(const std::string& name)
std::string archivePath = datpath + name; std::string archivePath = datpath + name;
if (imgLoader.load(archivePath)) { if (imgLoader.load(archivePath)) {
for (int i = 0; i < imgLoader.getAssetCount(); i++) { for (size_t i = 0; i < imgLoader.getAssetCount(); i++) {
auto &asset = imgLoader.getAssetInfoByIndex(i); auto &asset = imgLoader.getAssetInfoByIndex(i);
std::string filename = asset.name; std::string filename = asset.name;

View File

@ -108,7 +108,7 @@ Model* LoaderDFF::loadFromMemory(char *data, GameData *gameData)
} }
} }
for (int j = 0; j < geometry.numtris; ++j) { for (size_t j = 0; j < geometry.numtris; ++j) {
readStructure<RW::BSGeometryTriangle>(data, dataI); readStructure<RW::BSGeometryTriangle>(data, dataI);
} }
@ -245,7 +245,7 @@ Model* LoaderDFF::loadFromMemory(char *data, GameData *gameData)
geom->subgeom[i].numIndices = plgHeader.numverts; geom->subgeom[i].numIndices = plgHeader.numverts;
geom->subgeom[i].start = sgstart; geom->subgeom[i].start = sgstart;
sgstart += plgHeader.numverts; sgstart += plgHeader.numverts;
for (int j = 0; j < plgHeader.numverts; ++j) { for (size_t j = 0; j < plgHeader.numverts; ++j) {
geom->subgeom[i].indices[j] = extsec.readSubStructure<uint32_t>(meshplgI); geom->subgeom[i].indices[j] = extsec.readSubStructure<uint32_t>(meshplgI);
meshplgI += sizeof(uint32_t); meshplgI += sizeof(uint32_t);
} }

View File

@ -47,6 +47,7 @@ bool LoaderIDE::load(const std::string &filename)
std::stringstream strstream(line); std::stringstream strstream(line);
switch (section) { switch (section) {
default: break;
case OBJS: case OBJS:
case TOBJ: { // Supports Type 1, 2 and 3 case TOBJ: { // Supports Type 1, 2 and 3
std::shared_ptr<ObjectData> objs(new ObjectData); std::shared_ptr<ObjectData> objs(new ObjectData);

View File

@ -59,7 +59,7 @@ bool LoaderIFP::loadFromMemory(char *data)
ANPK* fileRoot = read<ANPK>(data, dataI); ANPK* fileRoot = read<ANPK>(data, dataI);
std::string listname = readString(data, dataI); std::string listname = readString(data, dataI);
for( size_t a = 0; a < fileRoot->info.entries; ++a ) { for( int a = 0; a < fileRoot->info.entries; ++a ) {
// something about a name? // something about a name?
/*NAME* n =*/ read<NAME>(data, dataI); /*NAME* n =*/ read<NAME>(data, dataI);
std::string animname = readString(data, dataI); std::string animname = readString(data, dataI);
@ -72,7 +72,7 @@ bool LoaderIFP::loadFromMemory(char *data)
DGAN* animroot = read<DGAN>(data, dataI); DGAN* animroot = read<DGAN>(data, dataI);
std::string infoname = readString(data, dataI); std::string infoname = readString(data, dataI);
for( size_t c = 0; c < animroot->info.entries; ++c ) { for( int c = 0; c < animroot->info.entries; ++c ) {
size_t start = data_offs; size_t start = data_offs;
CPAN* cpan = read<CPAN>(data, dataI); CPAN* cpan = read<CPAN>(data, dataI);
ANIM* frames = read<ANIM>(data, dataI); ANIM* frames = read<ANIM>(data, dataI);
@ -90,7 +90,7 @@ bool LoaderIFP::loadFromMemory(char *data)
if(type == "KR00") { if(type == "KR00") {
bonedata->type = AnimationBone::R00; bonedata->type = AnimationBone::R00;
for( size_t d = 0; d < frames->frames; ++d ) { for( int d = 0; d < frames->frames; ++d ) {
glm::quat q = glm::conjugate(*read<glm::quat>(data, dataI)); glm::quat q = glm::conjugate(*read<glm::quat>(data, dataI));
time = *read<float>(data,dataI); time = *read<float>(data,dataI);
bonedata->frames.push_back({ bonedata->frames.push_back({
@ -103,7 +103,7 @@ bool LoaderIFP::loadFromMemory(char *data)
} }
else if(type == "KRT0") { else if(type == "KRT0") {
bonedata->type = AnimationBone::RT0; bonedata->type = AnimationBone::RT0;
for( size_t d = 0; d < frames->frames; ++d ) { for( int d = 0; d < frames->frames; ++d ) {
glm::quat q = glm::conjugate(*read<glm::quat>(data, dataI)); glm::quat q = glm::conjugate(*read<glm::quat>(data, dataI));
glm::vec3 p = *read<glm::vec3>(data, dataI); glm::vec3 p = *read<glm::vec3>(data, dataI);
time = *read<float>(data,dataI); time = *read<float>(data,dataI);
@ -117,7 +117,7 @@ bool LoaderIFP::loadFromMemory(char *data)
} }
else if(type == "KRTS") { else if(type == "KRTS") {
bonedata->type = AnimationBone::RTS; bonedata->type = AnimationBone::RTS;
for( size_t d = 0; d < frames->frames; ++d ) { for( int d = 0; d < frames->frames; ++d ) {
glm::quat q = glm::conjugate(*read<glm::quat>(data, dataI)); glm::quat q = glm::conjugate(*read<glm::quat>(data, dataI));
glm::vec3 p = *read<glm::vec3>(data, dataI); glm::vec3 p = *read<glm::vec3>(data, dataI);
glm::vec3 s = *read<glm::vec3>(data, dataI); glm::vec3 s = *read<glm::vec3>(data, dataI);

View File

@ -144,7 +144,7 @@ glm::quat GTAVehicle::getRotation() const
void GTAVehicle::tick(float dt) void GTAVehicle::tick(float dt)
{ {
if(physVehicle) { if(physVehicle) {
for(size_t w = 0; w < physVehicle->getNumWheels(); ++w) { for(int w = 0; w < physVehicle->getNumWheels(); ++w) {
btWheelInfo& wi = physVehicle->getWheelInfo(w); btWheelInfo& wi = physVehicle->getWheelInfo(w);
if( info->handling.driveType == VehicleHandlingInfo::All || if( info->handling.driveType == VehicleHandlingInfo::All ||
(info->handling.driveType == VehicleHandlingInfo::Forward && wi.m_bIsFrontWheel) || (info->handling.driveType == VehicleHandlingInfo::Forward && wi.m_bIsFrontWheel) ||

View File

@ -405,7 +405,6 @@ void GTARenderer::renderWorld()
void GTARenderer::renderNamedFrame(Model* model, const glm::mat4 &matrix, const std::string& name) void GTARenderer::renderNamedFrame(Model* model, const glm::mat4 &matrix, const std::string& name)
{ {
size_t n = 0;
for (const ModelFrame* f : model->frames) for (const ModelFrame* f : model->frames)
{ {
const std::string& fname = f->getName(); const std::string& fname = f->getName();

View File

@ -62,6 +62,7 @@ struct State
break; break;
case sf::Event::KeyPressed: case sf::Event::KeyPressed:
switch(e.key.code) { switch(e.key.code) {
default: break;
case sf::Keyboard::Up: case sf::Keyboard::Up:
m->move(-1); m->move(-1);
break; break;
@ -140,4 +141,4 @@ struct StateManager
} }
}; };
#endif #endif

View File

@ -135,7 +135,7 @@ std::map<std::string, std::function<void (std::string)>> Commands = {
} }
auto spawnpos = hit + normal; auto spawnpos = hit + normal;
auto vehicle = gta->createVehicle(it->first, spawnpos, glm::quat(glm::vec3(0.f, 0.f, -plyLook.x * PiOver180))); gta->createVehicle(it->first, spawnpos, glm::quat(glm::vec3(0.f, 0.f, -plyLook.x * PiOver180)));
} }
} }
}, },

View File

@ -42,7 +42,7 @@ QModelIndex DFFFramesTreeModel::parent(const QModelIndex& child) const
if(c->getParent()) { if(c->getParent()) {
auto cp = c->getParent(); auto cp = c->getParent();
if(cp->getParent()) { if(cp->getParent()) {
for(int i = 0; i < cp->getParent()->getChildren().size(); ++i) { for(size_t i = 0; i < cp->getParent()->getChildren().size(); ++i) {
if(cp->getParent()->getChildren()[i] == c->getParent()) { if(cp->getParent()->getChildren()[i] == c->getParent()) {
return createIndex(i, 0, c->getParent()); return createIndex(i, 0, c->getParent());
} }

View File

@ -8,7 +8,7 @@ BOOST_AUTO_TEST_CASE(test_open_archive)
{ {
LoaderIMG loader; LoaderIMG loader;
BOOST_REQUIRE( loader.load("test_data/models/gta3") ); BOOST_REQUIRE( loader.load(Global::getGamePath() + "/models/gta3") );
BOOST_CHECK( loader.getAssetCount() > 0 ); BOOST_CHECK( loader.getAssetCount() > 0 );

View File

@ -4,7 +4,7 @@
#include <SFML/Window.hpp> #include <SFML/Window.hpp>
#include <engine/GameWorld.hpp> #include <engine/GameWorld.hpp>
// Many tests require OpenGL be functional, seems like a reasonable solution. #define ENV_GAME_PATH_NAME ("OPENRW_GAME_PATH")
class Global class Global
{ {
@ -16,7 +16,7 @@ public:
wnd.create(sf::VideoMode(640, 360), "Testing"); wnd.create(sf::VideoMode(640, 360), "Testing");
glewExperimental = GL_TRUE; glewExperimental = GL_TRUE;
glewInit(); glewInit();
e = new GameWorld("test_data"); e = new GameWorld(getGamePath());
e->gameData.loadIMG("/models/gta3"); e->gameData.loadIMG("/models/gta3");
e->load(); e->load();
@ -31,6 +31,13 @@ public:
wnd.close(); wnd.close();
delete e; delete e;
} }
static std::string getGamePath()
{
// TODO: Is this "the way to do it" on windows.
auto v = getenv(ENV_GAME_PATH_NAME);
return v ? v : "";
}
static Global& get() static Global& get()
{ {

View File

@ -8,7 +8,7 @@ BOOST_AUTO_TEST_CASE(test_open_dff)
{ {
LoaderIMG loader; LoaderIMG loader;
BOOST_REQUIRE( loader.load("test_data/models/gta3") ); BOOST_REQUIRE( loader.load(Global::getGamePath() + "/models/gta3") );
auto d = loader.loadToMemory("landstal.dff"); auto d = loader.loadToMemory("landstal.dff");