Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if (heapSize < 20000000) then
- heapSize = 200000000 -- allow ~ 40 MB instead of just 7.5 MB. Prevents "Runtime Error: Out of scripter memory"
- fname = getOpenFileName \
- caption:"Open .43 from Mesh folder" \
- types:"FAF6 (*.43)|*.43" \
- f = fopen fname "rb"
- clearlistener()
- fscale=100
- fn ReadFixedString bstream fixedLen =
- (
- local str = ""
- for i = 1 to fixedLen do
- (
- str+=bit.intAsChar(ReadByte bstream #unsigned)
- )
- str
- )
- Face_array=#()
- Vert_array=#()
- UV_array=#()
- fseek f 0x0 #seek_set
- count=readlong f
- if count == 1 do ReadFixedString f 52
- if count == 2 do ReadFixedString f 96
- if count == 3 do ReadFixedString f 140
- if count == 7 do ReadFixedString f 316
- if count == 8 do ReadFixedString f 360
- if count == 9 do ReadFixedString f 404
- if count == 10 do ReadFixedString f 448
- facecount=readlong f
- print facecount
- for x = 1 to facecount/6 do(
- fa=readshort f +1
- fb=readshort f +1
- fc=readshort f +1
- append Face_array[fc,fb,fa]
- )
- null1=readlong f
- null2=readlong f
- offset=readlong f
- if offset ==63 or offset == 47 or offset == 43 do ReadFixedString f 44
- if offset > 63 do ReadFixedString f 46
- vertsize=readlong f
- fseek f 0x24 #seek_cur
- vertcount=readlong f
- print vertcount
- if vertsize == 48 then
- for x = 1 to vertcount/vertsize do(
- vx=readfloat f
- vy=readfloat f
- vz=readfloat f
- p1=readfloat f
- p2=readfloat f
- p3=readfloat f
- p4=readfloat f
- tu=readfloat f
- tv=readfloat f
- p4=readfloat f
- p5=readfloat f
- p9=readfloat f
- append Vert_array([vz,vy,vx] *50)
- append UV_array[tu,tv,0]
- )
- if vertsize == 52 then
- for x = 1 to vertcount/vertsize do(
- vx=readfloat f
- vy=readfloat f
- vz=readfloat f
- p1=readfloat f
- p2=readfloat f
- p3=readfloat f
- p4=readfloat f
- tu=readfloat f
- tv=readfloat f
- p4=readfloat f
- p5=readfloat f
- p9=readfloat f
- p10=readfloat f
- append Vert_array([vz,vy,vx] *50)
- append UV_array[tu,tv,0]
- )
- if vertsize == 60 then
- for x = 1 to vertcount/vertsize do(
- vx=readfloat f
- vy=readfloat f
- vz=readfloat f
- p1=readfloat f
- p2=readfloat f
- p3=readfloat f
- p4=readfloat f
- p5=readfloat f
- p6=readfloat f
- tu=readfloat f
- tv=readfloat f
- p9=readfloat f
- p10=readfloat f
- p11=readfloat f
- p12=readfloat f
- append Vert_array([vz,vy,vx] *50)
- append UV_array[tu,tv,0]
- )
- msh = mesh vertices:Vert_array faces:Face_array
- msh.numTVerts = UV_array.count
- buildTVFaces msh
- rotate msh (angleaxis 90 [1,0,0])
- rotate msh (angleaxis -90 [0,0,1])
- for j = 1 to UV_array.count do setTVert msh j UV_array[j]
- for j = 1 to Face_array.count do setTVFace msh j Face_array[j]
- Print ("Last Read @ 0x"+((bit.intAsHex(ftell f))as string))
- fclose f
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement