Files
DataBeam/ShowBuilding.lua
T
Dario Sassi 6eaba8a577 DataBeam :
- primo rilascio.
2019-04-01 15:18:51 +00:00

63 lines
2.1 KiB
Lua

-- ShowBuilding.lua by Egaltech s.r.l. 2018/11/21
-- Gestione visualizzazione travi come struttura
-- Intestazioni
require( 'EgtBase')
_ENV = EgtProtectGlobal()
EgtEnableDebug( false)
-- recupero il gruppo di assemblaggio
local AsseBaseId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'AsseBase')
if not AsseBaseId then return end
-- recupero il primo oggetto nel gruppo e verifico se devo assemblare o disassemblare
local AsseId = EgtGetFirstInGroup( AsseBaseId)
if not AsseId then return end
local bMake = ( EgtGetGroupObjs( AsseId) == 0)
-- ciclo sul gruppo di assemblaggio
while AsseId do
-- salvo il successivo nel gruppo dell'assemblato
local NextId = EgtGetNext( AsseId)
-- costruisco l'assemblato
if bMake then
-- recupero il pezzo sorgente
local SouId = EgtGetInfo( AsseId, GDB_SI.SOURCE, 'i')
if SouId then
EgtSetMode( SouId, GDB_MD.STD)
EgtSetStatus( SouId, GDB_ST.ON)
-- se già utilizzato, ne faccio una copia
if not EgtIsPart( SouId) then
local CopyId = EgtCopy( SouId, GDB_ID.ROOT)
if CopyId then
EgtRemoveInfo( CopyId, GDB_SI.BASE)
EgtRemoveInfo( CopyId, GDB_SI.LIST)
EgtSetInfo( CopyId, GDB_SI.COPY, SouId)
SouId = CopyId
EgtSetInfo( AsseId, GDB_SI.SOURCE, SouId)
end
end
EgtSetStatus( EgtGetFirstNameInGroup( SouId, 'Box') or GDB_ID.NULL, GDB_ST.OFF)
EgtGroupSwap( SouId, AsseId, true, true)
end
-- ritorno ai pezzi
else
local BasId = EgtGetInfo( AsseId, GDB_SI.BASE, 'i')
if BasId then
EgtGroupSwap( AsseId, BasId, true, true)
local CopId = EgtGetInfo( AsseId, GDB_SI.COPY, 'i')
if CopId then
EgtErase( AsseId)
EgtSetInfo( BasId, GDB_SI.SOURCE, CopId)
else
EgtSetStatus( EgtGetFirstNameInGroup( AsseId, 'Box') or GDB_ID.NULL, GDB_ST.ON)
end
end
end
-- passo al successivo
AsseId = NextId
end
EgtZoom( SCE_ZM.ALL)
-- end