function ReadBlbFile(%input){ if(isFile(%input)) { %file = new fileObject(); %file.openForRead(%input); $CBLBDat = new ScriptObject(){}; $CBLBDat.fc = "0"; $CBLBDat.lc = "0"; $CBLBDat.size = %file.readLine(); while(!%file.isEOF()) { %line = %file.readLine(); if(%line $= "POSITION:") { $CBLBDat.face[$CBLBDat.fc] = new ScriptObject(){}; $CBLBDat.face[$CBLBDat.fc].vertex1 = %file.readLine(); $CBLBDat.face[$CBLBDat.fc].vertex2 = %file.readLine(); $CBLBDat.face[$CBLBDat.fc].vertex3 = %file.readLine(); $CBLBDat.face[$CBLBDat.fc].vertex4 = %file.readLine(); %file.readLine(); $CBLBDat.face[$CBLBDat.fc].uv1 = %file.readLine(); $CBLBDat.face[$CBLBDat.fc].uv2 = %file.readLine(); $CBLBDat.face[$CBLBDat.fc].uv3 = %file.readLine(); $CBLBDat.face[$CBLBDat.fc].uv4 = %file.readLine(); %nextline = %file.readLine(); if(%nextline $= "COLORS:") { $CBLBDat.face[$CBLBDat.fc].color1 = %file.readLine(); $CBLBDat.face[$CBLBDat.fc].color2 = %file.readLine(); $CBLBDat.face[$CBLBDat.fc].color3 = %file.readLine(); $CBLBDat.face[$CBLBDat.fc].color4 = %file.readLine(); } %file.readLine(); $CBLBDat.face[$CBLBDat.fc].normal = %file.readLine(); %file.readLine(); %file.readLine(); %file.readLine(); $CBLBDat.fc++; } if(!$CBLBDat.fc) { $CBLBDat.line[$CBLBDat.lc] = %line; $CBLBDat.lc++; } } }}function SameVertexCount(%face1, %face2) //Checks if 2 faces could be in the same quad{ if(%face1.normal1 $= %face2.normal1) { %samecount = 0; for(%a=1;%a<5;%a++) { if(%face1.vertex[%a] $= %face2.vertex1) %sameCount++; if(%face1.vertex[%a] $= %face2.vertex2) %sameCount++; if(%face1.vertex[%a] $= %face2.vertex3) %sameCount++; if(%face1.vertex[%a] $= %face2.vertex4) %sameCount++; } return %samecount; } return 0;}function getUncommonVertex(%face1, %face2) //Returns the vertex that they don't share{ %vertexExist[%face1.vertex1]++; %vertexExist[%face1.vertex2]++; %vertexExist[%face1.vertex3]++; %vertexExist[%face1.vertex4]++; %vertexExist[%face2.vertex1]++; %vertexExist[%face2.vertex2]++; %vertexExist[%face2.vertex3]++; %vertexExist[%face2.vertex4]++; for(%a=1;%a<5;%a++) { if(%vertexExist[%face2.vertex[%a]] < 2) return %a; }}function exportBLBFile(%output){ %file = new FileObject(); %file.openForWrite(%output); %file.writeline($CBLBDat.size); for(%a=0;%a<$CBLBDat.lc;%a++) %file.writeLine($CBLBDat.line[%a]); for(%a=0;%a<$CBLBDat.fc;%a++) { for(%b=$CBLBDat.fc;%b>0;%b--) { if(isObject($CBLBDat.face[%b]) && $CBLBDat.face[%b] != $CBLBDat.face[%a]) { if(SameVertexCount($CBLBDat.face[%a],$CBLBDat.face[%b])) { %vert = getUncommonVertex($CBLBDat.face[%a],$CBLBDat.face[%b]); $CBLBDat.face[%a].vertex[%vert] = $CBLBDat.face[%b].vertex[%vert]; $CBLBDat.face[%b].delete(); } } } } for(%a=0;%a<$CBLBDat.fc;%a++) { if(isObject($CBLBDat.face[%a])) { %fc++; %file.writeline("TEX:SIDE"); %file.writeline("POSITION:"); %file.writeline($CBLBDat.face[%a].vertex1); %file.writeline($CBLBDat.face[%a].vertex2); %file.writeline($CBLBDat.face[%a].vertex3); %file.writeline($CBLBDat.face[%a].vertex4); %file.writeline("UV COORDS:"); %file.writeline($CBLBDat.face[%a].uv1); %file.writeline($CBLBDat.face[%a].uv2); %file.writeline($CBLBDat.face[%a].uv3); %file.writeline($CBLBDat.face[%a].uv4); if(getWordCount($CBLBDat.face[%a].color1)) { %file.writeline("COLORS:"); %file.writeline($CBLBDat.face[%a].color1); %file.writeline($CBLBDat.face[%a].color2); %file.writeline($CBLBDat.face[%a].color3); %file.writeline($CBLBDat.face[%a].color4); } %file.writeline("NORMALS:"); %file.writeline($CBLBDat.face[%a].normal); %file.writeline($CBLBDat.face[%a].normal); %file.writeline($CBLBDat.face[%a].normal); %file.writeline($CBLBDat.face[%a].normal); %file.writeline(""); } } %file.writeline(%fc); %file.close();}