void DrawAttribsParser::CreateObj( lua_State *L ) { INIT_LUA_STACK_TRACKING(L); DrawAttribs DrawAttrs; ParseLuaTable( L, 1, &DrawAttrs, m_Bindings ); CHECK_LUA_STACK_HEIGHT(); auto pDrawAttribs = reinterpret_cast<DrawAttribs*>(lua_newuserdata( L, sizeof( DrawAttribs ) )); memcpy(pDrawAttribs, &DrawAttrs, sizeof(DrawAttribs)); CHECK_LUA_STACK_HEIGHT( +1 ); }
void SamplerParser::CreateObj( lua_State *L ) { INIT_LUA_STACK_TRACKING( L ); SSamDescWrapper SamplerDesc; ParseLuaTable( L, -1, &SamplerDesc, m_Bindings ); CHECK_LUA_STACK_HEIGHT(); auto ppSampler = reinterpret_cast<ISampler**>(lua_newuserdata( L, sizeof( ISampler* ) )); *ppSampler = nullptr; m_pRenderDevice->CreateSampler( SamplerDesc, ppSampler ); if( *ppSampler == nullptr ) SCRIPT_PARSING_ERROR(L, "Failed to create a sampler") CHECK_LUA_STACK_HEIGHT( +1 ); }
void TextureViewParser::CreateObj( lua_State *L ) { INIT_LUA_STACK_TRACKING(L); auto *pTexture = *GetUserData<ITexture**>( L, 1, m_TextureLibMetatableName.c_str() ); STexViewDescWrapper TextureViewDesc; ParseLuaTable( L, 2, &TextureViewDesc, m_Bindings ); CHECK_LUA_STACK_HEIGHT(); auto ppTextureView = reinterpret_cast<ITextureView**>(lua_newuserdata( L, sizeof( ITextureView* ) )); *ppTextureView = nullptr; pTexture->CreateView( TextureViewDesc, ppTextureView ); if( *ppTextureView == nullptr ) SCRIPT_PARSING_ERROR(L, "Failed to create texture view") CHECK_LUA_STACK_HEIGHT( +1 ); }
void MemberBinder<RasterizerStateDesc> ::SetValue(lua_State *L, int Index, void* pBasePointer) { auto &RasterizerDesc = GetMemberByOffest< RasterizerStateDesc>( pBasePointer, m_MemberOffset ); ParseLuaTable( L, Index, &RasterizerDesc, m_Bindings ); }
bool TemplateParser::ParseMacro() { Ident ident; ident = ParseIdent(); switch (ident) { case ID_WXPARENT: return ParseWxParent(); break; case ID_PARENT: return ParseParent(); break; case ID_FORM: return ParseForm(); break; case ID_IFNOTNULL: return ParseIfNotNull(); break; case ID_IFNULL: return ParseIfNull(); break; case ID_FOREACH: return ParseForEach(); break; case ID_PREDEFINED: return ParsePred(); break; case ID_PREDEFINED_INDEX: return ParseNPred(); break; case ID_CHILD: return ParseChild(); break; case ID_NEWLINE: return ParseNewLine(); break; case ID_IFEQUAL: ParseIfEqual(); break; case ID_IFNOTEQUAL: ParseIfNotEqual(); break; case ID_IFPARENTTYPEEQUAL: ParseIfParentTypeEqual(); break; case ID_IFPARENTCLASSEQUAL: ParseIfParentClassEqual(); break; case ID_IFPARENTTYPENOTEQUAL: ParseIfParentTypeNotEqual(); break; case ID_IFPARENTCLASSNOTEQUAL: ParseIfParentClassNotEqual(); break; case ID_APPEND: ParseAppend(); break; case ID_CLASS: ParseClass(); break; case ID_INDENT: ParseIndent(); break; case ID_UNINDENT: ParseUnindent(); break; case ID_IFTYPEEQUAL: ParseIfTypeEqual(); break; case ID_IFTYPENOTEQUAL: ParseIfTypeNotEqual(); break; case ID_UTBL: ParseLuaTable(); break; default: THROW_WXFBEX( wxT("Invalid Macro Type") ); break; } return true; }