directory structure reorganisation (still missing the mangle stuff)

pull/7/head
Marc Zinnschlag 15 years ago
parent 1d84b10b3e
commit e4f85cb3e6

@ -6,62 +6,78 @@ cmake_minimum_required(VERSION 2.6)
# Add path for CMake scripts
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/)
# Local files
# source directory: apps
set(BSA bsa/bsa_archive.cpp bsa/bsa_file.cpp)
set(BSA_HEADER bsa/bsa_archive.hpp bsa/bsa_file.hpp)
set(GAME apps/openmw/main.cpp apps/openmw/engine.cpp)
set(GAME_HEADER apps/openmw/mwinput/inputmanager.hpp apps/openmw/engine.hpp)
source_group(game FILES ${GAME} ${GAME_HEADER})
set(GAMEREND apps/openmw/mwrender/mwscene.cpp apps/openmw/mwrender/cell.cpp
apps/openmw/mwrender/interior.cpp)
set(GAMEREND_HEADER apps/openmw/mwrender/cell.hpp apps/openmw/mwrender/mwscene.hpp
apps/openmw/mwrender/interior.hpp apps/openmw/mwrender/playerpos.hpp)
source_group(game_renderer FILES ${GAMEREND} ${GAMEREND_HEADER})
# set(GAMEINPUT)
set(GAMEINPUT_HEADER apps/openmw/mwinput/inputmanager.hpp)
source_group(game_input FILES ${GAMEINPUT} ${GAMEINPUT_HEADER})
set(APPS ${GAME} ${GAMEREND} ${GAMEINPUT})
set(APPS_HEADER ${GAME_HEADER} ${GAMEREND_HEADER} ${GAMEINPUT_HEADER})
# source directory: components
set(BSA components/bsa/bsa_archive.cpp components/bsa/bsa_file.cpp)
set(BSA_HEADER components/bsa/bsa_archive.hpp components/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)
set(NIF components/nif/nif_file.cpp)
set(NIF_HEADER components/nif/controlled.hpp components/nif/effect.hpp
components/nif/nif_types.hpp components/nif/record.hpp
components/nif/controller.hpp components/nif/extra.hpp components/nif/node.hpp
components/nif/record_ptr.hpp
components/nif/data.hpp components/nif/nif_file.hpp components/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)
set(NIFOGRE components/nifogre/ogre_nif_loader.cpp)
set(NIFOGRE_HEADER components/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(ESM_STORE components/esm_store/store.cpp components/esm_store/cell_store.cpp)
set(ESM_STORE_HEADER components/esm_store/cell_store.hpp
components/esm_store/reclists.hpp components/esm_store/store.hpp)
source_group(esm_store FILES ${ESM_STORE} ${ESM_STORE_HEADER})
set(MANGLE_VFS mangle/vfs/servers/ogre_vfs.cpp)
source_group(mangle_vfs FILES ${MANGLE_VFS})
file(GLOB ESM_HEADER components/esm/*.hpp)
source_group(esm_header FILES ${ESM_HEADER})
set(OGRE ogre/renderer.cpp)
set(OGRE_HEADER ogre/renderer.hpp)
set(OGRE components/engine/ogre/renderer.cpp)
set(OGRE_HEADER components/engine/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)
set(INPUT components/engine/input/oismanager.cpp)
set(INPUT_HEADER components/engine/input/oismanager.hpp components/engine/input/listener.hpp
components/engine/input/func_binder.hpp components/engine/input/dispatch_map.hpp
components/engine/input/dispatcher.hpp components/engine/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(MISC components/misc/stringops.cpp components/misc/fileops.cpp)
set(MISC_HEADER components/misc/fileops.hpp components/misc/slice_array.hpp
components/misc/stringops.hpp)
source_group(misc FILES ${MISC} ${MISC_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(COMPONENTS ${BSA} ${NIF} ${NIFOGRE} ${ESM_STORE} ${OGRE} ${INPUT} ${MISC})
set(COMPONENTS_HEADER ${BSA_HEADER} ${NIF_HEADER} ${NIFOGRE_HEADER} ${ESM_STORE_HEADER}
${ESM_HEADER} ${OGRE_HEADER} ${INPUT_HEADER} ${MISC_HEADER})
# source directory: libs
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
esm/esm_reader.hpp esm/loadclas.hpp esm/loadglob.hpp esm/loadmgef.hpp esm/loadsndg.hpp
esm/loadacti.hpp esm/loadclot.hpp esm/loadgmst.hpp esm/loadmisc.hpp esm/loadsoun.hpp
esm/loadalch.hpp esm/loadcont.hpp esm/loadinfo.hpp esm/loadnpcc.hpp esm/loadspel.hpp
esm/loadappa.hpp esm/loadcrea.hpp esm/loadingr.hpp esm/loadnpc.hpp esm/loadsscr.hpp
esm/loadarmo.hpp esm/loadcrec.hpp esm/loadland.hpp esm/loadpgrd.hpp esm/loadstat.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})
set(MANGLE_VFS libs/mangle/vfs/servers/ogre_vfs.cpp)
source_group(mangle_vfs FILES ${MANGLE_VFS})
set(OPENMW_LIBS ${MANGLE_VFS})
set(OPENMW_LIBS_HEADER)
# Platform specific
if (WIN32)
set(PLATFORM_INCLUDE_DIR "platform")
@ -111,16 +127,9 @@ endif (CMAKE_COMPILER_IS_GNUCC)
# Main executable
add_executable(openmw
MACOSX_BUNDLE
${BSA} ${BSA_HEADER}
${TOOLS} ${TOOLS_HEADER}
${OGRE} ${OGRE_HEADER}
${INPUT} ${INPUT_HEADER}
${NIF} ${NIF_HEADER}
${NIFOGRE} ${NIFOGRE_HEADER}
${MANGLE_VFS}
${GAME}
${ESM_STORE} ${ESM_STORE_HEADER}
${GAMEREND} ${GAMEREND_HEADER}
${COMPONENTS} ${COMPONENTS_HEADER}
${OPENMW_LIBS} ${OPENMW_LIBS_HEADER}
${APPS} ${APPS_HEADER}
${ESM_HEADER}
${APPLE_BUNDLE_RESOURCES}
)

@ -4,14 +4,14 @@
#include <iostream>
#include "esm_store/cell_store.hpp"
#include "bsa/bsa_archive.hpp"
#include "ogre/renderer.hpp"
#include "tools/fileops.hpp"
#include "components/esm_store/cell_store.hpp"
#include "components/bsa/bsa_archive.hpp"
#include "components/engine/ogre/renderer.hpp"
#include "components/misc/fileops.hpp"
#include "mwrender/interior.hpp"
#include "apps/openmw/mwrender/interior.hpp"
#include "mwinput/inputmanager.hpp"
#include "mwrender/playerpos.hpp"
#include "apps/openmw/mwrender/playerpos.hpp"
OMW::Engine::Engine() {}
@ -20,29 +20,29 @@ OMW::Engine::Engine() {}
void OMW::Engine::prepareMaster()
{
std::string::size_type sep = mMaster.find_last_of (".");
if (sep==std::string::npos)
{
mMaster += ".esm";
}
}
// Load all BSA files in data directory.
void OMW::Engine::loadBSA()
{
boost::filesystem::directory_iterator end;
for (boost::filesystem::directory_iterator iter (mDataDir); iter!=end; ++iter)
{
if (boost::filesystem::extension (iter->path())==".bsa")
{
std::cout << "Adding " << iter->path().string() << std::endl;
addBSA(iter->path().file_string());
addBSA(iter->path().file_string());
}
}
}
// add resources directory
// \note This function works recursively.
@ -50,8 +50,8 @@ void OMW::Engine::addResourcesDirectory (const boost::filesystem::path& path)
{
mOgre.getRoot()->addResourceLocation (path.file_string(), "FileSystem",
Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, true);
}
}
// Set data dir
void OMW::Engine::setDataDir (const boost::filesystem::path& dataDir)
@ -83,9 +83,9 @@ void OMW::Engine::go()
assert (!mDataDir.empty());
assert (!mCellName.empty());
assert (!mMaster.empty());
std::cout << "Hello, fellow traveler!\n";
std::cout << "Your data directory for today is: " << mDataDir << "\n";
std::cout << "Initializing OGRE\n";
@ -93,16 +93,16 @@ void OMW::Engine::go()
const char* plugCfg = "plugins.cfg";
mOgre.configure(!isFile("ogre.cfg"), plugCfg, false);
addResourcesDirectory (mDataDir / "Meshes");
addResourcesDirectory (mDataDir / "Textures");
prepareMaster();
loadBSA();
boost::filesystem::path masterPath (mDataDir);
masterPath /= mMaster;
std::cout << "Loading ESM " << masterPath.string() << "\n";
ESM::ESMReader esm;
ESMS::ESMStore store;
@ -141,6 +141,6 @@ void OMW::Engine::go()
// Start the main rendering loop
mOgre.start();
std::cout << "\nThat's all for now!\n";
std::cout << "\nThat's all for now!\n";
}

@ -5,7 +5,7 @@
#include <boost/filesystem.hpp>
#include "mwrender/mwscene.hpp"
#include "apps/openmw/mwrender/mwscene.hpp"
namespace OMW
{
@ -17,21 +17,21 @@ namespace OMW
Render::OgreRenderer mOgre;
std::string mCellName;
std::string mMaster;
// not implemented
Engine (const Engine&);
Engine& operator= (const Engine&);
/// adjust name and load bsa
void prepareMaster();
/// add resources directory
/// \note This function works recursively.
void addResourcesDirectory (const boost::filesystem::path& path);
/// Load all BSA files in data directory.
void loadBSA();
public:
Engine();
@ -41,7 +41,7 @@ namespace OMW
/// Set start cell name (only interiors for now)
void setCell (const std::string& cellName);
/// Set master file (esm)
/// - If the given name does not have an extension, ".esm" is added automatically
/// - Currently OpenMW only supports one master at the same time.

@ -1,12 +1,12 @@
#ifndef _MWINPUT_MWINPUTMANAGER_H
#define _MWINPUT_MWINPUTMANAGER_H
#include "input/listener.hpp"
#include "input/dispatcher.hpp"
#include "input/poller.hpp"
#include "components/engine/input/listener.hpp"
#include "components/engine/input/dispatcher.hpp"
#include "components/engine/input/poller.hpp"
#include "boost/bind.hpp"
#include "game/mwrender/playerpos.hpp"
#include "platform/strings.h"
#include "apps/openmw/mwrender/playerpos.hpp"
#include "libs/platform/strings.h"
namespace MWInput
{
@ -47,7 +47,7 @@ namespace MWInput
{
// Find the first unused filename.
//
char buf[50];
char buf[50];
do
{
snprintf(buf, 50, "screenshot%03d.png", shotCount++);

@ -2,11 +2,11 @@
#include <cassert>
#include "esm_store/cell_store.hpp"
#include "components/esm_store/cell_store.hpp"
using namespace MWRender;
template<typename T>
template<typename T>
void insertObj(CellRender& cellRender, const T& liveRef)
{
assert (liveRef.base != NULL);
@ -18,8 +18,8 @@ void insertObj(CellRender& cellRender, const T& liveRef)
cellRender.insertEnd();
}
}
template<>
template<>
void insertObj(CellRender& cellRender, const ESMS::LiveCellRef<ESM::Light>& liveRef)
{
assert (liveRef.base != NULL);
@ -27,9 +27,9 @@ void insertObj(CellRender& cellRender, const ESMS::LiveCellRef<ESM::Light>& live
if(!model.empty())
{
cellRender.insertBegin (liveRef.ref);
cellRender.insertMesh ("meshes\\" + model);
// Extract the color and convert to floating point
const int color = liveRef.base->data.color;
const float r = ((color >> 0) & 0xFF) / 255.0f;
@ -37,9 +37,9 @@ void insertObj(CellRender& cellRender, const ESMS::LiveCellRef<ESM::Light>& live
const float b = ((color >> 16) & 0xFF) / 255.0f;
const float radius = float(liveRef.base->data.radius);
cellRender.insertLight(r, g, b, radius);
cellRender.insertEnd();
}
}
}
template<typename T>
@ -49,8 +49,8 @@ void insertCellRefList (CellRender& cellRender, const T& cellRefList)
it != cellRefList.list.end(); it++)
{
insertObj (cellRender, *it);
}
}
}
}
void CellRender::insertCell(const ESMS::CellStore &cell)
{

@ -3,7 +3,7 @@
#include <OgreEntity.h>
#include <OgreLight.h>
#include "nifogre/ogre_nif_loader.hpp"
#include "components/nifogre/ogre_nif_loader.hpp"
#include "mwscene.hpp"
using namespace MWRender;
@ -30,7 +30,7 @@ bool InteriorCellRender::lightOutQuadInLin = false;
void InteriorCellRender::insertBegin (const ESM::CellRef &ref)
{
assert (!insert);
// Create and place scene node for this object
insert = base->createChildSceneNode();
@ -59,7 +59,7 @@ void InteriorCellRender::insertBegin (const ESM::CellRef &ref)
void InteriorCellRender::insertMesh(const std::string &mesh)
{
assert (insert);
NIFLoader::load(mesh);
MovableObject *ent = scene.getMgr()->createEntity(mesh);
insert->attachObject(ent);
@ -74,7 +74,7 @@ void InteriorCellRender::insertLight(float r, float g, float b, float radius)
light->setDiffuseColour (r, g, b);
float cval=0.0f, lval=0.0f, qval=0.0f;
if(lightConst)
cval = lightConstValue;
if(!lightOutQuadInLin)
@ -95,9 +95,9 @@ void InteriorCellRender::insertLight(float r, float g, float b, float radius)
// Do quadratic or linear, depending if we're in an exterior or interior
// cell, respectively. Ignore lightLinear and lightQuadratic.
}
light->setAttenuation(10*radius, cval, lval, qval);
insert->attachObject(light);
}
@ -108,19 +108,19 @@ std::string InteriorCellRender::insertEnd()
assert (insert);
std::string handle = insert->getName();
insert = 0;
return handle;
}
}
// configure lighting according to cell
void InteriorCellRender::configureAmbient()
{
ambientColor.setAsABGR (cell.cell->ambi.ambient);
setAmbientMode();
// Create a "sun" that shines light downwards. It doesn't look
// completely right, but leave it for now.
Ogre::Light *light = scene.getMgr()->createLight();
@ -130,7 +130,7 @@ void InteriorCellRender::configureAmbient()
light->setType(Ogre::Light::LT_DIRECTIONAL);
light->setDirection(0,-1,0);
}
// configure fog according to cell
void InteriorCellRender::configureFog()
{
@ -144,28 +144,28 @@ void InteriorCellRender::configureFog()
scene.getCamera()->setFarClipDistance (high + 10);
scene.getViewport()->setBackgroundColour (color);
}
void InteriorCellRender::setAmbientMode()
{
switch (ambientMode)
{
case 0:
scene.getMgr()->setAmbientLight(ambientColor);
break;
case 1:
scene.getMgr()->setAmbientLight(0.7f*ambientColor + 0.3f*ColourValue(1,1,1));
break;
case 2:
scene.getMgr()->setAmbientLight(ColourValue(1,1,1));
break;
}
}
void InteriorCellRender::show()
{
// If already loaded, just make the cell visible.
@ -208,14 +208,14 @@ void InteriorCellRender::toggleLight()
ambientMode = 0;
else
++ambientMode;
switch (ambientMode)
{
case 0: std::cout << "Setting lights to normal\n"; break;
case 1: std::cout << "Turning the lights up\n"; break;
case 2: std::cout << "Turning the lights to full\n"; break;
}
setAmbientMode();
}

@ -2,7 +2,7 @@
#define _GAME_RENDER_INTERIOR_H
#include "cell.hpp"
#include "esm_store/cell_store.hpp"
#include "components/esm_store/cell_store.hpp"
#include "OgreColourValue.h"
@ -14,7 +14,7 @@ namespace Ogre
namespace MWRender
{
class MWScene;
/**
This class is responsible for inserting meshes and other
rendering objects from the given cell into the given rendering
@ -22,10 +22,10 @@ namespace MWRender
TODO FIXME: Doesn't do full cleanup yet.
*/
class InteriorCellRender : private CellRender
{
static bool lightConst;
static float lightConstValue;
@ -40,19 +40,19 @@ namespace MWRender
static float lightQuadraticRadiusMult;
static bool lightOutQuadInLin;
const ESMS::CellStore &cell;
MWScene &scene;
/// The scene node that contains all objects belonging to this
/// cell.
Ogre::SceneNode *base;
Ogre::SceneNode *insert;
// 0 normal, 1 more bright, 2 max
int ambientMode;
Ogre::ColourValue ambientColor;
/// start inserting a new reference.
@ -60,28 +60,28 @@ namespace MWRender
/// insert a mesh related to the most recent insertBegin call.
virtual void insertMesh(const std::string &mesh);
/// insert a light related to the most recent insertBegin call.
virtual void insertLight(float r, float g, float b, float radius);
/// finish inserting a new reference and return a handle to it.
virtual std::string insertEnd();
/// configure lighting according to cell
void configureAmbient();
void configureAmbient();
/// configure fog according to cell
void configureFog();
void setAmbientMode();
public:
InteriorCellRender(const ESMS::CellStore &_cell, MWScene &_scene)
: cell(_cell), scene(_scene), base(NULL), insert(NULL), ambientMode (0) {}
virtual ~InteriorCellRender() { destroy(); }
/// Make the cell visible. Load the cell if necessary.
void show();
@ -90,8 +90,8 @@ namespace MWRender
void hide();
/// Destroy all rendering objects connected with this cell.
void destroy();
void destroy();
/// Switch through lighting modes.
void toggleLight();
};

@ -1,7 +1,7 @@
#ifndef _GAME_RENDER_MWSCENE_H
#define _GAME_RENDER_MWSCENE_H
#include "ogre/renderer.hpp"
#include "components/engine/ogre/renderer.hpp"
namespace Ogre
{

@ -27,7 +27,7 @@
#include <OgreArchiveFactory.h>
#include <OgreArchiveManager.h>
#include "bsa_file.hpp"
#include <mangle/stream/clients/ogre_datastream.hpp>
#include <libs/mangle/stream/clients/ogre_datastream.hpp>
using namespace Ogre;
using namespace Mangle::Stream;
@ -137,7 +137,7 @@ public:
return name;
}
Archive *createInstance( const String& name )
Archive *createInstance( const String& name )
{
return new BSAArchive(name);
}

@ -23,9 +23,9 @@
#include "bsa_file.hpp"
#include <mangle/stream/servers/file_stream.hpp>
#include <mangle/stream/filters/slice_stream.hpp>
#include <mangle/tools/str_exception.hpp>
#include <libs/mangle/stream/servers/file_stream.hpp>
#include <libs/mangle/stream/filters/slice_stream.hpp>
#include <libs/mangle/tools/str_exception.hpp>
#include <stdlib.h>
#include <assert.h>

@ -24,7 +24,7 @@
#ifndef _BSA_FILE_H_
#define _BSA_FILE_H_
#include <mangle/stream/stream.hpp>
#include <libs/mangle/stream/stream.hpp>
#include <stdint.h>
#include <strings.h>

@ -2,7 +2,7 @@
#define _INPUT_LISTENER_H
#include "oismanager.hpp"
#include "ogre/renderer.hpp"
#include "components/engine/ogre/renderer.hpp"
#include "dispatcher.hpp"
#include <OgreFrameListener.h>

@ -1,7 +1,7 @@
#ifndef _INPUT_OISMANAGER_H
#define _INPUT_OISMANAGER_H
#include "ogre/renderer.hpp"
#include "components/engine/ogre/renderer.hpp"
#include <OIS/OIS.h>
namespace Input

@ -9,10 +9,10 @@
#include <sstream>
#include <iomanip>
#include <mangle/stream/stream.hpp>
#include <mangle/stream/servers/file_stream.hpp>
#include <mangle/tools/str_exception.hpp>
#include "tools/stringops.hpp"
#include <libs/mangle/stream/stream.hpp>
#include <libs/mangle/stream/servers/file_stream.hpp>
#include <libs/mangle/tools/str_exception.hpp>
#include "components/misc/stringops.hpp"
#ifdef __APPLE__
// need our own implementation of strnlen

@ -1,6 +1,6 @@
#include "cell_store.hpp"
#include <iostream>
#include "mangle/tools/str_exception.hpp"
#include "libs/mangle/tools/str_exception.hpp"
using namespace ESMS;
using namespace std;
@ -24,7 +24,7 @@ void CellStore::loadExt(int X, int Y, const ESMStore &store, ESMReader &esm)
void CellStore::loadRefs(const ESMStore &store, ESMReader &esm)
{
assert (cell);
// Reopen the ESM reader and seek to the right position.
cell->restore(esm);

@ -11,9 +11,9 @@
*/
#include "store.hpp"
#include "esm/records.hpp"
#include "esm/loadcell.hpp"
#include <mangle/tools/str_exception.hpp>
#include "components/esm/records.hpp"
#include "components/esm/loadcell.hpp"
#include <libs/mangle/tools/str_exception.hpp>
#include <list>
namespace ESMS
@ -70,9 +70,9 @@ namespace ESMS
{
public:
CellStore() : cell (0) {}
const ESM::Cell *cell;
// Lists for each individual object type
CellRefList<Activator> activators;
CellRefList<Potion> potions;

@ -1,7 +1,7 @@
#ifndef _GAME_ESM_RECLISTS_H
#define _GAME_ESM_RECLISTS_H
#include "esm/records.hpp"
#include "components/esm/records.hpp"
#include <map>
#include <string>
#include <assert.h>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save