added local variables to ref data

pull/7/head
Marc Zinnschlag 15 years ago
parent 5c91ba74b8
commit a06b84ac86

@ -37,8 +37,13 @@ set(GAMEINPUT_HEADER
apps/openmw/mwinput/inputmanager.hpp)
source_group(apps\\openmw\\mwinput FILES ${GAMEINPUT} ${GAMEINPUT_HEADER})
set(APPS ${GAME} ${GAMEREND} ${GAMEINPUT})
set(APPS_HEADER ${GAME_HEADER} ${GAMEREND_HEADER} ${GAMEINPUT_HEADER})
# set(GAMESCRIPT)
set(GAMESCRIPT_HEADER
apps/openmw/mwscript/locals.hpp)
source_group(apps\\openmw\\mwscript FILES ${GAMESCRIPT} ${GAMESCRIPT_HEADER})
set(APPS ${GAME} ${GAMEREND} ${GAMEINPUT} ${GAMESCRIPT})
set(APPS_HEADER ${GAME_HEADER} ${GAMEREND_HEADER} ${GAMEINPUT_HEADER} ${GAMESCRIPT_HEADER})
# source directory: components

@ -13,7 +13,7 @@ void insertObj(CellRenderImp& cellRender, T& liveRef)
{
cellRender.insertBegin (liveRef.ref);
cellRender.insertMesh ("meshes\\" + model);
liveRef.mData.mHandle = cellRender.insertEnd();
liveRef.mData.setHandle (cellRender.insertEnd());
}
}
@ -36,7 +36,7 @@ void insertObj(CellRenderImp& cellRender, ESMS::LiveCellRef<ESM::Light, OMW::Ref
const float radius = float(liveRef.base->data.radius);
cellRender.insertLight(r, g, b, radius);
liveRef.mData.mHandle = cellRender.insertEnd();
liveRef.mData.setHandle (cellRender.insertEnd());
}
}

@ -0,0 +1,30 @@
#ifndef GAME_SCRIPT_LOCALS_H
#define GAME_SCRIPT_LOCALS_H
#include <vector>
#include <components/esm/loadscpt.hpp>
#include <components/interpreter/types.hpp>
namespace MWScript
{
struct Locals
{
std::vector<Interpreter::Type_Short> mShorts;
std::vector<Interpreter::Type_Integer> mLongs;
std::vector<Interpreter::Type_Float> mFloats;
void configure (const ESM::Script& script)
{
mShorts.clear();
mShorts.resize (script.data.numShorts, 0);
mLongs.clear();
mLongs.resize (script.data.numLongs, 0);
mFloats.clear();
mFloats.resize (script.data.numFloats, 0);
}
};
}
#endif

@ -3,14 +3,45 @@
#include <string>
#include "mwscript/locals.hpp"
namespace ESM
{
class Script;
}
namespace OMW
{
struct RefData
class RefData
{
std::string mHandle;
std::string mHandle;
MWScript::Locals mLocals; // if we find the overhead of heaving a locals
// object in the refdata of refs without a script,
// we can make this a pointer later.
};
public:
std::string getHandle()
{
return mHandle;
}
void setLocals (const ESM::Script& script)
{
mLocals.configure (script);
}
void setHandle (const std::string& handle)
{
mHandle = handle;
}
MWScript::Locals& getLocals()
{
return mLocals;
}
};
}
#endif

Loading…
Cancel
Save