Merge commit 'upstream/master'

actorid
Marc Zinnschlag 15 years ago
commit 518ddab30e

@ -10,35 +10,45 @@ set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/)
set(BSA bsa/bsa_archive.cpp bsa/bsa_file.cpp)
set(BSA_HEADER bsa/bsa_archive.hpp bsa/bsa_file.hpp)
source_group(bsa FILES ${BSA} ${BSA_HEADER})
set(NIF nif/nif_file.cpp)
set(NIF_HEADER nif/controlled.hpp nif/effect.hpp nif/nif_types.hpp nif/record.hpp
nif/controller.hpp nif/extra.hpp nif/node.hpp nif/record_ptr.hpp
nif/data.hpp nif/nif_file.hpp nif/property.hpp)
source_group(nif FILES ${NIF} ${NIF_HEADER})
set(NIFOGRE nifogre/ogre_nif_loader.cpp)
set(NIFOGRE_HEADER nifogre/ogre_nif_loader.hpp)
source_group(nifogre FILES ${NIFOGRE} ${NIFOGRE_HEADER})
set(TOOLS tools/stringops.cpp tools/fileops.cpp)
set(TOOLS_HEADER tools/fileops.hpp tools/slice_array.hpp tools/stringops.hpp)
source_group(tools FILES ${TOOLS} ${TOOLS_HEADER})
set(MANGLE_VFS mangle/vfs/servers/ogre_vfs.cpp)
source_group(mangle_vfs FILES ${MANGLE_VFS})
set(OGRE ogre/renderer.cpp)
set(OGRE_HEADER ogre/renderer.hpp)
source_group(ogre FILES ${OGRE} ${OGRE_HEADER})
set(INPUT input/oismanager.cpp)
set(INPUT_HEADER input/oismanager.hpp input/listener.hpp input/func_binder.hpp input/dispatch_map.hpp input/dispatcher.hpp input/poller.hpp)
source_group(input FILES ${INPUT} ${INPUT_HEADER})
set(GAME game/main.cpp game/engine.cpp)
set(GAME_HEADER game/mwinput/inputmanager.hpp game/engine.hpp)
source_group(game FILES ${GAME} ${GAME_HEADER})
set(ESM_STORE esm_store/store.cpp esm_store/cell_store.cpp)
set(ESM_STORE_HEADER esm_store/cell_store.hpp esm_store/reclists.hpp esm_store/store.hpp)
source_group(esm_store FILES ${ESM_STORE} ${ESM_STORE_HEADER})
set(GAMEREND game/mwrender/mwscene.cpp game/mwrender/cell.cpp game/mwrender/interior.cpp)
set(GAMEREND_HEADER game/mwrender/cell.hpp game/mwrender/mwscene.hpp
game/mwrender/interior.hpp game/mwrender/playerpos.hpp)
source_group(game_renderer FILES ${GAMEREND} ${GAMEREND_HEADER})
set(ESM_HEADER esm/defs.hpp esm/loadcell.hpp esm/loadfact.hpp esm/loadltex.hpp
esm/loadskil.hpp
@ -50,6 +60,7 @@ set(ESM_HEADER esm/defs.hpp esm/loadcell.hpp esm/loadfact.hpp esm/loadltex.hpp
esm/loadbody.hpp esm/loaddial.hpp esm/loadlevlist.hpp esm/loadrace.hpp esm/loadweap.hpp
esm/loadbook.hpp esm/loaddoor.hpp esm/loadligh.hpp esm/loadregn.hpp esm/records.hpp
esm/loadbsgn.hpp esm/loadench.hpp esm/loadlocks.hpp esm/loadscpt.hpp)
source_group(esm_header FILES ${ESM_HEADER})
# Platform specific
if (WIN32)

@ -11,8 +11,9 @@ namespace ESM {
loading process, but are rather loaded later on demand when we are
setting up a specific cell.
*/
struct CellRef
class CellRef
{
public:
int refnum; // Reference number
std::string refID; // ID of object being referenced

@ -60,7 +60,7 @@ struct LeveledListBase
// items. Also, some times we don't want to merge lists, just
// overwrite. Figure out a way to give the user this option.
for(int i=0; i<list.size(); i++)
for(size_t i=0; i<list.size(); i++)
{
LevelItem &li = list[i];
li.id = esm.getHNString(recName);

@ -67,7 +67,7 @@ struct Script
// The tmp buffer is a null-byte separated string list, we
// just have to pick out one string at a time.
char* str = tmp;
for(int i=0; i< varNames.size(); i++)
for(size_t i=0; i< varNames.size(); i++)
{
varNames[i] = std::string(str);
str += varNames[i].size()+1;

@ -66,8 +66,9 @@ namespace ESMS
};
/// A storage struct for one single cell reference.
struct CellStore
class CellStore
{
public:
CellStore() : cell (0) {}
const ESM::Cell *cell;

@ -49,6 +49,8 @@ bool parseOptions (int argc, char**argv, OMW::Engine& engine)
engine.setDataDir (variables["data"].as<std::string>());
engine.setCell (variables["start"].as<std::string>());
engine.addMaster (variables["master"].as<std::string>());
return true;
}
int main(int argc, char**argv)

@ -45,10 +45,14 @@ namespace MWInput
// Write screenshot to file.
void screenshot()
{
// TODO: add persistent counting so we don't overwrite shots
// from previous runs.
char buf[50];
snprintf(buf,50, "screenshot%d.png", shotCount++);
// Find the first unused filename.
//
char buf[50];
do
{
snprintf(buf, 50, "screenshot%03d.png", shotCount++);
} while (boost::filesystem::exists(buf));
ogre.screenshot(buf);
}
@ -108,8 +112,6 @@ namespace MWInput
float speed = 300 * evt.timeSinceLastFrame;
float moveX = 0, moveY = 0, moveZ = 0;
using namespace std;
if(poller.isDown(A_MoveLeft)) moveX -= speed;
if(poller.isDown(A_MoveRight)) moveX += speed;
if(poller.isDown(A_MoveForward)) moveZ -= speed;
@ -120,10 +122,8 @@ namespace MWInput
if(poller.isDown(A_MoveUp)) moveY += speed;
if(poller.isDown(A_MoveDown)) moveY -= speed;
if(moveX == 0 && moveY == 0 && moveZ == 0)
return true;
player.moveRel(moveX, moveY, moveZ);
if(moveX != 0 || moveY != 0 || moveZ != 0)
player.moveRel(moveX, moveY, moveZ);
return true;
}

@ -29,13 +29,14 @@ void insertObj(CellRender& cellRender, const ESMS::LiveCellRef<ESM::Light>& live
cellRender.insertBegin (liveRef.ref);
cellRender.insertMesh ("meshes\\" + model);
int color = liveRef.base->data.color;
cellRender.insertLight(color & 255,
(color >> 8) & 255,
(color >> 16) & 255,
liveRef.base->data.radius);
// Extract the color and convert to floating point
const int color = liveRef.base->data.color;
const float r = ((color >> 0) & 0xFF) / 255.0f;
const float g = ((color >> 8) & 0xFF) / 255.0f;
const float b = ((color >> 16) & 0xFF) / 255.0f;
const float radius = float(liveRef.base->data.radius);
cellRender.insertLight(r, g, b, radius);
cellRender.insertEnd();
}

@ -156,7 +156,7 @@ void InteriorCellRender::setAmbientMode()
case 1:
scene.getMgr()->setAmbientLight(0.7*ambientColor + 0.3*ColourValue(1,1,1));
scene.getMgr()->setAmbientLight(0.7f*ambientColor + 0.3f*ColourValue(1,1,1));
break;
case 2:

@ -54,7 +54,8 @@ public:
*/
void bind(int index, Action action, const std::string &name="")
{
assert(index >= 0 && index < bindings.size());
assert(index >= 0 && index < (int)bindings.size());
FuncBinding &fb = bindings[index];
fb.action = action;
fb.name = name;
@ -65,7 +66,8 @@ public:
*/
void unbind(int index)
{
assert(index >= 0 && index < bindings.size());
assert(index >= 0 && index < (int)bindings.size());
bindings[index] = FuncBinding();
}
@ -75,7 +77,8 @@ public:
*/
void call(int index, const void *p=NULL) const
{
assert(index >= 0 && index < bindings.size());
assert(index >= 0 && index < (int)bindings.size());
const FuncBinding &fb = bindings[index];
if(fb.action) fb.action(index, p);
}
@ -83,14 +86,16 @@ public:
/// Check if a given index is bound to anything
bool isBound(int index) const
{
assert(index >= 0 && index < bindings.size());
assert(index >= 0 && index < (int)bindings.size());
return !bindings[index].action.empty();
}
/// Return the name associated with an action (empty if not bound)
const std::string &getName(int index) const
{
assert(index >= 0 && index < bindings.size());
assert(index >= 0 && index < (int)bindings.size());
return bindings[index].name;
}
};

@ -68,7 +68,7 @@ namespace Input
assert(camera);
// Mouse sensitivity. Should be a config option later.
const float MS = 0.2;
const float MS = 0.2f;
float x = arg.state.X.rel * MS;
float y = arg.state.Y.rel * MS;

Loading…
Cancel
Save