本文整理汇总了C++中luabind::object::is_valid方法的典型用法代码示例。如果您正苦于以下问题:C++ object::is_valid方法的具体用法?C++ object::is_valid怎么用?C++ object::is_valid使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类luabind::object
的用法示例。
在下文中一共展示了object::is_valid方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getPosition
position LuaQuestScript::getPosition(const luabind::object &potentialPosition) {
using namespace luabind;
if (!potentialPosition.is_valid()) {
throw std::logic_error("no position found");
}
try {
return object_cast<position>(potentialPosition);
} catch (cast_failed &e) {
}
auto positionType = type(potentialPosition);
if (positionType == LUA_TTABLE) {
try {
int16_t x = object_cast<int16_t>(potentialPosition[1]);
int16_t y = object_cast<int16_t>(potentialPosition[2]);
int16_t z = object_cast<int16_t>(potentialPosition[3]);
return position(x, y, z);
} catch (cast_failed &e) {
}
}
throw std::logic_error("no position found");
}
示例2:
void LuaProxy::Graphics::__setSimpleSpriteOverride(const std::string & name, const luabind::object & overrideImg, lua_State * L)
{
HDC mainHdc, maskHdc;
if (name.find("hardcoded-") == 0)
{
// If non of the above applies, then try with the hardcoded ones:
HardcodedGraphicsItem::GetHDCByName(name, &mainHdc, &maskHdc);
}
if (mainHdc == nullptr && maskHdc == nullptr) {
luaL_error(L, "Failed to get hardcoded image!");
return;
}
SMBXMaskedImage* img = SMBXMaskedImage::get(mainHdc, maskHdc);
if (!overrideImg.is_valid())
{
img->UnsetOverride();
return;
}
boost::optional<SMBXMaskedImage*> maskImg = luabind::object_cast_nothrow<SMBXMaskedImage*>(overrideImg);
if (maskImg != boost::none) {
img->SetOverride(*maskImg);
return;
}
boost::optional<LuaProxy::Graphics::LuaImageResource*> rgbaImg = luabind::object_cast_nothrow<LuaProxy::Graphics::LuaImageResource*>(overrideImg);
if (rgbaImg != boost::none) {
if (*rgbaImg != nullptr && (*rgbaImg)->img) {
img->SetOverride((*rgbaImg)->img);
}
return;
}
luaL_error(L, "Invalid input for sprite override!");
}
示例3: _CheckDataType
bool ReadScriptDescriptor::_CheckDataType(int32 type, luabind::object& obj_check) {
int32 object_type = luabind::type(obj_check);
if (obj_check.is_valid() == false)
return false;
// When this type is passed to the function, we don't care what type the object is as long
// as it was seen to be something
if (type == LUA_TNIL) {
return true;
}
// Simple type comparison is all that is needed for all non-numeric types
else if (type == object_type) {
return true;
}
// Because Lua only has a "number" type, we have to do perform a special cast
// to examine integer versus floating point types
else if (object_type == LUA_TNUMBER) {
if (type == INTEGER_TYPE) {
try {
luabind::object_cast<int32>(obj_check);
return true;
}
catch (...) {
return false;
}
}
else if (type == UINTEGER_TYPE) {
try {
luabind::object_cast<uint32>(obj_check);
return true;
}
catch (...) {
return false;
}
}
else if (type == FLOAT_TYPE) {
try {
luabind::object_cast<float>(obj_check);
return true;
}
catch (...) {
return false;
}
}
else {
return false;
}
}
else {
return false;
}
} // bool ReadScriptDescriptor::_CheckDataType(int32 type, luabind::object& obj_check)
示例4: addFromList
void WaypointList::addFromList(const luabind::object &list) {
if (list.is_valid()) {
if (luabind::type(list) == LUA_TTABLE) {
for (luabind::iterator it(list), end; it != end; ++it) {
position pos = luabind::object_cast<position>(*it);
positions.push_back(pos);
}
}
}
}
示例5: RunScriptObject
bool ReadScriptDescriptor::RunScriptObject(const luabind::object& object) {
// Don't log in that case because we might want to run invalid (empty) objects
// to simplify the caller code.
if (!object.is_valid())
return true;
try {
ScriptCallFunction<void>(object);
} catch(luabind::error e) {
PRINT_ERROR << "Error while loading script object." << std::endl;
ScriptManager->HandleLuaError(e);
return false;
}
return true;
}
示例6: addFromList
void WaypointList::addFromList(const luabind::object &list) {
if (list.is_valid()) {
if (luabind::type(list) == LUA_TTABLE) {
for (luabind::iterator it(list), end; it != end; ++it) {
try {
position pos = luabind::object_cast<position>(*it);
positions.push_back(pos);
} catch (luabind::cast_failed &e) {
std::string script = World::get()->getCurrentScript()->getFileName();
std::string err = "Invalid type in parameter list of WaypointList:addFromList in " + script + ":\n";
err += "Expected type position\n";
Logger::writeError("scripts", err);
}
}
}
}
}
示例7: setGeometryIndices
void setGeometryIndices( Geometry * pGeom, const luabind::object & indexTable )
{
if ( indexTable.is_valid() && indexTable.type() == LUA_TTABLE )
{
if ( !pGeom->m_indexBuffer ) pGeom->m_indexBuffer.reset( new vector<unsigned short> );
unsigned int uiNewIndices = 0;
pGeom->m_indexBuffer->clear();
for( luabind::object::array_iterator iter = indexTable.abegin();
iter != indexTable.aend();
iter++, uiNewIndices++ )
{
boost::optional<unsigned short> oindex = luabind::object_cast_nothrow<unsigned short>( *iter );
if ( oindex )
pGeom->m_indexBuffer->push_back( *oindex.get() );
}
pGeom->m_indexCount = uiNewIndices;
}
}
示例8: setGeometryTexture1
void setGeometryTexture1( Geometry * pGeom, const luabind::object & texture1Table )
{
if ( texture1Table.is_valid() && texture1Table.type() == LUA_TTABLE )
{
if ( !pGeom->m_texture1Buffer ) pGeom->m_texture1Buffer.reset( new vector<float> );
pGeom->m_texture1Buffer->clear();
for( luabind::object::array_iterator iter = texture1Table.abegin();
iter != texture1Table.aend();
iter++ )
{
boost::optional<Point2> opt = luabind::object_cast_nothrow<Point2>( *iter );
if ( opt )
{
Point2 * pt = opt.get();
pGeom->m_texture1Buffer->push_back( pt->x );
pGeom->m_texture1Buffer->push_back( pt->y );
}
}
}
}
示例9: getMaskedImage
void LuaProxy::Graphics::__setSpriteOverride(const std::string& t, int index, const luabind::object& overrideImg, lua_State* L)
{
SMBXMaskedImage* img = getMaskedImage(t, index);
if (img == nullptr)
{
luaL_error(L, "Graphics.sprite.%s[%d] does not exist", t.c_str(), index);
return;
}
if (!overrideImg.is_valid())
{
img->UnsetOverride();
return;
}
//I found that 'object_cast_nothrow' sometimes casts between incompatible types without returning 'boost::none'
//switch order to avoid invalid casting from LIR to SMBXMI
boost::optional<LuaProxy::Graphics::LuaImageResource*> rgbaImg = luabind::object_cast_nothrow<LuaProxy::Graphics::LuaImageResource*>(overrideImg);
if (rgbaImg != boost::none) {
if (*rgbaImg != nullptr && (*rgbaImg)->img) {
img->SetOverride((*rgbaImg)->img);
}
return;
}
boost::optional<SMBXMaskedImage*> maskImg = luabind::object_cast_nothrow<SMBXMaskedImage*>(overrideImg);
if (maskImg != boost::none) {
img->SetOverride(*maskImg);
return;
}
luaL_error(L, "Cannot set Graphics.sprite.%s[%d], invalid input type", t.c_str(), index);
}
示例10: setGeometryColor
void setGeometryColor( Geometry * pGeom, const luabind::object & colorTable )
{
if ( colorTable.is_valid() && colorTable.type() == LUA_TTABLE )
{
if ( !pGeom->m_colorBuffer ) pGeom->m_colorBuffer.reset( new vector<float> );
pGeom->m_colorBuffer->clear();
for( luabind::object::array_iterator iter = colorTable.abegin();
iter != colorTable.aend();
iter++ )
{
boost::optional<ColorA> opt = luabind::object_cast_nothrow<ColorA>( *iter );
if ( opt )
{
ColorA * pt = opt.get();
pGeom->m_colorBuffer->push_back( pt->r );
pGeom->m_colorBuffer->push_back( pt->g );
pGeom->m_colorBuffer->push_back( pt->b );
pGeom->m_colorBuffer->push_back( pt->a );
}
}
}
}
示例11: setGeometryVertices
//
// Local Functions
//
void setGeometryVertices( Geometry * pGeom, const luabind::object & vertexTable )
{
if ( vertexTable.is_valid() && vertexTable.type() == LUA_TTABLE )
{
if ( !pGeom->m_vertexBuffer ) pGeom->m_vertexBuffer.reset( new vector<float> );
pGeom->m_vertexBuffer->clear();
unsigned uiNewVertices = 0;
for( luabind::object::array_iterator iter = vertexTable.abegin();
iter != vertexTable.aend();
iter++, uiNewVertices++ )
{
boost::optional<Point3> opt = luabind::object_cast_nothrow<Point3>( *iter );
if ( opt )
{
Point3 * pt = opt.get();
pGeom->m_vertexBuffer->push_back( pt->x );
pGeom->m_vertexBuffer->push_back( pt->y );
pGeom->m_vertexBuffer->push_back( pt->z );
}
}
pGeom->m_vertexCount = uiNewVertices;
}
}