123
This commit is contained in:
134
CrySystem/ScriptBinding.cpp
Normal file
134
CrySystem/ScriptBinding.cpp
Normal file
@@ -0,0 +1,134 @@
|
||||
#include "stdafx.h"
|
||||
#include "System.h"
|
||||
#include "ScriptObjectSystem.h"
|
||||
#include "ScriptObjectParticle.h"
|
||||
#include "ScriptObjectAnimation.h"
|
||||
#include "ScriptObjectSound.h"
|
||||
#include "ScriptObjectMovie.h"
|
||||
#include "ScriptObjectScript.h"
|
||||
#include "ScriptObjectEntity.h"
|
||||
#include "HTTPDownloader.h"
|
||||
#include <IEntitySystem.h>
|
||||
|
||||
|
||||
struct CScriptBindings
|
||||
{
|
||||
|
||||
CScriptBindings();
|
||||
|
||||
~CScriptBindings(){}
|
||||
bool Init(CSystem *pSystem);
|
||||
bool ShutDown();
|
||||
private:
|
||||
CScriptObjectSystem *m_pScriptObjectSystem;
|
||||
CScriptObjectParticle *m_pScriptObjectParticle;
|
||||
CScriptObjectAnimation *m_pScriptObjectAnimation;
|
||||
CScriptObjectSound *m_pScriptObjectSound;
|
||||
CScriptObjectMovie *m_pScriptObjectMovie;
|
||||
CScriptObjectScript *m_pScriptObjectScript;
|
||||
};
|
||||
|
||||
CScriptBindings::CScriptBindings()
|
||||
{
|
||||
m_pScriptObjectSystem=NULL;
|
||||
m_pScriptObjectParticle=NULL;
|
||||
m_pScriptObjectAnimation=NULL;
|
||||
m_pScriptObjectSound=NULL;
|
||||
m_pScriptObjectMovie=NULL;
|
||||
m_pScriptObjectScript=NULL;
|
||||
}
|
||||
|
||||
bool CScriptBindings::Init(CSystem *pSystem)
|
||||
{
|
||||
IScriptSystem *pSS=pSystem->GetIScriptSystem();
|
||||
//SYSTEM
|
||||
CScriptObjectSystem::InitializeTemplate(pSS);
|
||||
m_pScriptObjectSystem=new CScriptObjectSystem;
|
||||
m_pScriptObjectSystem->Init(pSS,pSystem);
|
||||
//PARTICLE
|
||||
CScriptObjectParticle::InitializeTemplate(pSS);
|
||||
m_pScriptObjectParticle=new CScriptObjectParticle;
|
||||
m_pScriptObjectParticle->Init(pSS,pSystem);
|
||||
//ANIMATION
|
||||
CScriptObjectAnimation::InitializeTemplate(pSS);
|
||||
m_pScriptObjectAnimation=new CScriptObjectAnimation;
|
||||
m_pScriptObjectAnimation->Init(pSS,pSystem);
|
||||
//SOUND
|
||||
CScriptObjectSound::InitializeTemplate(pSS);
|
||||
m_pScriptObjectSound=new CScriptObjectSound;
|
||||
m_pScriptObjectSound->Init(pSS,pSystem);
|
||||
//MOVIE
|
||||
CScriptObjectMovie::InitializeTemplate(pSS);
|
||||
m_pScriptObjectMovie=new CScriptObjectMovie;
|
||||
m_pScriptObjectMovie->Init(pSS,pSystem);
|
||||
//SCRIPT
|
||||
CScriptObjectScript::InitializeTemplate(pSS);
|
||||
m_pScriptObjectScript=new CScriptObjectScript;
|
||||
m_pScriptObjectScript->Init(pSS);
|
||||
//ENTITY
|
||||
CScriptObjectEntity::InitializeTemplate(pSS);
|
||||
//DOWNLOAD
|
||||
#if !defined(LINUX)
|
||||
CHTTPDownloader::InitializeTemplate(pSS);
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CScriptBindings::ShutDown()
|
||||
{
|
||||
CScriptObjectSystem::ReleaseTemplate();
|
||||
SAFE_DELETE(m_pScriptObjectSystem);
|
||||
CScriptObjectParticle::ReleaseTemplate();
|
||||
SAFE_DELETE(m_pScriptObjectParticle);
|
||||
CScriptObjectAnimation::ReleaseTemplate();
|
||||
SAFE_DELETE(m_pScriptObjectAnimation);
|
||||
CScriptObjectSound::ReleaseTemplate();
|
||||
SAFE_DELETE(m_pScriptObjectSound);
|
||||
CScriptObjectMovie::ReleaseTemplate();
|
||||
SAFE_DELETE(m_pScriptObjectMovie);
|
||||
CScriptObjectScript::ReleaseTemplate();
|
||||
SAFE_DELETE(m_pScriptObjectScript);
|
||||
CScriptObjectEntity::ReleaseTemplate();
|
||||
#if !defined(LINUX)
|
||||
CHTTPDownloader::ReleaseTemplate();
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
bool CSystem::InitScriptBindings()
|
||||
{
|
||||
m_pScriptBindings=new CScriptBindings;
|
||||
return m_pScriptBindings->Init(this);
|
||||
}
|
||||
|
||||
bool CSystem::ShutDownScriptBindings()
|
||||
{
|
||||
if(m_pScriptBindings)
|
||||
{
|
||||
bool bres=m_pScriptBindings->ShutDown();
|
||||
delete m_pScriptBindings;
|
||||
return bres;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void CSystem::CreateEntityScriptBinding(IEntity *ent)
|
||||
{
|
||||
CScriptObjectEntity *pSEntity = new CScriptObjectEntity();
|
||||
pSEntity->Create(m_pScriptSystem, this);
|
||||
assert(pSEntity->GetScriptObject());
|
||||
if (ent->GetContainer()){
|
||||
IScriptObject *pObj=ent->GetContainer()->GetScriptObject();
|
||||
if(pObj)
|
||||
pSEntity->SetContainer(pObj);
|
||||
}
|
||||
assert(pSEntity->GetScriptObject());
|
||||
pSEntity->SetEntity(ent);
|
||||
assert(pSEntity->GetScriptObject());
|
||||
ent->SetScriptObject(pSEntity->GetScriptObject());
|
||||
assert(pSEntity->GetScriptObject());
|
||||
assert(ent->GetScriptObject());
|
||||
}
|
||||
Reference in New Issue
Block a user