Hitting a physical object with an object now triggers a message (Test in tutorial by shooting at the boxes). All currently suppported collision types now denote the type in the message that appears.
This commit is contained in:
@@ -3,5 +3,5 @@ void onCollision()
|
||||
/*
|
||||
Currently activates on Kart collisions
|
||||
*/
|
||||
displayMessage("Whoa! Road rage... between Kart: " + getCollidingKart1() + " - " + getCollidingKart2());
|
||||
displayMessage("Whoa! Road rage... between Kart: " + getCollidingKart1() + " - " + getCollidingKart2() + " " + getCollisionType());
|
||||
}
|
||||
|
||||
@@ -173,8 +173,8 @@ void Physics::update(float dt)
|
||||
Scripting::ScriptEngine* script_engine = World::getWorld()->getScriptEngine();
|
||||
int kartid1 = p->getUserPointer(0)->getPointerKart()->getWorldKartId();
|
||||
int kartid2 = p->getUserPointer(1)->getPointerKart()->getWorldKartId();
|
||||
//script_engine->setCollision(kartid1,kartid2);
|
||||
Scripting::Physics::setCollision(kartid1,kartid2);
|
||||
Scripting::Physics::setCollisionType("Kart-Kart");
|
||||
script_engine->runScript("collisions");
|
||||
continue;
|
||||
} // if kart-kart collision
|
||||
@@ -245,6 +245,10 @@ void Physics::update(float dt)
|
||||
{
|
||||
// Projectile hits physical object
|
||||
// -------------------------------
|
||||
Scripting::ScriptEngine* script_engine = World::getWorld()->getScriptEngine();
|
||||
Scripting::Physics::setCollision(0,0); //TODO : support item types etc
|
||||
Scripting::Physics::setCollisionType("Projectile-PhysObj");
|
||||
script_engine->runScript("collisions");
|
||||
p->getUserPointer(0)->getPointerFlyable()
|
||||
->hit(NULL, p->getUserPointer(1)->getPointerPhysicalObject());
|
||||
PhysicalObject* obj = p->getUserPointer(1)->getPointerPhysicalObject();
|
||||
|
||||
@@ -31,6 +31,7 @@ namespace Scripting{
|
||||
asIScriptFunction*
|
||||
registerScriptCallbacks(asIScriptEngine *engine);
|
||||
void setCollision(int collider1,int collider2);
|
||||
void setCollisionType(std::string collisionType);
|
||||
}
|
||||
|
||||
namespace Kart{
|
||||
|
||||
@@ -33,11 +33,20 @@ namespace Scripting{
|
||||
{
|
||||
gen->SetReturnDWord(m_collidingkartid2);
|
||||
}
|
||||
void getCollisionType(asIScriptGeneric *gen)
|
||||
{
|
||||
void *pointer = &m_collisionType;
|
||||
gen->SetReturnObject(pointer);
|
||||
}
|
||||
void setCollision(int collider1,int collider2)
|
||||
{
|
||||
m_collidingkartid1 = collider1;
|
||||
m_collidingkartid2 = collider2;
|
||||
}
|
||||
void setCollisionType(std::string collisionType)
|
||||
{
|
||||
m_collisionType = collisionType;
|
||||
}
|
||||
|
||||
asIScriptFunction* registerScriptCallbacks(asIScriptEngine *engine)
|
||||
{
|
||||
@@ -50,6 +59,7 @@ namespace Scripting{
|
||||
int r;
|
||||
r = engine->RegisterGlobalFunction("uint getCollidingKart1()", asFUNCTION(getCollidingKart1), asCALL_GENERIC); assert( r >= 0 );
|
||||
r = engine->RegisterGlobalFunction("uint getCollidingKart2()", asFUNCTION(getCollidingKart2), asCALL_GENERIC); assert( r >= 0 );
|
||||
r = engine->RegisterGlobalFunction("string getCollisionType()", asFUNCTION(getCollisionType), asCALL_GENERIC); assert(r >= 0);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#define HEADER_SCRIPT_PHYSICS_HPP
|
||||
|
||||
#include <angelscript.h>
|
||||
#include <string>
|
||||
|
||||
namespace Scripting{
|
||||
|
||||
@@ -28,7 +29,7 @@ namespace Scripting{
|
||||
//private:
|
||||
int m_collidingkartid1;
|
||||
int m_collidingkartid2;
|
||||
|
||||
std::string m_collisionType;
|
||||
|
||||
//public:
|
||||
//script engine functions
|
||||
@@ -39,12 +40,14 @@ namespace Scripting{
|
||||
|
||||
//game engine functions
|
||||
void setCollision(int collider1, int collider2);
|
||||
void setCollisionType(std::string);
|
||||
|
||||
|
||||
|
||||
//script-bound functions
|
||||
void getCollidingKart1(asIScriptGeneric *gen);
|
||||
void getCollidingKart2(asIScriptGeneric *gen);
|
||||
void getCollsionType(asIScriptGeneric *gen);
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user