Community
3ds Max Modeling
Welcome to Autodesk’s 3ds Max Forums. Share your knowledge, ask questions, and explore popular 3ds Max modeling topics.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

3DMax GMT plugins

0 REPLIES 0
Reply
Message 1 of 1
Anonymous
5149 Views, 0 Replies

3DMax GMT plugins

Hi I have a plugin that I use for Modelling Ciruits and Cars for a game called rFacotr2

To be able to import from the game to 3D Max and then Back again it needs 3DMax2010_32bit_plugins_pack unfortunalty this is only good for Max 2010. What I would like to know Is How would I go about updating 3DMax2010_32bit_plugins_pack to work with Max 2014

I am very new to these forums and I am hunting for my answer but I do not really know if it a plugin or MaxScript or if they are 1 and the same thing, any information that could be shared would be amazing.

I have added the plugin just in case it is eaier to update than to teach me how it is done this may be a quick thing if you are a person that understand this or it might be a case of totally starting again a rewriting the plugin.

 

Many Thanks for your ongoing support in this request Smiley Wink

 

 

-----------------------------------------------------------------------
------------------GMT2.26(rFactor) Importer v0.94 by Zoltán Nagy-------
---------------------- Modified by Peter Holt 15/12/05
--------------------------Copy me to scripts\startup-------------------
---------------Feel free to improve this script in any way you can-----
----------------------------------------------------------------------- 	
	

utility ImportGMT2 "GMT2 Importer" width:161 height:303
(
	GroupBox grp1 "About" pos:[3,4] width:156 height:35
	label lbl1 "GMT2 Importer v0.94 by ZN" pos:[13,20] width:138 height:17
	button btnImportFile "Import a single file" pos:[15,229] width:124 height:26
	GroupBox grp2 "Options" pos:[2,50] width:158 height:162
	button btnImportDir "Import  a directory" pos:[15,267] width:124 height:23
	label lbl2 "Additional texture path:" pos:[16,64] width:128 height:16
	edittext edt1 "" pos:[8,80] width:103 height:16
	checkbox chkReload "Reload existing materials" pos:[12,104] width:135 height:19
	GroupBox grp4 "Import" pos:[-1,210] width:160 height:87
	button btnPath "Change" pos:[111,81] width:43 height:16
	checkbox chkAskTexes "Ask for missing textures" pos:[12,126] width:142 height:13 checked:true
	radioButtons rdoSmoothing "Smoothing" pos:[12,145] width:111 height:62 labels:#("No smoothing", "Smooth everything", "Proper smoothing") default:3 columns:1

	local gShaderNames
	local globalSearchPath
	



	fn FindStringInArray inArray inString=
	(
		local index=0
		for i=1 to inArray.count do
		(
			if ((stricmp inArray[i] inString)==0) then 
			(
				index=i
				exit
			)
		)
		index
	)

	fn ReadShaderNames= 
	(
		shaderFiles=#("bumpmap.gfx","cubemap.gfx","diffuse.gfx","specular.gfx")
		shaderDir=((GetDir #maxroot)+"hardwareshaders\\")
		for i=1 to shaderFiles.count do
		(
			file=openFile (shaderDir+shaderFiles[i]) mode:"rt"
			if file != undefined then 
			(
				do 
				(
					lineInFile=readLine file
					words=filterString lineInFile "="
					if words.count>1 then 
					(
						if (words[1]=="ShaderName") then 
						(
							shaderLevel=(execute words[2][2])+1
							if (findItem gShaderNames[shaderLevel] words[2])==0 then append (gShaderNames[shaderLevel]) words[2]
						)
					)

				) while ((eof file)==false)
				close file
			) else messageBox "Error opening .gfx files. Extract them to 3dsmax\\hardwareshaders."
		)
	--print shaderNames[3].count
	)



	fn ImportGMT filename=
	(
		local d3dBlendArray=#("ZERO","ONE","SRC COLOR","INV SRC COLOR","SRC ALPHA","INV SRC ALPHA","DST ALPHA","INV DST ALPHA","DST COLOR","INV DST COLOR")
		local animMethodsArray=#("Cycle","One shot","Pendulum","Transient","Random","Manual")
		
		gmtPath=getFileNamePath filename
		file=fopen fileName "rb"
		if file != undefined then 
		(
-----------------------------------------------------------------------
------------------------Process the Materials first---------------------
----------------------------------------------------------------------- 	

			matEditor.Open()
			medit.setActiveMtlSlot 12 true
			
			matIDs=#()

			offsetMaterials=(ReadLong file)+4  --start of the material section in the gmt
			fseek file (offsetMaterials) #seek_set  --jump there
			numMaterials=ReadLong file  --number of materials

			if ((classof meditMaterials[1])!=multiMaterial) then  meditMaterials[1]=multiMaterial numsubs:1
			for m = 1 to numMaterials do
			(
				startingPos=ftell file   --store the start of this material
				matName=ReadString file  --name of the material
				newMatID=0
				isNewMat=true
				numSubs=meditMaterials[1].numSubs
				--look for this material in the material editor
				for sm=1 to numSubs do
				(
					if ((stricmp meditMaterials[1].materialList[sm].name matName)==0) then 
					(
						newMatID=sm
						isNewMat=false
						exit
					)
				)
				local mat
				--create new gMat if it wasn't found
				if (newMatID==0) then 
				(
					if ((classof meditMaterials[1].materialList[numSubs])==gMotorMaterial) 
					then (newMatID=numSubs+1)	else (newMatID=numSubs)
					mat=meditMaterials[1].materialList[newMatID]=gMotorMaterial()
					mat.name=matName
					meditMaterials[1].names[newMatID]=matName
				) else mat=meditMaterials[1].materialList[newMatID]
				--keep the actual material ID for later
				append matIDs newMatID
			
				if (isNewMat==true or chkReload.checked==true) then medit.putMtltoMtlEditor mat 12
			
-----------------------------------------------------------------------
------------------------Material Properties----------------------------
----------------------------------------------------------------------- 	
				fseek file (startingPos+64) #seek_set
				matProperties=ReadLong file  --see below for details
				ambientRed=ReadFloat file
				ambientGreen=ReadFloat file
				ambientBlue=ReadFloat file
				ambientAlpha=ReadFloat file
				diffuseRed=ReadFloat file
				diffuseGreen=ReadFloat file
				diffuseBlue=ReadFloat file
				diffuseAlpha=ReadFloat file
				specularRed=ReadFloat file
				specularGreen=ReadFloat file
				specularBlue=ReadFloat file
				specularAlpha=ReadFloat file
				emissiveRed=ReadFloat file
				emissiveGreen=ReadFloat file
				emissiveBlue=ReadFloat file
				emissiveAlpha=ReadFloat file
				sourceBlend=ReadLong file
				destBlend=ReadLong file
				specularPower=ReadFloat file
	
				local ambientM,diffuseM,emissiveM,specularM
				if ((bit.and matProperties 0x200000)==0) then ambientM=true else ambientM=false
				if ((bit.and matProperties 0x1000000)==0) then diffuseM=true else diffuseM=false
				if ((bit.and matProperties 0x20000000)!=0) then emissiveM=true else emissiveM=false
				if ((bit.and matProperties 0x4000000)!=0) then specularM=true else specularM=false
			
				local specular,noZBuffer,twoSided,postShadow
				if ((bit.and matProperties 0x40)!=0) then specular=true else specular=false
				if ((bit.and matProperties 0x100)!=0) then noZBuffer=true else noZBuffer=false
				if ((bit.and matProperties 0x800)!=0) then twoSided=true else twoSided=false	
				if ((bit.and matProperties 0x10000)!=0) then postShadow=true else postShadow=false
				
				--they are just printed into the Listener for now
				if (isNewMat==true or chkReload.checked==true) then 
				(
					format "\nMaterial name: %\n"	matName
					if (ambientRed!=1.0 or ambientBlue!=1.0 or ambientGreen!=1.0 or ambientM==false) then format "Ambient: %	%	%	M: %\n" (255*ambientRed) (255*ambientGreen) (255*ambientBLue) (ambientM)
					if (diffuseRed!=1.0 or diffuseBlue!=1.0 or diffuseGreen!=1.0 or diffuseM==false) then format "Diffuse: %	%	%	M: %	Alpha: %\n" (255*diffuseRed) (255*diffuseGreen) (255*diffuseBLue) diffuseM (255*diffuseAlpha)
					if (emissiveRed!=0.0 or emissiveBlue!=0.0 or emissiveGreen!=0.0) then format "Emissive: %	%	%	M: %\n" (255*emissiveRed) (255*emissiveGreen) (255*emissiveBLue) emissiveM
					if (specularRed!=0.0 or specularBlue!=0.0 or specularGreen!=0.0) then format "Specular: %	%	%	M: %	Power: %\n" (255*specularRed) (255*specularGreen) (255*specularBLue) specularM specularPower
					if (specular==true) then format "specular: %	\n" specular 	
					if (noZBuffer==true) then format "noZbuffer: %	\n" noZBuffer 
					if (twoSided==true) then format "twoSided: %	\n" twoSided 
					if (postShadow==true) then format "postShadow: %	\n" postShadow
					if (sourceBlend!=2 or destBlend!=1) then format "Source blend: %	Dest Blend: %\n" d3dBlendArray[sourceBlend] d3dBlendArray[destBlend] 
				)

-----------------------------------------------------------------------
------------------------3 Shader Desecriptors--------------------------
----------------------------------------------------------------------- 	
			
				startTextures =#(0,0,0)
				numTextures =#(0,0,0)
				shaderNameIndices =#(0,0,0)
		
				for s = 1 to 3 do
				(
				
					startingPos=ftell file  --store current position
				    startTextures[s]=ReadLong file  --index of the first texture stage for this shader
					numTextures[s]=ReadLong file  --number of texture stages for this shader
					shaderName=ReadString file --name of this shader
					if (s==1 and shaderName=="L1SPECULARMAPT0") then shaderName="L0SPECULARMAPT0" --hard-coded fix for a bug in specular.gfx
					shaderNameIndices[s]=FindStringInArray gShaderNames[s] shaderName
			
					fseek file (startingPos+264) #seek_set
	
				)
				fseek file 32 #seek_cur  --sometimes this 32 bytes contains something
				numTexturesSum=ReadLong file  --sum of all texturestages
				
				for s = 1 to 3 do
				(
					--set the 2 shader comboboxes
					if (isNewMat==true or chkReload.checked==true) then 
					(
						mat.shaderClass=s
						mat.shaderSelect=shaderNameIndices[s]
					)
-----------------------------------------------------------------------
------------------------Texture Stages---------------------------------
----------------------------------------------------------------------- 	
					for t = 1 to numtextures[s] do
					(
	
						startingPos=ftell file       --start of this texturestage in the file
						textureName=ReadString file  --exactly that
						fseek file (startingPos+64) #seek_set --strings are 64 bytes long so jump!
				 	    texProp1=ReadByte file      --texture stage properties
				 	    texProp2=ReadByte file
				 	    anisoLevel=ReadByte file  --not sure, doesn't work in editor
				 	    trash=ReadByte file  
				 	    mipLevel=ReadLong file #signed
				 	    animFrames=ReadLong file
						animType=0
						local animMethod,animRate,animSeqStr
						if (animFrames!=1) then  --some extra stuff to read when animation source==texture maps
						(
							animType=1
							lengthSeq=ReadLong file
							animSeqStr=stringStream "("  --print the anim sequence into a string
							seek animSeqStr 1
							for l = 1 to lengthSeq do
							(
								format "%," (ReadLong file) to:animSeqStr
							)
							seek animSeqStr (lengthSeq*2)
							format ")"  to:animSeqStr
							close animSeqStr 
							animMethod=ReadLong file
							animRate=ReadFloat file
						)
				 	    stageType=ReadLong file  --??
				 		if (stageType==7) then  --this happens when animation source==animation file, ie .bik
						(
							animType=2
							fseek file 12 #seek_cur
						) else 
						(
							ukn4=ReadLong file
						)
						cubeMapBlend=ReadFloat file   --blend factor between base and cube texture usually
					    indexStage=ReadLong file  --just index of tex. stage, or texture coordinate set, or both?
    					ukn5=ReadLong file
				 	    chromaBlue=ReadByte file #unsigned  --transparent color
				 		chromaGreen=ReadByte file #unsigned
				 		chromaRed=ReadByte file #unsigned
				 		chromaAlpha=ReadByte file #unsigned
				 		alphaRef=ReadLong file  --alpha reference value for alpha testing
				 		lodBias=ReadFloat file
										
						fseek file 64 #seek_cur  --64 bytes of trash, probably for later use
							
						--now bang everything into to gmotortexture class, when texturename!=MATH
					
						if (textureName!="MATH") and (isNewMat==true or chkReload.checked==true) then 
						(
							try (
							local texture
							case s of    --three gTex arrays for the 3 shaderlevels
							(
								1: texture=mat.mtl_tex0[t]
								2: texture=mat.mtl_tex1[t]
								3: texture=mat.mtl_tex2[t]
							)
				
							local myBitmap
							shortName=getFileNameFile textureName
							if animType==1 then shortName+="00"   --to find animated textures like sky00.dds
							try myBitmap=openbitmap (gmtPath+shortName+".dds")    --very nasty way to find the textures
							catch 
							(
								try myBitmap=openbitmap (gmtPath+shortName+".tga")
								catch 
								(
									try myBitmap=openbitmap (globalSearchPath+shortName+".dds")
									catch 
									(
										try myBitmap=openbitmap (globalSearchPath+shortName+".tga")
										catch	
										(
											try myBitmap=openbitmap (gmtPath+shortName+".bmp")
											catch 
											(
												try myBitmap=openbitmap (globalSearchPath+shortName+".bmp")
												catch	
												(
													if (chkAskTexes.checked==true)	then myBitmap=selectBitmap caption:("Please find: "+textureName)
												)
											)
										)
									)
								)
						
							)
							try 
							(
								if myBitmap!= undefined then texture.pb_bmap1=myBitmap
							)
							catch ()
							if (findString shortName "_CUBE")!= undefined then format "Cube map: %	in Mat: %	ShaderLevel: %	TexStage: %\n" (textureName) (matName) s t

						
							if animType!=0 then
							(
								texture.animType=animType
								texture.animNameEdit=textureName
								if animType==1 then
								(
									texture.animSeqEdit =(animSeqStr as string)
									texture.animRate=animRate
									texture.animFrames=animFrames
									texture.animMethod=animMethod
									format "Animation method: %	in Mat: %	ShaderLevel: %	TexStage: %\n" (animMethodsArray[animMethod]) (matName) s t

								)
 						
							)
						
						
							if (bit.and texProp1 0x80)!=0 then 
							(
								texture.useChroma=on
								texture.chromaColor=color chromaRed chromaGreen chromaBlue 
															
							)
							if (bit.and texProp1 0x1)!=0 then texture.noReduce=on
							if (bit.and texProp2 0x80)!=0 then texture.noCompress=on
							if (bit.and texProp2 0x1)!=0 then texture.uniqueTex=on
												
							texture.coordinates.mapChannel=t     --texture coordinates channel
							texture.blendPct=cubeMapBlend*100
													
							if alphaRef<0x3f then texture.chromaBlend=3   --translate alpha reference into chromaBlend
							else if alphaRef<0x7f then texture.chromaBlend=2
							else if alphaRef<0xbf then texture.chromaBlend=1
							else texture.chromaBlend=0
							texture.mipBias=lodBias					
						
							texture.mipType=1
							if mipLevel==-1 then texture.MIPLevel=0 
							else texture.MIPLevel=mipLevel
							texture.filterType=bit.and texProp1 48
							texture.anisoLevel=anisoLevel
					
						
							try ( if (bit.and texProp1 0x2)!=0 then texture.renderTarget=on ) catch( format ""   )  --checking render target causes an exception
						
							if (s==1 and t==1) then showTextureMap mat texture on  --show the first dx7 texture

							
							) catch
							(
								format "Exception: %	Mat: %	ShaderLevel: %	TexStage: %\n" (getcurrentexception()) (matName) s t
									
							)
						)

				
					)
				)
		
				
		
			

			)
			try (
			medit.setActiveMtlSlot 1 true
	
-----------------------------------------------------------------------
------------------Get the world matrix and the pivot point-------------
----------------------------------------------------------------------- 	

			
			local isTransformed=false
			local matTransform,vecPivot
			fseek file (0xf4+4) #seek_set
			m11=ReadFloat file
			if m11!=0 then
			(
				m12=ReadFloat file
				m13=ReadFloat file
				m14=ReadFloat file
				m21=ReadFloat file
				m22=ReadFloat file
				m23=ReadFloat file
				m24=ReadFloat file
				m31=ReadFloat file
				m32=ReadFloat file
				m33=ReadFloat file
				m34=ReadFloat file
				m41=ReadFloat file
				m43=ReadFloat file
				m42=ReadFloat file  --flip y and z
				m44=ReadFloat file
				matTransform=matrix3 [m11,m12,m13] [m21,m22,m23] [m31,m32,m33] [m41,m42,m43]
				ReadFloat file
				pX=ReadFloat file
				pZ=ReadFloat file
				pY=ReadFloat file
				vecPivot=point3 pX pY pZ
				isTransformed=true
			)
						
-----------------------------------------------------------------------
-------------------------------Get our mesh----------------------------
----------------------------------------------------------------------- 	

		
			fseek file (0x170+4) #seek_set   
			numTrilists=ReadLong file  --number of triangle lists/strips
			startTrilistDesc=ReadLong file  --start of trilist headers
		
			vertArray =#()
			normalArray =#()
			colorArray =#()
			uv1Array =#()
			uv2Array =#()
			uv3Array =#()
			uv4Array =#()
			faceArray =#()
			faceArrayOpt =#()
			matIDArray=#()
			startIndex=1;

	
			for m = 0 to (numTrilists-1) do
			(
-----------------------------------------------------------------------
------------------------Trilist or Tristrip Descriptor-----------------
----------------------------------------------------------------------- 	
				fseek file (startTrilistDesc+4+m*132) #seek_set
				nUkn0 = ReadLong file  --strip or list, see below
				startPosNormal =  ReadLong file
				trash=ReadLong file
				startTexCoords = ReadLong file
				trash=ReadLong file
				startTanBinormal=ReadLong file  --tangents and binormals only when there's bumpmapping
				numVertices = ReadLong file
				trash=ReadLong file
				numIndices = ReadLong file
				startIndices = ReadLong file
				fseek file (16) #seek_cur
				indexMaterial = ((ReadLong file)+1)  --material ID
		
-----------------------------------------------------------------------
------------------------Vertex Position, Normal, Color-----------------
----------------------------------------------------------------------- 	
			
				fseek file (startPosNormal+4) #seek_set
				for v = 1 to numVertices  do
				(
					x=ReadFloat file
					z=ReadFloat file --flip y and z for max
					y=ReadFloat file
					pos=point3 x y z
					append vertArray pos
					nx=ReadFloat file  --normal, not used here
					nz=ReadFloat file
					ny=ReadFloat file
					append normalArray (normalize [nx,ny,nz])
					blue=ReadByte file #unsigned  --vertex color, not sure in order
				 	green=ReadByte file #unsigned
				 	red=ReadByte file #unsigned
				 	alpha=ReadByte file #unsigned
				 	append colorArray [red/255.0,green/255.0,blue/255.0]
					trash=ReadLong file  --something
				)
-----------------------------------------------------------------------
-------------------------UV data(4 channels per vertex)----------------
----------------------------------------------------------------------- 	

				fseek file (startTexCoords +4) #seek_set
				for v = 1 to numVertices  do
				(
					u=ReadFloat file
					v=ReadFloat file
					append uv1Array [u,-v,0]
					u=ReadFloat file
					v=ReadFloat file
					append uv2Array [u,-v,0]
					u=ReadFloat file
					v=ReadFloat file
					append uv3Array [u,-v,0]
					u=ReadFloat file
					v=ReadFloat file
					append uv4Array [u,-v,0]
				)
-----------------------------------------------------------------------
-------------------------Indices---------------------------------------
----------------------------------------------------------------------- 	


				fseek file (startIndices+4) #seek_set
				if (bit.and nUkn0 0x20000000)!=0 then  --we have a trilist
				(
					for f = 1 to (numIndices/3)  do
					(
						i1=((ReadShort file)+startIndex)
						i2=((ReadShort file)+startIndex)
						i3=((ReadShort file)+startIndex)
						append faceArray [i1,i2,i3]
						append faceArrayOpt [i1,i2,i3]
						append matIDArray matIDs[indexMaterial]			
					)
				) else --it's a tristrip
				(
					if numIndices>=3 then
					(
						i1=((ReadShort file)+startIndex)
						i2=((ReadShort file)+startIndex)
						for i = 3 to (numIndices)  do
						(
							i3=((ReadShort file)+startIndex)
							if (i1!=i2 and i1!=i3 and i2!=i3) then --ignore degenerate crap
							(
								if (mod i 2)>0.00001 then	
								(
									append faceArray [i1,i2,i3]
									append faceArrayOpt [i1,i2,i3]
								)
								else 
								(
									append faceArray [i3,i2,i1]
									append faceArrayOpt [i3,i2,i1]
								)

										
								append matIDArray matIDs[indexMaterial]			
							)
							i1=i2
							i2=i3
						)
					)
			
								
				)
				startIndex+=numVertices  --the triangle lists/strips are put into a single mesh
			)
		
			print rdoSmoothing.state
			if (rdoSmoothing.state==3) then
			(
			try (
			
			for v = 1 to (vertArray.count-1) do
			(
				
				vertV=vertArray[v]
				
						
				local vj=v+1
				for vjfor = (v+1) to (vertArray.count) do
				(
						
					if  vertV==vertArray[vj]  and  (dot normalArray[v] normalArray[vj])>0.98 then
					(
						for f = 1 to (faceArrayOpt.count) do
						(
							if faceArrayOpt[f].x>vj then faceArrayOpt[f].x-=1 else if faceArrayOpt[f].x==vj then faceArrayOpt[f].x=v 
							if faceArrayOpt[f].y>vj then faceArrayOpt[f].y-=1 else if faceArrayOpt[f].y==vj then faceArrayOpt[f].y=v 
							if faceArrayOpt[f].z>vj then faceArrayOpt[f].z-=1 else if faceArrayOpt[f].z==vj then faceArrayOpt[f].z=v
						)
					
						deleteItem vertArray vj 
						deleteItem normalArray vj 
						
					) else	vj+=1
						
				)
				
				
				if v>=(vertArray.count-1) then exit

			)
			
			) catch
			(
				format "Exception during fancy smoothing: %\n" (getcurrentexception()) 
								
			)
			)
		

		    --create our mesh, setup texture coordinates
			newMesh=mesh vertices:vertArray faces:faceArrayOpt materialIDs:matIDArray
			
			newMesh.material=meditMaterials[1]
			fseek file (0x190+4) #seek_set
			newMesh.name=ReadString file

		
			meshop.setNumMaps newMesh 5 keep:true
			meshop.setMapSupport newMesh 4 true	
			meshop.setNumMapVerts newMesh 0 uv1Array.count
			meshop.setNumMapVerts newMesh 1 uv1Array.count
			meshop.setNumMapVerts newMesh 2 uv1Array.count
			meshop.setNumMapVerts newMesh 3 uv1Array.count
			meshop.setNumMapVerts newMesh 4 uv1Array.count
		
			meshop.setNumMapFaces newMesh 0 newMesh.numFaces
			meshop.setNumMapFaces newMesh 1 newMesh.numFaces
			meshop.setNumMapFaces newMesh 2 newMesh.numFaces
			meshop.setNumMapFaces newMesh 3 newMesh.numFaces
			meshop.setNumMapFaces newMesh 4 newMesh.numFaces
			vertList=#()
			for v = 1 to (uv1Array.count) do
			(
				meshop.setMapVert newMesh 0 v colorArray[v]
				meshop.setMapVert newMesh 1 v uv1Array[v]
				meshop.setMapVert newMesh 2 v uv2Array[v]
				meshop.setMapVert newMesh 3 v uv3Array[v]
				meshop.setMapVert newMesh 4 v uv4Array[v]
				append vertList v
				--setNormal newMesh v normalArray[v]
				
			)
			
			for f = 1 to (newMesh.numFaces) do
			(
				meshop.setMapFace newMesh 0 f faceArray[f]
				meshop.setMapFace newMesh 1 f faceArray[f]
				meshop.setMapFace newMesh 2 f faceArray[f]
				meshop.setMapFace newMesh 3 f faceArray[f]
				meshop.setMapFace newMesh 4 f faceArray[f]
				setFaceSmoothGroup newMesh f 1
			)
		
			
			if (isTransformed) then 
			(
				newMesh.transform=matTransform
				newMesh.pivot=vecPivot
			)
		
			if (rdoSmoothing.state==2) then meshop.weldVertsByThreshold newMesh vertList 0.000001
			
			--update newMesh  --said to update normals etc., not actually needed imo
		


			) catch
			(
				format "Exception during Geometry importing: %\n" (getcurrentexception()) 
								
			)

		
			fclose f
		)
	)

	


	on ImportGMT2 open do
	(
		dx7Shaders=#()
		dx8Shaders=#()
		dx9Shaders=#()
		gShaderNames=#(dx7Shaders,dx8Shaders,dx9Shaders)
		ReadShaderNames()
		globalSearchPath="d:\\rFactor\\rFToolsPublic\\SampleTrackPiece\\maps\\"
	)
	on btnImportFile pressed do
	(
		globalSearchPath=edt1.text
		fileName = getOpenFileName types: "GMT(*.gmt)|*.gmt|All|*.*|"
		if filename != undefined then
		(
			ImportGMT filename
		)	
	)
	on btnImportDir pressed do
	(	
		globalSearchPath=edt1.text
		directory = getSavePath caption:"Import Directory" initialDir: edt1.text
		if directory != undefined then
		(
			files=GetFiles (directory+"\\*.gmt")
			for filename in files do ImportGMT filename
		)	
	)
	on btnPath pressed do
	(	
		directory = getSavePath caption:"Additional Texture Path" initialDir: edt1.text
		if directory != undefined then
		(
			edt1.text=directory+"\\"
		)	
	)
)

 

0 REPLIES 0

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report