<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://opensimulator.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://opensimulator.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MarcelEdward</id>
		<title>OpenSimulator - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://opensimulator.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MarcelEdward"/>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Special:Contributions/MarcelEdward"/>
		<updated>2026-05-12T06:45:39Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.19.9</generator>

	<entry>
		<id>http://opensimulator.org/wiki/Assets_generator</id>
		<title>Assets generator</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Assets_generator"/>
				<updated>2010-08-04T22:18:49Z</updated>
		
		<summary type="html">&lt;p&gt;MarcelEdward: /* Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Template:Quicklinks}}&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
This script generates the XML files needed to create a new asset set and associated inventory libraries for OpenSim.Given a directory tree of jp2 and lsl files, and it will traverse the tree and generate the assets file, the inventory folder file, and the inventory items file.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
* Put the code in a file named genassets.pl, and copy it to your library preparation directory (/opt/opensim/library)&lt;br /&gt;
* Download the [http://github.com/tokuhirom/data-uuid/downloads perl UUID module]&lt;br /&gt;
* Install the UUID module&lt;br /&gt;
 perl Makefile.PL&lt;br /&gt;
 make&lt;br /&gt;
 make test&lt;br /&gt;
 make install&lt;br /&gt;
* Create Asset directories&lt;br /&gt;
 mkdir /opt/opensim/production/bin/inventory/MyCoolOpenSimLibrary/&lt;br /&gt;
 mkdir /opt/opensim/production/bin/assets/MyCoolOpenSimAssetSet/&lt;br /&gt;
* Launch script (Adds the content in /opt/opensim/production/library to the OpenSim inventory/asset storage)&lt;br /&gt;
 perl /opt/opensim/production/library/genassets.pl&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
 ######################################&lt;br /&gt;
 #&lt;br /&gt;
 # genassets.pl&lt;br /&gt;
 #&lt;br /&gt;
 # by: Illuminous Beltran/IBM&lt;br /&gt;
 #&lt;br /&gt;
 # This script generates the XML files&lt;br /&gt;
 # needed to create a new asset set&lt;br /&gt;
 # and associated inventory libraries&lt;br /&gt;
 # for OpenSim.&lt;br /&gt;
 #&lt;br /&gt;
 # Given a directory tree of jp2 and lsl&lt;br /&gt;
 # files, and it will traverse the tree&lt;br /&gt;
 # and generate the assets file, the &lt;br /&gt;
 # inventory folder file, and the&lt;br /&gt;
 # inventory items file.&lt;br /&gt;
 #&lt;br /&gt;
 # Requires the Data::UUID module&lt;br /&gt;
 #&lt;br /&gt;
 # http://github.com/tokuhirom/data-uuid/downloads&lt;br /&gt;
 #&lt;br /&gt;
 ######################################&lt;br /&gt;
 use Data::UUID;&lt;br /&gt;
 &lt;br /&gt;
 # Library name&lt;br /&gt;
 $libName = &amp;quot;My Cool OpenSim Library&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 # Root of your library, where your&lt;br /&gt;
 # jp2 and lsl files are&lt;br /&gt;
 $inputRoot=&amp;quot;/opt/opensim/library&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 # Where to put the inventory files&lt;br /&gt;
 $invOutputDir=&amp;quot;/opt/opensim/production/bin/inventory/MyCoolOpenSimLibrary/&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 # Where to put the asset set file&lt;br /&gt;
 $assetOutputDir=&amp;quot;/opt/opensim/production/bin/assets/MyCoolOpenSimAssetSet/&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 # Root key for OpenSim library folder&lt;br /&gt;
 # This is a static value fixed in opensim&lt;br /&gt;
 # so you should not have to change it unless&lt;br /&gt;
 # it changes&lt;br /&gt;
 $rootFolder = &amp;quot;00000112-000f-0000-0000-000100bba000&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 # No user servicable parts below&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 $parent = $rootFolder;&lt;br /&gt;
 $treeLevel = 0;&lt;br /&gt;
 &lt;br /&gt;
 print(&amp;quot;ROOT FOLDER:&amp;quot; . $rootFolder . &amp;quot;\n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 open(INVFDATOUT,&amp;quot;&amp;gt;&amp;quot; . $invOutputDir . &amp;quot;3DDCInventoryFolders.xml&amp;quot;) || die(&amp;quot;Cannot Open Folders File&amp;quot;);&lt;br /&gt;
 print INVFDATOUT &amp;quot;&amp;lt;Nini&amp;gt;\n&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 open(INVIDATOUT,&amp;quot;&amp;gt;&amp;quot; . $invOutputDir . &amp;quot;3DDCInventoryItems.xml&amp;quot;) || die(&amp;quot;Cannot Open Items File&amp;quot;);&lt;br /&gt;
 print INVIDATOUT &amp;quot;&amp;lt;Nini&amp;gt;\n&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 open(ASSETDATOUT,&amp;quot;&amp;gt;&amp;quot; . $assetOutputDir . &amp;quot;3DDCAssetSet.xml&amp;quot;) || die(&amp;quot;Cannot Open Asset File&amp;quot;);&lt;br /&gt;
 print ASSETDATOUT &amp;quot;&amp;lt;Nini&amp;gt;\n&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 walkTree($parent, $inputRoot, 0, &amp;quot;0&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 print INVFDATOUT &amp;quot;&amp;lt;/Nini&amp;gt;\n&amp;quot;;&lt;br /&gt;
 print INVIDATOUT &amp;quot;&amp;lt;/Nini&amp;gt;\n&amp;quot;;&lt;br /&gt;
 print ASSETDATOUT &amp;quot;&amp;lt;/Nini&amp;gt;\n&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 close(INVFDATOUT);&lt;br /&gt;
 close(INVIDATOUT);&lt;br /&gt;
 close(ASSETDATOUT);&lt;br /&gt;
 &lt;br /&gt;
 sub walkTree() {&lt;br /&gt;
 &lt;br /&gt;
     local $parent = shift;&lt;br /&gt;
     local $thisDir = shift;&lt;br /&gt;
     local $level = shift;&lt;br /&gt;
     local $atype = shift;&lt;br /&gt;
     local @dirs = ();&lt;br /&gt;
     local @files = ();&lt;br /&gt;
 &lt;br /&gt;
     opendir(HOMEDIR, $thisDir) || die(&amp;quot;unable to open directory&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
     while($filename = readdir(HOMEDIR)) {&lt;br /&gt;
 &lt;br /&gt;
         if( -d ($thisDir . &amp;quot;/&amp;quot; . $filename) ) {&lt;br /&gt;
            if( ($filename eq &amp;quot;.&amp;quot;) || ($filename eq &amp;quot;..&amp;quot;) || ($filename eq &amp;quot;.svn&amp;quot;)) {next;}&lt;br /&gt;
            push(@dirs, $filename);&lt;br /&gt;
 	}&lt;br /&gt;
     else {&lt;br /&gt;
           if( substr($filename, -4) eq &amp;quot;.jp2&amp;quot; || substr($filename, -4) eq &amp;quot;.lsl&amp;quot;) {&lt;br /&gt;
               push(@files, $filename);&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    closedir(HOMEDIR);&lt;br /&gt;
 &lt;br /&gt;
    $uuidGen = new Data::UUID;&lt;br /&gt;
    $thisFolder = $uuidGen-&amp;gt;create_str();&lt;br /&gt;
 &lt;br /&gt;
    print(&amp;quot;Processing:&amp;quot; . $fName . &amp;quot;\n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
    if($_ eq &amp;quot;&amp;quot;) {&lt;br /&gt;
        $fName = $libName;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        $fName = $_;&lt;br /&gt;
    }&lt;br /&gt;
    if($level == 1) {&lt;br /&gt;
        $assetType = getType($fName);&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
    $assetType = $atype;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    writeFolder($fName, $thisFolder, $parent, $assetType);&lt;br /&gt;
 &lt;br /&gt;
    foreach(@files) {&lt;br /&gt;
    $assetID = writeAsset($thisDir, $_, $assetType);&lt;br /&gt;
    writeItem($_, $assetID, $thisFolder, $assetType);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    $parent = $thisFolder;&lt;br /&gt;
 &lt;br /&gt;
    $level ++;&lt;br /&gt;
    foreach(@dirs) {&lt;br /&gt;
  &lt;br /&gt;
           walkTree($parent, ($thisDir . &amp;quot;/&amp;quot; . $_), $level, $assetType);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    print(&amp;quot;\n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 sub getType() {&lt;br /&gt;
 &lt;br /&gt;
 $assetType = shift;&lt;br /&gt;
 &lt;br /&gt;
    if( index($assetType, &amp;quot;lsl&amp;quot;, 0) &amp;gt; 0 || index($assetType, &amp;quot;script&amp;quot;, 0) &amp;gt; 0 )&lt;br /&gt;
    {&lt;br /&gt;
        return &amp;quot;10&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        return &amp;quot;0&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 sub writeFolder() {&lt;br /&gt;
 &lt;br /&gt;
    $name = shift;&lt;br /&gt;
    $folderID = shift;&lt;br /&gt;
    $parentID = shift;&lt;br /&gt;
    $type = shift;&lt;br /&gt;
 &lt;br /&gt;
    print INVFDATOUT &amp;quot;&amp;lt;Section Name=\&amp;quot;&amp;quot; . $name . &amp;quot; \&amp;quot;&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVFDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;folderID\&amp;quot; Value=\&amp;quot;&amp;quot; . $folderID . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVFDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;parentFolderID\&amp;quot; Value=\&amp;quot;&amp;quot; . $parentID . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVFDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;name\&amp;quot; Value=\&amp;quot;&amp;quot; . $name . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVFDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;type\&amp;quot; Value=\&amp;quot;&amp;quot;.$type.&amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVFDATOUT &amp;quot;&amp;lt;/Section&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVFDATOUT &amp;quot;\n&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 sub writeItem() {&lt;br /&gt;
    $name = shift;&lt;br /&gt;
    $assetID = shift;&lt;br /&gt;
    $folderID = shift;&lt;br /&gt;
    $type = shift;&lt;br /&gt;
 &lt;br /&gt;
    $uuidGen = new Data::UUID;&lt;br /&gt;
    $inventoryID = $uuidGen-&amp;gt;create_str();&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Section Name=\&amp;quot;&amp;quot; . $name . &amp;quot;\&amp;quot;&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;inventoryID\&amp;quot; Value=\&amp;quot;&amp;quot; . $inventoryID . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;assetID\&amp;quot; Value=\&amp;quot;&amp;quot; . $assetID . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;folderID\&amp;quot; Value=\&amp;quot;&amp;quot; . $folderID . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;name\&amp;quot; Value=\&amp;quot;&amp;quot; . $name . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;description\&amp;quot; Value=\&amp;quot;&amp;quot; . $name . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;assetType\&amp;quot; Value=\&amp;quot;&amp;quot;.$type.&amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;inventoryType\&amp;quot; Value=\&amp;quot;&amp;quot;.$type.&amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;currentPermissions\&amp;quot; Value=\&amp;quot;2147483647\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;nextPermissions\&amp;quot; Value=\&amp;quot;2147483647\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;everyonePermissions\&amp;quot; Value=\&amp;quot;2147483647\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;basePermissions\&amp;quot; Value=\&amp;quot;2147483647\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;/Section&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;\n&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
     &lt;br /&gt;
 sub writeAsset() {&lt;br /&gt;
 &lt;br /&gt;
    $dir = shift;&lt;br /&gt;
    $name = shift;&lt;br /&gt;
    $type = shift;&lt;br /&gt;
 &lt;br /&gt;
    $uuidGen = new Data::UUID;&lt;br /&gt;
    $assetID = $uuidGen-&amp;gt;create_str();&lt;br /&gt;
 &lt;br /&gt;
    print ASSETDATOUT &amp;quot;&amp;lt;Section Name=\&amp;quot;&amp;quot; . $name . &amp;quot;\&amp;quot;&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print ASSETDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;assetID\&amp;quot; Value=\&amp;quot;&amp;quot; . $assetID . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print ASSETDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;name\&amp;quot; Value=\&amp;quot;&amp;quot; . $name . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print ASSETDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;assetType\&amp;quot; Value=\&amp;quot;&amp;quot;.$type.&amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print ASSETDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;inventoryType\&amp;quot; Value=\&amp;quot;&amp;quot;.$type.&amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print ASSETDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;fileName\&amp;quot; Value=\&amp;quot;&amp;quot; . $dir . &amp;quot;/&amp;quot; . $name . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print ASSETDATOUT &amp;quot;&amp;lt;/Section&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print ASSETDATOUT &amp;quot;\n&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
    return $assetID;&lt;br /&gt;
  &lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>MarcelEdward</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Assets_generator</id>
		<title>Assets generator</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Assets_generator"/>
				<updated>2010-08-04T22:17:33Z</updated>
		
		<summary type="html">&lt;p&gt;MarcelEdward: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Template:Quicklinks}}&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
This script generates the XML files needed to create a new asset set and associated inventory libraries for OpenSim.Given a directory tree of jp2 and lsl files, and it will traverse the tree and generate the assets file, the inventory folder file, and the inventory items file.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
* Put the code in a file named genassets.pl, and copy it to your library preparation directory (/opt/opensim/library)&lt;br /&gt;
* Download the [http://github.com/tokuhirom/data-uuid/downloads perl UUID module]&lt;br /&gt;
* Install the UUID module&lt;br /&gt;
 perl Makefile.PL&lt;br /&gt;
 make&lt;br /&gt;
 make test&lt;br /&gt;
 make install&lt;br /&gt;
* Create Asset directories&lt;br /&gt;
 mkdir /opt/opensim/production/bin/inventory/MyCoolOpenSimLibrary/&lt;br /&gt;
 mkdir /opt/opensim/production/bin/assets/MyCoolOpenSimAssetSet/&lt;br /&gt;
* Launch script (Adds the content in /opt/opensim/production/library to the OpenSim inventory/asset storage)&lt;br /&gt;
 perl /opt/opensim/production/library/genassets.pl&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
 ######################################&lt;br /&gt;
 #&lt;br /&gt;
 # genassets.pl&lt;br /&gt;
 #&lt;br /&gt;
 # by: Illuminous Beltran/IBM&lt;br /&gt;
 #&lt;br /&gt;
 # This script generates the XML files&lt;br /&gt;
 # needed to create a new asset set&lt;br /&gt;
 # and associated inventory libraries&lt;br /&gt;
 # for OpenSim.&lt;br /&gt;
 #&lt;br /&gt;
 # Given a directory tree of jp2 and lsl&lt;br /&gt;
 # files, and it will traverse the tree&lt;br /&gt;
 # and generate the assets file, the &lt;br /&gt;
 # inventory folder file, and the&lt;br /&gt;
 # inventory items file.&lt;br /&gt;
 #&lt;br /&gt;
 # Requires the Data::UUID module&lt;br /&gt;
 #&lt;br /&gt;
 # http://search.cpan.org/~rjbs/Data-UUID-1.148/UUID.pm&lt;br /&gt;
 #&lt;br /&gt;
 ######################################&lt;br /&gt;
 use Data::UUID;&lt;br /&gt;
 &lt;br /&gt;
 # Library name&lt;br /&gt;
 $libName = &amp;quot;My Cool OpenSim Library&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 # Root of your library, where your&lt;br /&gt;
 # jp2 and lsl files are&lt;br /&gt;
 $inputRoot=&amp;quot;/opt/opensim/library&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 # Where to put the inventory files&lt;br /&gt;
 $invOutputDir=&amp;quot;/opt/opensim/production/bin/inventory/MyCoolOpenSimLibrary/&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 # Where to put the asset set file&lt;br /&gt;
 $assetOutputDir=&amp;quot;/opt/opensim/production/bin/assets/MyCoolOpenSimAssetSet/&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 # Root key for OpenSim library folder&lt;br /&gt;
 # This is a static value fixed in opensim&lt;br /&gt;
 # so you should not have to change it unless&lt;br /&gt;
 # it changes&lt;br /&gt;
 $rootFolder = &amp;quot;00000112-000f-0000-0000-000100bba000&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 # No user servicable parts below&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 $parent = $rootFolder;&lt;br /&gt;
 $treeLevel = 0;&lt;br /&gt;
 &lt;br /&gt;
 print(&amp;quot;ROOT FOLDER:&amp;quot; . $rootFolder . &amp;quot;\n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 open(INVFDATOUT,&amp;quot;&amp;gt;&amp;quot; . $invOutputDir . &amp;quot;3DDCInventoryFolders.xml&amp;quot;) || die(&amp;quot;Cannot Open Folders File&amp;quot;);&lt;br /&gt;
 print INVFDATOUT &amp;quot;&amp;lt;Nini&amp;gt;\n&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 open(INVIDATOUT,&amp;quot;&amp;gt;&amp;quot; . $invOutputDir . &amp;quot;3DDCInventoryItems.xml&amp;quot;) || die(&amp;quot;Cannot Open Items File&amp;quot;);&lt;br /&gt;
 print INVIDATOUT &amp;quot;&amp;lt;Nini&amp;gt;\n&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 open(ASSETDATOUT,&amp;quot;&amp;gt;&amp;quot; . $assetOutputDir . &amp;quot;3DDCAssetSet.xml&amp;quot;) || die(&amp;quot;Cannot Open Asset File&amp;quot;);&lt;br /&gt;
 print ASSETDATOUT &amp;quot;&amp;lt;Nini&amp;gt;\n&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 walkTree($parent, $inputRoot, 0, &amp;quot;0&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 print INVFDATOUT &amp;quot;&amp;lt;/Nini&amp;gt;\n&amp;quot;;&lt;br /&gt;
 print INVIDATOUT &amp;quot;&amp;lt;/Nini&amp;gt;\n&amp;quot;;&lt;br /&gt;
 print ASSETDATOUT &amp;quot;&amp;lt;/Nini&amp;gt;\n&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 close(INVFDATOUT);&lt;br /&gt;
 close(INVIDATOUT);&lt;br /&gt;
 close(ASSETDATOUT);&lt;br /&gt;
 &lt;br /&gt;
 sub walkTree() {&lt;br /&gt;
 &lt;br /&gt;
     local $parent = shift;&lt;br /&gt;
     local $thisDir = shift;&lt;br /&gt;
     local $level = shift;&lt;br /&gt;
     local $atype = shift;&lt;br /&gt;
     local @dirs = ();&lt;br /&gt;
     local @files = ();&lt;br /&gt;
 &lt;br /&gt;
     opendir(HOMEDIR, $thisDir) || die(&amp;quot;unable to open directory&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
     while($filename = readdir(HOMEDIR)) {&lt;br /&gt;
 &lt;br /&gt;
         if( -d ($thisDir . &amp;quot;/&amp;quot; . $filename) ) {&lt;br /&gt;
            if( ($filename eq &amp;quot;.&amp;quot;) || ($filename eq &amp;quot;..&amp;quot;) || ($filename eq &amp;quot;.svn&amp;quot;)) {next;}&lt;br /&gt;
            push(@dirs, $filename);&lt;br /&gt;
 	}&lt;br /&gt;
     else {&lt;br /&gt;
           if( substr($filename, -4) eq &amp;quot;.jp2&amp;quot; || substr($filename, -4) eq &amp;quot;.lsl&amp;quot;) {&lt;br /&gt;
               push(@files, $filename);&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    closedir(HOMEDIR);&lt;br /&gt;
 &lt;br /&gt;
    $uuidGen = new Data::UUID;&lt;br /&gt;
    $thisFolder = $uuidGen-&amp;gt;create_str();&lt;br /&gt;
 &lt;br /&gt;
    print(&amp;quot;Processing:&amp;quot; . $fName . &amp;quot;\n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
    if($_ eq &amp;quot;&amp;quot;) {&lt;br /&gt;
        $fName = $libName;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        $fName = $_;&lt;br /&gt;
    }&lt;br /&gt;
    if($level == 1) {&lt;br /&gt;
        $assetType = getType($fName);&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
    $assetType = $atype;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    writeFolder($fName, $thisFolder, $parent, $assetType);&lt;br /&gt;
 &lt;br /&gt;
    foreach(@files) {&lt;br /&gt;
    $assetID = writeAsset($thisDir, $_, $assetType);&lt;br /&gt;
    writeItem($_, $assetID, $thisFolder, $assetType);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    $parent = $thisFolder;&lt;br /&gt;
 &lt;br /&gt;
    $level ++;&lt;br /&gt;
    foreach(@dirs) {&lt;br /&gt;
  &lt;br /&gt;
           walkTree($parent, ($thisDir . &amp;quot;/&amp;quot; . $_), $level, $assetType);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    print(&amp;quot;\n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 sub getType() {&lt;br /&gt;
 &lt;br /&gt;
 $assetType = shift;&lt;br /&gt;
 &lt;br /&gt;
    if( index($assetType, &amp;quot;lsl&amp;quot;, 0) &amp;gt; 0 || index($assetType, &amp;quot;script&amp;quot;, 0) &amp;gt; 0 )&lt;br /&gt;
    {&lt;br /&gt;
        return &amp;quot;10&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        return &amp;quot;0&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 sub writeFolder() {&lt;br /&gt;
 &lt;br /&gt;
    $name = shift;&lt;br /&gt;
    $folderID = shift;&lt;br /&gt;
    $parentID = shift;&lt;br /&gt;
    $type = shift;&lt;br /&gt;
 &lt;br /&gt;
    print INVFDATOUT &amp;quot;&amp;lt;Section Name=\&amp;quot;&amp;quot; . $name . &amp;quot; \&amp;quot;&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVFDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;folderID\&amp;quot; Value=\&amp;quot;&amp;quot; . $folderID . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVFDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;parentFolderID\&amp;quot; Value=\&amp;quot;&amp;quot; . $parentID . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVFDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;name\&amp;quot; Value=\&amp;quot;&amp;quot; . $name . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVFDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;type\&amp;quot; Value=\&amp;quot;&amp;quot;.$type.&amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVFDATOUT &amp;quot;&amp;lt;/Section&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVFDATOUT &amp;quot;\n&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 sub writeItem() {&lt;br /&gt;
    $name = shift;&lt;br /&gt;
    $assetID = shift;&lt;br /&gt;
    $folderID = shift;&lt;br /&gt;
    $type = shift;&lt;br /&gt;
 &lt;br /&gt;
    $uuidGen = new Data::UUID;&lt;br /&gt;
    $inventoryID = $uuidGen-&amp;gt;create_str();&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Section Name=\&amp;quot;&amp;quot; . $name . &amp;quot;\&amp;quot;&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;inventoryID\&amp;quot; Value=\&amp;quot;&amp;quot; . $inventoryID . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;assetID\&amp;quot; Value=\&amp;quot;&amp;quot; . $assetID . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;folderID\&amp;quot; Value=\&amp;quot;&amp;quot; . $folderID . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;name\&amp;quot; Value=\&amp;quot;&amp;quot; . $name . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;description\&amp;quot; Value=\&amp;quot;&amp;quot; . $name . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;assetType\&amp;quot; Value=\&amp;quot;&amp;quot;.$type.&amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;inventoryType\&amp;quot; Value=\&amp;quot;&amp;quot;.$type.&amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;currentPermissions\&amp;quot; Value=\&amp;quot;2147483647\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;nextPermissions\&amp;quot; Value=\&amp;quot;2147483647\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;everyonePermissions\&amp;quot; Value=\&amp;quot;2147483647\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;basePermissions\&amp;quot; Value=\&amp;quot;2147483647\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;&amp;lt;/Section&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print INVIDATOUT &amp;quot;\n&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
     &lt;br /&gt;
 sub writeAsset() {&lt;br /&gt;
 &lt;br /&gt;
    $dir = shift;&lt;br /&gt;
    $name = shift;&lt;br /&gt;
    $type = shift;&lt;br /&gt;
 &lt;br /&gt;
    $uuidGen = new Data::UUID;&lt;br /&gt;
    $assetID = $uuidGen-&amp;gt;create_str();&lt;br /&gt;
 &lt;br /&gt;
    print ASSETDATOUT &amp;quot;&amp;lt;Section Name=\&amp;quot;&amp;quot; . $name . &amp;quot;\&amp;quot;&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print ASSETDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;assetID\&amp;quot; Value=\&amp;quot;&amp;quot; . $assetID . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print ASSETDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;name\&amp;quot; Value=\&amp;quot;&amp;quot; . $name . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print ASSETDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;assetType\&amp;quot; Value=\&amp;quot;&amp;quot;.$type.&amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print ASSETDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;inventoryType\&amp;quot; Value=\&amp;quot;&amp;quot;.$type.&amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print ASSETDATOUT &amp;quot;&amp;lt;Key Name=\&amp;quot;fileName\&amp;quot; Value=\&amp;quot;&amp;quot; . $dir . &amp;quot;/&amp;quot; . $name . &amp;quot;\&amp;quot; /&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print ASSETDATOUT &amp;quot;&amp;lt;/Section&amp;gt;\n&amp;quot;;&lt;br /&gt;
    print ASSETDATOUT &amp;quot;\n&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
    return $assetID;&lt;br /&gt;
  &lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>MarcelEdward</name></author>	</entry>

	</feed>