Bound TrackObject type to scripts
This commit is contained in:
parent
113c87dccf
commit
e567adb0ca
@ -6,6 +6,10 @@ void onTrigger()
|
||||
|
||||
*/
|
||||
displayMessage("Haybail deactivated");
|
||||
disableAnimation("hayBail.b3d");
|
||||
//disableAnimation("hayBail.b3d");
|
||||
//track_obj_manager.disable("hayBail.b3d","mesh");
|
||||
//track_obj_manager.disable("hayBail.b3d");
|
||||
TrackObject @t_obj = getTrackObject("hayBail.b3d");
|
||||
|
||||
squashKart(0,35.0); //id of kart,time to squash
|
||||
}
|
||||
|
@ -23,7 +23,7 @@
|
||||
#include "states_screens/dialogs/tutorial_message_dialog.hpp"
|
||||
#include "tracks/track_object_manager.hpp"
|
||||
#include "tracks/track.hpp"
|
||||
|
||||
#include <iostream> //debug
|
||||
namespace Scripting
|
||||
{
|
||||
|
||||
@ -36,6 +36,24 @@ namespace Scripting
|
||||
func = engine->GetModule(0)->GetFunctionByDecl("void onTrigger()");
|
||||
return func;
|
||||
}
|
||||
/*
|
||||
void disableAnimation(std::string *name, void *memory)
|
||||
{
|
||||
std::string *str = name;
|
||||
std::string type = "mesh";
|
||||
World::getWorld()->getTrack()->getTrackObjectManager()->disable(*str, type);
|
||||
}*/
|
||||
void getTrackObject(asIScriptGeneric *gen)
|
||||
{
|
||||
std::string *str = (std::string*)gen->GetArgAddress(0);
|
||||
TrackObject* t_obj = World::getWorld()->getTrack()->getTrackObjectManager()->getTrackObject(*str);
|
||||
gen->SetReturnObject(t_obj);
|
||||
}
|
||||
/*TrackObject* getTrackObject(std::string *name)
|
||||
{
|
||||
TrackObject* t_obj = World::getWorld()->getTrack()->getTrackObjectManager()->getTrackObject(*name);
|
||||
return t_obj;
|
||||
}*/
|
||||
void registerScriptFunctions(asIScriptEngine *engine)
|
||||
{
|
||||
int r;
|
||||
@ -47,6 +65,21 @@ namespace Scripting
|
||||
r = engine->RegisterGlobalFunction("void disableTrigger(string &in)", asFUNCTION(disableTrigger), asCALL_GENERIC); assert(r >= 0);
|
||||
r = engine->RegisterGlobalFunction("void createTrigger(string &in,float x,float y,float z, float distance)",
|
||||
asFUNCTION(createTrigger), asCALL_GENERIC); assert(r >= 0);
|
||||
/*
|
||||
//Test singleton, and various calling conventions
|
||||
// Register the track object manager as a singleton. The script will access it through the global property
|
||||
// r = engine->RegisterObjectType("TrackObjectManager", 0, asOBJ_REF | asOBJ_NOHANDLE); assert(r >= 0);
|
||||
r = engine->RegisterObjectType("TrackObjectManager", 0, asOBJ_REF | asOBJ_NOCOUNT); assert(r >= 0);
|
||||
|
||||
// Register the track object manager's methods
|
||||
TrackObjectManager* track_obj_manager = World::getWorld()->getTrack()->getTrackObjectManager();
|
||||
r = engine->RegisterGlobalProperty("TrackObjectManager track_obj_manager", track_obj_manager); assert(r >= 0);
|
||||
//r = engine->RegisterObjectMethod("TrackObjectManager", "void disable(string name , string type)", asMETHOD(TrackObjectManager, disable), asCALL_THISCALL); assert(r >= 0);
|
||||
//r = engine->RegisterObjectMethod("TrackObjectManager", "void disable(string &in name)", asFUNCTION(disableAnimation), asCALL_GENERIC); assert(r >= 0);
|
||||
r = engine->RegisterObjectMethod("TrackObjectManager", "void disable(string &in)", asFUNCTION(disableAnimation), asCALL_CDECL_OBJLAST); assert(r >= 0);
|
||||
*/
|
||||
r = engine->RegisterObjectType("TrackObject", 0, asOBJ_REF | asOBJ_NOCOUNT); assert(r >= 0);
|
||||
r = engine->RegisterGlobalFunction("TrackObject @getTrackObject(string &in)", asFUNCTION(getTrackObject), asCALL_GENERIC); assert(r >= 0);
|
||||
|
||||
}
|
||||
|
||||
|
@ -87,7 +87,8 @@ void TrackObjectManager::reset()
|
||||
} // reset
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void TrackObjectManager::disable(std::string name , std::string type){
|
||||
void TrackObjectManager::disable(std::string name , std::string type)
|
||||
{
|
||||
TrackObject* curr;
|
||||
for_in (curr,m_all_objects){
|
||||
if (type != curr->getType())continue;
|
||||
@ -103,7 +104,8 @@ void TrackObjectManager::disable(std::string name , std::string type){
|
||||
}
|
||||
}
|
||||
}
|
||||
void TrackObjectManager::enable(std::string name , std::string type){
|
||||
void TrackObjectManager::enable(std::string name , std::string type)
|
||||
{
|
||||
TrackObject* curr;
|
||||
for_in (curr,m_all_objects){
|
||||
if (type != curr->getType())continue;
|
||||
@ -121,7 +123,8 @@ void TrackObjectManager::enable(std::string name , std::string type){
|
||||
}
|
||||
}
|
||||
}
|
||||
bool TrackObjectManager::getStatus(std::string name){
|
||||
bool TrackObjectManager::getStatus(std::string name)
|
||||
{
|
||||
TrackObject* curr;
|
||||
for_in (curr,m_all_objects){
|
||||
if (curr->getName() == (name)||curr->getID()==(name))
|
||||
@ -134,6 +137,21 @@ bool TrackObjectManager::getStatus(std::string name){
|
||||
//object not found
|
||||
return false;
|
||||
}
|
||||
|
||||
TrackObject* TrackObjectManager::getTrackObject(std::string name)
|
||||
{
|
||||
TrackObject* curr;
|
||||
for_in(curr, m_all_objects){
|
||||
if (curr->getName() == (name) || curr->getID() == (name))
|
||||
{
|
||||
|
||||
return curr;
|
||||
|
||||
}
|
||||
}
|
||||
//object not found
|
||||
return NULL;
|
||||
}
|
||||
/** Handles an explosion, i.e. it makes sure that all physical objects are
|
||||
* affected accordingly.
|
||||
* \param pos Position of the explosion.
|
||||
|
@ -66,6 +66,8 @@ public:
|
||||
|
||||
void removeObject(TrackObject* who);
|
||||
|
||||
TrackObject* getTrackObject(std::string name);
|
||||
|
||||
PtrVector<TrackObject>& getObjects() { return m_all_objects; }
|
||||
const PtrVector<TrackObject>& getObjects() const { return m_all_objects; }
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user