All pastes #1960419 Raw Edit

Something

public python v1 · immutable
#1960419 ·published 2010-10-12 21:31 UTC
rendered paste body
import sysimport reimport mathvertexmatcher = re.compile(r"v (.*?) (.*?) (.*)")trimatcher = re.compile(r"f (.*?) (.*?) (.*)")quadmatcher = re.compile(r"f (.*?) (.*?) (.*?) (.*)")indexmatcher = re.compile(r"([0-9]*)\/\/([0-9]*)")def getvindex(indexline):	vindexmatch = indexmatcher.match(indexline)	if vindexmatch:		return vindexmatch.group(1)	else:		return indexlinefilenamematcher = re.compile(r"(.*)\..*?$")filenamematcher2 = re.compile(r".*[/\\](.*?)$")objfile = open(sys.argv[1])filenamematch = filenamematcher.match(sys.argv[1])outputname = filenamematch.group(1)objnamematch = filenamematcher2.match(filenamematch.group(1))objname = objnamematch.group(1)vertices = []fifoObjects = []class FifoObject:	def __init__(self):		self.command = ""		self.data = []while 1:	line = objfile.readline()	if not line:		break	vertexmatch = vertexmatcher.match(line)	if vertexmatch:		vertices.append((vertexmatch.group(1), vertexmatch.group(2), vertexmatch.group(3)))		continue	quadmatch = quadmatcher.match(line)	if quadmatch:		fifoObject = FifoObject()		fifoObject.command = "FIFO_BEGIN"		fifoObject.data.append("GL_QUAD")		fifoObjects.append(fifoObject)		for i in range(1,4+1):			fifoObject = FifoObject()			fifoObject.command = "FIFO_VERTEX16"			vertex = vertices[int(getvindex(quadmatch.group(i)))-1]			fifoObject.data.append("VERTEX_PACK(floattov16(" + vertex[0]				+ "), floattov16(" + vertex[1] + "))")			fifoObject.data.append("VERTEX_PACK(floattov16(" + vertex[2]				+ "), 0)")			fifoObjects.append(fifoObject)		continue		# do the crazy fifocommand packingwhile (len(fifoObjects) % 4) > 0:	fifoObject = FifoObject()	fifoObject.command = "FIFO_END"	fifoObjects.append(fifoObject)#fifopack = []#fifocounter = 0#while fifocounter < len(fifocommand):#	fifopack.append("FIFO_COMMAND_PACK(" + fifocommand[fifocounter] + ", "#		+ fifocommand[fifocounter + 1] + ", "#		+ fifocommand[fifocounter + 2] + ", "#		+ fifocommand[fifocounter + 3] + ")")#	fifocounter += 4	#i = 0#datacounter = 0#print len(fifodata)#for packedcommand in fifopack:#	cfile.write(", \n" + packedcommand)#	datasubcounter = 0#	while datasubcounter < 4:#		print datacounter#		cfile.write(", " + fifodata[datacounter])#		if fifodata[datacounter].startswith("VERTEX_PACK"):#			datacounter += 1#			cfile.write(", " + fifodata[datacounter])#		datasubcounter += 1#		datacounter += 1finaloutput = ""length = 0for i in range(0,len(fifoObjects)):	if (i % 4) == 0:		finaloutput += (", FIFO_COMMAND_PACK(" + fifoObjects[i].command + ", "			+ fifoObjects[i + 1].command + ", "			+ fifoObjects[i + 2].command + ", "			+ fifoObjects[i + 3].command + ")")		length += 1	for data in fifoObjects[i].data:		finaloutput += ", " + data		length += 1	# interleave it all togethercfile = open(outputname + "Model.c", 'w')cfile.write("// created by AWESOME SCRIPT!\n")cfile.write("#include <nds.h>\n")cfile.write("const u32 " + objname + "Model[] = { " + str(length))cfile.write(finaloutput)cfile.write(" };")hfile = open(outputname + "Model.h", 'w')hfile.write("extern const u32 " + objname + "Model[];\n")