Game Development Reference
In-Depth Information
Listing 12-16. AddGameObject and BuildScriptModule Functions
bool GPTScriptEngine::AddGameObject(int id, float x, float y, int color, const char* scriptCode)
{
// Build an AS module using the code
asIScriptModule* pScriptModule =
BuildScriptModule(id, scriptCode);
if (pScriptModule)
{
// Call 'PreInit' on the script's game object
asIScriptFunction* pPreInitFunction =
pScriptModule->GetFunctionByDecl(
"void PreInit(int id,float x,
float y, int color)");
m_pScriptContext->Prepare(pPreInitFunction);
m_pScriptContext->SetArgDWord(0, id);
m_pScriptContext->SetArgFloat(1, x);
m_pScriptContext->SetArgFloat(2, y);
m_pScriptContext->SetArgDWord(3, color);
int retCode = m_pScriptContext->Execute();
if(retCode != asEXECUTION_FINISHED)
{
// PreInit didn't finish executing.
return false;
}
// Add module to list
ScriptModule module;
module.id = id;
module.pModule = pScriptModule;
m_scriptModules.push_back(module);
return true;
}
else
{
// PreInit didn't compile. Do error handling.
}
}
asIScriptModule* GPTScriptEngine::BuildScriptModule
(int id, const char* scriptCode)
{
// Create a new script module
std::stringstream moduleStream;
moduleStream << id;
std::string modName = moduleStream.str();
Search WWH ::




Custom Search