Files
Webcam/include/modules/script_squirrel/legacy/trigger_binding.cpp

85 lines
2.2 KiB
C++

/* -----------------------------------------------------------------------------
GSFramework
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */
#include "binding_helpers.h"
#include "scene3d/mtrigger.h"
using namespace GS::S3D;
using namespace GS::Core;
using namespace GS::Script;
//------------------------------------------------------------------------------
SQInteger TriggerGetItemList(HSQUIRRELVM vm)
{
__SQ_GETSINGLESAFEPTR(t, MTrigger, typetag_Trigger)
sq_newarray(vm, 0);
ListForeachPtr(Trigger::ItemInTrigger *, i, t->items_in_trigger)
if (i->inside)
{
CObject::Push(vm, (void *)i, typetag_Item);
sq_arrayappend(vm, -2);
}
return 1;
}
SQInteger TriggerTestItem(HSQUIRRELVM vm)
{
__SQ_GETSTART(2)
__SQ_GETSAFEPTR(t, MTrigger, typetag_Trigger)
__SQ_GETSAFEPTR(i, MItem, typetag_Item)
__SQ_GETEND
ListForeachPtr(Trigger::ItemInTrigger *, _i, t->items_in_trigger)
if (_i->inside && (i == (MItem *)_i->item->mitem))
__SQ_RETURNBOOL(true)
__SQ_RETURNBOOL(false)
}
SQInteger TriggerPosInside(HSQUIRRELVM vm)
{
__SQ_GETSTART(2)
__SQ_GETSAFEPTR(t, MTrigger, typetag_Trigger)
__SQ_GETVECTOR(p)
__SQ_GETEND
__SQ_RETURNBOOL(t->IsInside(p))
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void RegisterTriggerBinding(HSQUIRRELVM vm)
{
/*#
Topic: Trigger
Type: Trigger
Related: Item
#*/
/*#
Section: TriggerGeneral
Desc: Trigger general functions.
#*/
/*#
Func: TriggerGetItemList
Proto: array:Item
Desc: Return an array of items currently inside this trigger.
#*/
sq_register(vm, TriggerGetItemList, "TriggerGetItemList", _SC(".x"));
/*#
Func: TriggerTestItem
Proto: bool:Item trigger,Item item
Desc: Test if a given item is currently inside this trigger.
#*/
sq_register(vm, TriggerTestItem, "TriggerTestItem", _SC(".xx"));
/*#
Func: TriggerPosInside
Proto: bool:Item trigger,Vector p
Desc: Test if a given p is currently inside this trigger.
#*/
sq_register(vm, TriggerPosInside, "TriggerPosInside", _SC(".xx"));
}
//------------------------------------------------------------------------------