local util = require('util')
app.on('scan_experience', function(exp)
--print_r(exp)
end)
app.on('scan_experience_file', function(exp)
local me = app.plugin.convert
if me.assimp then
local filetypes_in = app.opts.plugin_convert_assimp_filetypes_in:gsub(" "," ")
local filetypes_out = app.opts.plugin_convert_assimp_filetypes_out:gsub(" "," ")
local convert = false
foreach( util.split( filetypes_in , ' '), function(k,ext)
ext = ext:gsub("%W", "")
if exp.path:lower():match( "." .. ext:lower() .. "$") then
convert = true
end
end)
if convert then
foreach( util.split( filetypes_out , ' '), function(k,ext)
ext = ext:gsub("%W", "")
local outfile = exp.path .. '.' .. ext
local fullpath = exp.file.fullpath .. '.' .. ext
local flags = ''
if ext:lower() == 'glb' then flags = flags .. ' --embed-textures' end
if not util.fileExist(outfile) then
print('> assimp export ' .. exp.file.fullpath .. ' ' .. fullpath )
local ok = os.execute('assimp export ' .. exp.file.fullpath .. ' ' .. fullpath )
if ok then
-- notify extra file to plugins
local stat,err = unix.stat(outfile)
if not err then
app.pub("scan_experience_file", nil, util.merge( exp, {
parent = exp.parent,
path = outfile,
url = "/" .. util.stripPath(outfile),
id = outfile,
file = {stat=stat, ino = stat:ino(), attr=stat, fullpath=fullpath}
}))
end
end
end
end)
end
end
end)
app.on('set', function(k,v)
end)
-- this registers the plugin UI
local plugin = {
name = "Conversion",
info = 'Auto-convert (older) 3D fileformats to newer ones, by generating sidecarfiles (foo.x3d.glb e.g.) via assimp',
opts = {
{
key='app.opts.plugin_convert_assimp_filetypes_in',
title='from filetype',
info='Space-separated 3D File extensions for assimp to process, lua patterns are allowed',
default = "x3d",
placeholder = "",
values=''
},
{
key='app.opts.plugin_convert_assimp_filetypes_out',
title='to filetype',
info='Space-separated 3D File extensions for assimp to process, lua patterns are allowed',
default = 'glb',
values=''
},
},
}
if util.cmdExist('assimp') then
plugin.assimp = true
local stdout, retstr, retcode = util.execute('assimp listext')
plugin.filetypes = stdout:gsub(";%*."," ")
plugin.info = "
assimp detected
" .. plugin.info .. '
Supported filetypes: '
foreach( util.split( plugin.filetypes, ' '), function(k,ext)
plugin.info = plugin.info .. '' .. ext .. ' '
end)
else
plugin.info = plugin.info .. "
NOTE: assimp is not installed on this system: please install."
end
return plugin