#if defined _g3_projectbox
#endinput
#endif
#define _g3_projectbox
stock const BOX_ANCESTOR_CLASSNAME[] = "func_wall";
stock const BOX_CLASSNAME[] = "obj_projectbox";
#define GetBoxCustomKey(%1) get_entvar(%1, var_impulse)
// [ Сохраняемые данные (можно использовать) ]
const EntVars:var_box_key = var_impulse;
const EntVars:var_box_int_buffer1 = var_iuser1;
const EntVars:var_box_int_buffer2 = var_iuser2;
const EntVars:var_box_int_buffer3 = var_iuser3;
const EntVars:var_box_int_buffer4 = var_iuser4;
const EntVars:var_box_vec_buffer1 = var_oldorigin;
const EntVars:var_box_vec_buffer2 = var_endpos;
/*
[ Вызывается когда ProjectBox создаёт Custom Box ]
iEntity: индекс объекта.
iKey: его уникальный ключ.
*/
forward pb_create_custom_box(iEntity, iKey);
/*
[ Вызывается когда ProjectBox удаляет Custom Box ]
Заметка: Обнуление SetThink + SetTouch + SetUse включено.
iEntity: индекс объекта.
iKey: его уникальный ключ.
*/
forward pb_remove_custom_box(iEntity, iKey);
// [ Проверяет сущность на "Это ProjectBox объект?" ]
stock bool:isBoxObject(iEntity, iKey = 0) {
if(is_nullent(iEntity)) {
return false;
}
if(!FClassnameIs(iEntity, BOX_CLASSNAME)) {
return false;
}
if(iKey > 0) {
return (bool:(GetBoxCustomKey(iEntity) == iKey));
}
return true;
}
stock bool:isObjectSolidBox(iEntity) {
return (bool:(get_entvar(iEntity, var_solid) == SOLID_BBOX));
}