Bound TrackObject type to scripts
This commit is contained in:
parent
113c87dccf
commit
e567adb0ca
@ -6,6 +6,10 @@ void onTrigger()
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
displayMessage("Haybail deactivated");
|
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
|
squashKart(0,35.0); //id of kart,time to squash
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
#include "states_screens/dialogs/tutorial_message_dialog.hpp"
|
#include "states_screens/dialogs/tutorial_message_dialog.hpp"
|
||||||
#include "tracks/track_object_manager.hpp"
|
#include "tracks/track_object_manager.hpp"
|
||||||
#include "tracks/track.hpp"
|
#include "tracks/track.hpp"
|
||||||
|
#include <iostream> //debug
|
||||||
namespace Scripting
|
namespace Scripting
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -36,6 +36,24 @@ namespace Scripting
|
|||||||
func = engine->GetModule(0)->GetFunctionByDecl("void onTrigger()");
|
func = engine->GetModule(0)->GetFunctionByDecl("void onTrigger()");
|
||||||
return func;
|
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)
|
void registerScriptFunctions(asIScriptEngine *engine)
|
||||||
{
|
{
|
||||||
int r;
|
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 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)",
|
r = engine->RegisterGlobalFunction("void createTrigger(string &in,float x,float y,float z, float distance)",
|
||||||
asFUNCTION(createTrigger), asCALL_GENERIC); assert(r >= 0);
|
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
|
} // reset
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
void TrackObjectManager::disable(std::string name , std::string type){
|
void TrackObjectManager::disable(std::string name , std::string type)
|
||||||
|
{
|
||||||
TrackObject* curr;
|
TrackObject* curr;
|
||||||
for_in (curr,m_all_objects){
|
for_in (curr,m_all_objects){
|
||||||
if (type != curr->getType())continue;
|
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;
|
TrackObject* curr;
|
||||||
for_in (curr,m_all_objects){
|
for_in (curr,m_all_objects){
|
||||||
if (type != curr->getType())continue;
|
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;
|
TrackObject* curr;
|
||||||
for_in (curr,m_all_objects){
|
for_in (curr,m_all_objects){
|
||||||
if (curr->getName() == (name)||curr->getID()==(name))
|
if (curr->getName() == (name)||curr->getID()==(name))
|
||||||
@ -134,6 +137,21 @@ bool TrackObjectManager::getStatus(std::string name){
|
|||||||
//object not found
|
//object not found
|
||||||
return false;
|
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
|
/** Handles an explosion, i.e. it makes sure that all physical objects are
|
||||||
* affected accordingly.
|
* affected accordingly.
|
||||||
* \param pos Position of the explosion.
|
* \param pos Position of the explosion.
|
||||||
|
@ -66,6 +66,8 @@ public:
|
|||||||
|
|
||||||
void removeObject(TrackObject* who);
|
void removeObject(TrackObject* who);
|
||||||
|
|
||||||
|
TrackObject* getTrackObject(std::string name);
|
||||||
|
|
||||||
PtrVector<TrackObject>& getObjects() { return m_all_objects; }
|
PtrVector<TrackObject>& getObjects() { return m_all_objects; }
|
||||||
const PtrVector<TrackObject>& getObjects() const { return m_all_objects; }
|
const PtrVector<TrackObject>& getObjects() const { return m_all_objects; }
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user