Added ability to trigger explosions (graphical only) via scripts, currently uses the cake explosion_bomb.xml

This commit is contained in:
Sachith Hasaranga Seneviratne
2014-07-04 12:04:28 +05:30
parent 097a6b6394
commit eb4f585b29
3 changed files with 8 additions and 9 deletions

View File

@@ -3,4 +3,6 @@ void onCollision()
displayMessage("Woot! You hit item of ID: " + getCollidingID());
disableAnimation(getCollidingID());
Vec3 explosion_loc = Vec3(79.53,0.07,97.13);
createExplosion(explosion_loc);
}

View File

@@ -28,12 +28,11 @@ namespace Scripting
namespace Physics
{
void createExplosion()
void createExplosion(asIScriptGeneric *gen)
{
//currently hardcode for sphere 2
//79.53 0.07 97.13"
Vec3 explosion_loc = Vec3(79.53, 0.07, 97.13);
HitEffect *he = new Explosion(explosion_loc, "explosion", "explosion_bomb.xml");
//TODO: allow different types? sand etc
Vec3 *explosion_loc = (Vec3*)gen->GetArgAddress(0);
HitEffect *he = new Explosion(*explosion_loc, "explosion", "explosion_bomb.xml");
projectile_manager->addHitEffect(he);
}
void getCollidingKart1(asIScriptGeneric *gen)
@@ -47,7 +46,6 @@ namespace Scripting
void getCollidingID(asIScriptGeneric *gen)
{
void *pointer = &m_collider1;
createExplosion();
gen->SetReturnObject(pointer);
}
void getCollisionType(asIScriptGeneric *gen)
@@ -83,6 +81,7 @@ namespace Scripting
r = engine->RegisterGlobalFunction("uint getCollidingKart2()", asFUNCTION(getCollidingKart2), asCALL_GENERIC); assert( r >= 0 );
r = engine->RegisterGlobalFunction("string getCollisionType()", asFUNCTION(getCollisionType), asCALL_GENERIC); assert(r >= 0);
r = engine->RegisterGlobalFunction("string getCollidingID()", asFUNCTION(getCollidingID), asCALL_GENERIC); assert(r >= 0);
r = engine->RegisterGlobalFunction("string createExplosion(Vec3 &in)", asFUNCTION(createExplosion), asCALL_GENERIC); assert(r >= 0);
}
}
}

View File

@@ -69,9 +69,8 @@ namespace Scripting
{
((ThreeDAnimation*)(memory))->setPaused(mode);
}
void move(Vec3 *new_pos,void *memory) //TODO get other params using vec3
void move(Vec3 *new_pos,void *memory)
{
core::vector3df xyz = core::vector3df(0, 0, 0);
xyz.X = new_pos->getX();
xyz.Y = new_pos->getY();
@@ -94,7 +93,6 @@ namespace Scripting
}
void getKeyBinding(asIScriptGeneric *gen)
{
//currently just test if it works
int Enum_value = (int)gen->GetArgDWord(0);
InputDevice* device = input_manager->getDeviceList()->getLatestUsedDevice();
DeviceConfig* config = device->getConfiguration();