mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-30 12:15:31 +00:00
Merge remote branch 'upstream/master'
This commit is contained in:
commit
d67f0c74b0
151 changed files with 221 additions and 204 deletions
4
.gitmodules
vendored
4
.gitmodules
vendored
|
@ -1,3 +1,3 @@
|
|||
[submodule "mangle"]
|
||||
path = mangle
|
||||
[submodule "libs/mangle"]
|
||||
path = libs/mangle
|
||||
url = git://github.com/korslund/mangle.git
|
||||
|
|
134
CMakeLists.txt
134
CMakeLists.txt
|
@ -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)
|
||||
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)
|
||||
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(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)
|
||||
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(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(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 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 components/nifogre/ogre_nif_loader.cpp)
|
||||
set(NIFOGRE_HEADER components/nifogre/ogre_nif_loader.hpp)
|
||||
source_group(nifogre FILES ${NIFOGRE} ${NIFOGRE_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})
|
||||
|
||||
file(GLOB ESM_HEADER components/esm/*.hpp)
|
||||
source_group(esm_header FILES ${ESM_HEADER})
|
||||
|
||||
set(OGRE components/engine/ogre/renderer.cpp)
|
||||
set(OGRE_HEADER components/engine/ogre/renderer.hpp)
|
||||
source_group(ogre FILES ${OGRE} ${OGRE_HEADER})
|
||||
|
||||
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(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(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(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")
|
||||
|
@ -104,19 +120,17 @@ if (APPLE)
|
|||
)
|
||||
endif (APPLE)
|
||||
|
||||
# Compiler settings
|
||||
if (CMAKE_COMPILER_IS_GNUCC)
|
||||
add_definitions (-Wall)
|
||||
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 * 1000);
|
||||
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
|
||||
{
|
|
@ -15,7 +15,7 @@ namespace MWRender
|
|||
|
||||
public:
|
||||
PlayerPos(Ogre::Camera *cam) :
|
||||
camera(cam), x(0), y(0), z(0) {}
|
||||
x(0), y(0), z(0), camera(cam) {}
|
||||
|
||||
// Set the player position. Uses Morrowind coordinates.
|
||||
void setPos(float _x, float _y, float _z)
|
|
@ -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>
|
||||
|
@ -129,7 +129,7 @@ void BSAFile::readHeader()
|
|||
|
||||
// Set up the the FileStruct table
|
||||
files.resize(filenum);
|
||||
for(int i=0;i<filenum;i++)
|
||||
for(size_t i=0;i<filenum;i++)
|
||||
{
|
||||
FileStruct &fs = files[i];
|
||||
fs.fileSize = offsets[i*2];
|
||||
|
@ -156,7 +156,7 @@ int BSAFile::getIndex(const char *str)
|
|||
else
|
||||
{
|
||||
int res = it->second;
|
||||
assert(res >= 0 && res < files.size());
|
||||
assert(res >= 0 && res < static_cast<int> (files.size()));
|
||||
return res;
|
||||
}
|
||||
}
|
|
@ -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>
|
||||
|
@ -17,7 +17,7 @@ namespace Input
|
|||
InputListener(Render::OgreRenderer &rend,
|
||||
Input::OISManager &input,
|
||||
const Input::Dispatcher &_disp)
|
||||
: doExit(false), disp(_disp)
|
||||
: disp(_disp), doExit(false)
|
||||
{
|
||||
// Set up component pointers
|
||||
mWindow = rend.getWindow();
|
|
@ -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
|
0
esm/.gitignore → components/esm/.gitignore
vendored
0
esm/.gitignore → components/esm/.gitignore
vendored
|
@ -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
|
||||
|
@ -394,7 +394,7 @@ public:
|
|||
void getHExact(void*p, int size)
|
||||
{
|
||||
getSubHeader();
|
||||
if(size != c.leftSub)
|
||||
if(size !=static_cast<int> (c.leftSub))
|
||||
fail("getHExact() size mismatch");
|
||||
getExact(p,size);
|
||||
}
|
||||
|
@ -480,7 +480,7 @@ public:
|
|||
void skipHSubSize(int size)
|
||||
{
|
||||
skipHSub();
|
||||
if(c.leftSub != size)
|
||||
if(static_cast<int> (c.leftSub) != size)
|
||||
fail("skipHSubSize() mismatch");
|
||||
}
|
||||
|
||||
|
@ -508,7 +508,7 @@ public:
|
|||
void getSubHeaderIs(int size)
|
||||
{
|
||||
getSubHeader();
|
||||
if(size != c.leftSub)
|
||||
if(size != static_cast<int> (c.leftSub))
|
||||
fail("getSubHeaderIs(): Sub header mismatch");
|
||||
}
|
||||
|
|
@ -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…
Reference in a new issue