//---------------------------------------------------------------------------- // EgalTech 2015-2015 //---------------------------------------------------------------------------- // File : LUA_GdbModifySurf.cpp Data : 09.03.15 Versione : 1.6b6 // Contenuto : Funzioni di modifica delle superfici per LUA. // // // // Modifiche : 09.03.15 DS Creazione modulo. // // //---------------------------------------------------------------------------- //--------------------------- Include ---------------------------------------- #include "stdafx.h" #include "LUA.h" #include "/EgtDev/Include/EXeExecutor.h" #include "/EgtDev/Include/EXeConst.h" #include "/EgtDev/Include/EGkGdbConst.h" #include "/EgtDev/Include/EGkLuaAux.h" using namespace std ; //---------------------------------------------------------------------------- static int LuaInvertSurf( lua_State* L) { // 1 parametro : Id/s INTVECTOR vId ; LuaCheckParam( L, 1, vId) LuaClearStack( L) ; // eseguo inversione superfici bool bOk = ExeInvertSurface( vId) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //------------------------------------------------------------------------------- static int LuaExplodeSurf( lua_State* L) { // 1 parametro : Id int nId ; LuaCheckParam( L, 1, nId) LuaClearStack( L) ; // esplosione della superficie trimesh int nCount ; int nFirstId = ExeExplodeSurface( nId, &nCount) ; if ( nFirstId != GDB_ID_NULL) LuaSetParam( L, nFirstId) ; else LuaSetParam( L) ; LuaSetParam( L, nCount) ; return 2 ; } //------------------------------------------------------------------------------- static int LuaSurfFrAdd( lua_State* L) { // 2 parametro : Id1, Id2 int nId1 ; LuaCheckParam( L, 1, nId1) int nId2 ; LuaCheckParam( L, 2, nId2) LuaClearStack( L) ; // unisco alla prima regione la seconda bool bOk = ExeSurfFrAdd( nId1, nId2) ; LuaSetParam( L, bOk) ; return 1 ; } //------------------------------------------------------------------------------- static int LuaSurfFrSubtract( lua_State* L) { // 2 parametro : Id1, Id2 int nId1 ; LuaCheckParam( L, 1, nId1) int nId2 ; LuaCheckParam( L, 2, nId2) LuaClearStack( L) ; // sottraggo dalla prima regione la seconda bool bOk = ExeSurfFrSubtract( nId1, nId2) ; LuaSetParam( L, bOk) ; return 1 ; } //------------------------------------------------------------------------------- static int LuaSurfFrIntersect( lua_State* L) { // 2 parametro : Id1, Id2 int nId1 ; LuaCheckParam( L, 1, nId1) int nId2 ; LuaCheckParam( L, 2, nId2) LuaClearStack( L) ; // interseco la prima regione con la seconda bool bOk = ExeSurfFrIntersect( nId1, nId2) ; LuaSetParam( L, bOk) ; return 1 ; } //---------------------------------------------------------------------------- static int LuaExtractSurfFrChunkLoops( lua_State* L) { // 3 parametri : nId, nChunk, nDestGrpId int nId ; LuaCheckParam( L, 1, nId) int nChunk ; LuaCheckParam( L, 2, nChunk) int nDestGrpId ; LuaCheckParam( L, 3, nDestGrpId) LuaClearStack( L) ; // eseguo inversione superfici int nCount ; int nNewId = ExeExtractSurfFrChunkLoops( nId, nChunk, nDestGrpId, &nCount) ; // restituisco il risultato if ( nNewId != GDB_ID_NULL) LuaSetParam( L, nNewId) ; else LuaSetParam( L) ; LuaSetParam( L, nCount) ; return 2 ; } //---------------------------------------------------------------------------- static int LuaExtractSurfTmFacetLoops( lua_State* L) { // 3 parametri : nId, nFacet, nDestGrpId int nId ; LuaCheckParam( L, 1, nId) int nFacet ; LuaCheckParam( L, 2, nFacet) int nDestGrpId ; LuaCheckParam( L, 3, nDestGrpId) LuaClearStack( L) ; // eseguo inversione superfici int nCount ; int nNewId = ExeExtractSurfTmFacetLoops( nId, nFacet, nDestGrpId, &nCount) ; // restituisco il risultato if ( nNewId != GDB_ID_NULL) LuaSetParam( L, nNewId) ; else LuaSetParam( L) ; LuaSetParam( L, nCount) ; return 2 ; } //------------------------------------------------------------------------------- bool LuaInstallGdbModifySurf( LuaMgr& luaMgr) { bool bOk = ( &luaMgr != nullptr) ; bOk = bOk && luaMgr.RegisterFunction( "EgtInvertSurf", LuaInvertSurf) ; bOk = bOk && luaMgr.RegisterFunction( "EgtExplodeSurf", LuaExplodeSurf) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrAdd", LuaSurfFrAdd) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrSubtract", LuaSurfFrSubtract) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrIntersect", LuaSurfFrIntersect) ; bOk = bOk && luaMgr.RegisterFunction( "EgtExtractSurfFrChunkLoops", LuaExtractSurfFrChunkLoops) ; bOk = bOk && luaMgr.RegisterFunction( "EgtExtractSurfTmFacetLoops", LuaExtractSurfTmFacetLoops) ; return bOk ; }