Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'release/scripts/flt_properties.py')
-rw-r--r--release/scripts/flt_properties.py619
1 files changed, 619 insertions, 0 deletions
diff --git a/release/scripts/flt_properties.py b/release/scripts/flt_properties.py
new file mode 100644
index 00000000000..07bcc8def1d
--- /dev/null
+++ b/release/scripts/flt_properties.py
@@ -0,0 +1,619 @@
+#!BPY
+# flt_properties.py. For setting default OpenFLight ID property types
+# Copyright (C) 2007 Blender Foundation
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+__bpydoc__ ="""\
+Utility functions and data defintions used by OpenFlight I/O and tool scripts. OpenFlight is a
+registered trademark of MultiGen-Paradigm, Inc.
+"""
+
+
+import struct
+
+bitsLSB = [2147483648]
+for i in xrange(31):
+ bitsLSB.append(bitsLSB[-1]/2)
+bitsRSB = bitsLSB[:]
+bitsRSB.reverse()
+
+def pack_color(col):
+ return struct.pack('>B',col[3]) + struct.pack('>B',col[2]) + struct.pack('>B',col[1]) + struct.pack('>B',col[0])
+
+def unpack_color(col):
+ string = struct.pack('>I', col)
+ r = struct.unpack('>B',string[3:4])
+ g = struct.unpack('>B',string[2:3])
+ b = struct.unpack('>B',string[1:2])
+ a = struct.unpack('>B',string[0:1])
+ return [r,g,b,a]
+
+def reverse_bits(len,num):
+ bitbucket = list()
+ rval = 0
+
+ for i in xrange(len):
+ if num & bitsRSB[i]:
+ bitbucket.append(1)
+ else:
+ bitbucket.append(0)
+
+ bitbucket.reverse()
+
+ for i, bit in enumerate(bitbucket):
+ if bit:
+ rval |= bitsLSB[i]
+
+ return rval
+
+
+opcode_name = { 0: 'db',
+ 1: 'head',
+ 2: 'grp',
+ 4: 'obj',
+ 5: 'face',
+ 10: 'push',
+ 11: 'pop',
+ 14: 'dof',
+ 19: 'push sub',
+ 20: 'pop sub',
+ 21: 'push ext',
+ 22: 'pop ext',
+ 23: 'cont',
+ 31: 'comment',
+ 32: 'color pal',
+ 33: 'long id',
+ 49: 'matrix',
+ 50: 'vector',
+ 52: 'multi-tex',
+ 53: 'uv lst',
+ 55: 'bsp',
+ 60: 'rep',
+ 61: 'inst ref',
+ 62: 'inst def',
+ 63: 'ext ref',
+ 64: 'tex pal',
+ 67: 'vert pal',
+ 68: 'vert w col',
+ 69: 'vert w col & norm',
+ 70: 'vert w col, norm & uv',
+ 71: 'vert w col & uv',
+ 72: 'vert lst',
+ 73: 'lod',
+ 74: 'bndin box',
+ 76: 'rot edge',
+ 78: 'trans',
+ 79: 'scl',
+ 80: 'rot pnt',
+ 81: 'rot and/or scale pnt',
+ 82: 'put',
+ 83: 'eyepoint & trackplane pal',
+ 84: 'mesh',
+ 85: 'local vert pool',
+ 86: 'mesh prim',
+ 87: 'road seg',
+ 88: 'road zone',
+ 89: 'morph vert lst',
+ 90: 'link pal',
+ 91: 'snd',
+ 92: 'rd path',
+ 93: 'snd pal',
+ 94: 'gen matrix',
+ 95: 'txt',
+ 96: 'sw',
+ 97: 'line styl pal',
+ 98: 'clip reg',
+ 100: 'ext',
+ 101: 'light src',
+ 102: 'light src pal',
+ 103: 'reserved',
+ 104: 'reserved',
+ 105: 'bndin sph',
+ 106: 'bndin cyl',
+ 107: 'bndin hull',
+ 108: 'bndin vol cntr',
+ 109: 'bndin vol orient',
+ 110: 'rsrvd',
+ 111: 'light pnt',
+ 112: 'tex map pal',
+ 113: 'mat pal',
+ 114: 'name tab',
+ 115: 'cat',
+ 116: 'cat dat',
+ 117: 'rsrvd',
+ 118: 'rsrvd',
+ 119: 'bounding hist',
+ 120: 'rsrvd',
+ 121: 'rsrvd',
+ 122: 'push attrib',
+ 123: 'pop attrib',
+ 124: 'rsrvd',
+ 125: 'rsrvd',
+ 126: 'curv',
+ 127: 'road const',
+ 128: 'light pnt appear pal',
+ 129: 'light pnt anim pal',
+ 130: 'indexed lp',
+ 131: 'lp sys',
+ 132: 'indx str',
+ 133: 'shdr pal'}
+
+
+typecodes = ['c','C','s','S','i','I','f','d','t']
+
+FLT_GRP = 2
+FLT_OBJ = 4
+FLT_LOD = 73
+FLT_XRF = 63
+FLT_DOF = 14
+FLT_ILP = 111
+FLT_DB = 1
+FLT_FCE = 5
+
+#not actual opcodes
+FLT_NUL = 0
+FLT_EXP = -1
+
+#valid childtypes for each FLT node type
+FLT_CHILDTYPES = {
+ FLT_GRP : [111,2,73,4,14,63],
+ FLT_OBJ : [111],
+ FLT_LOD : [111,2,73,4,14,63],
+ FLT_XRF : [],
+ FLT_DOF : [111,2,73,4,14,63],
+ FLT_ILP : []
+}
+
+#List of nodes that can have faces as children
+FLT_FACETYPES = [
+ FLT_GRP,
+ FLT_OBJ,
+ FLT_LOD,
+ FLT_DOF
+]
+
+def write_prop(fw,type,value,length):
+ if type == 'c':
+ fw.write_char(value)
+ elif type == 'C':
+ fw.write_uchar(value)
+ elif type == 's':
+ fw.write_short(value)
+ elif type == 'S':
+ fw.write_ushort(value)
+ elif type == 'i':
+ fw.write_int(value)
+ elif type == 'I':
+ fw.write_uint(value)
+ elif type == 'd':
+ fw.write_double(value)
+ elif type == 'f':
+ fw.write_float(value)
+ elif type == 't':
+ fw.write_string(value,length)
+
+def read_prop(fw,type,length):
+ rval = None
+ if type == 'c':
+ rval = fw.read_char()
+ elif type == 'C':
+ rval = fw.read_uchar()
+ elif type == 's':
+ rval = fw.read_short()
+ elif type == 'S':
+ rval = fw.read_ushort()
+ elif type == 'i':
+ rval = fw.read_int()
+ elif type == 'I':
+ rval = fw.read_uint()
+ elif type == 'd':
+ rval = fw.read_double()
+ elif type == 'f':
+ rval = fw.read_float()
+ elif type == 't':
+ rval = fw.read_string(length)
+ return rval
+
+FLTGroup = {
+ '3t8!id' : 'G',
+ '4s!priority' : 0,
+ '5s!reserved1' : 0,
+ '6i!flags' : 0,
+ '7s!special1' : 0,
+ '8s!special2' : 0,
+ '9s!significance' : 0,
+ '10c!layer code' : 0,
+ '11c!reserved2' : 0,
+ '12i!reserved3' : 0,
+ '13i!loop count' : 0,
+ '14f!loop duration' : 0,
+ '15f!last frame duration' : 0
+}
+FLTGroupDisplay = [5,11,12]
+
+FLTObject = {
+ '3t8!id' : 'O',
+ '4I!flags' : 0,
+ '5s!priority' : 0,
+ '6S!transp' : 0,
+ '7s!SFX1' : 0,
+ '8s!SFX2' : 0,
+ '9s!significance' : 0,
+ '10s!reserved' : 0
+}
+FLTObjectDisplay = [10]
+
+FLTLOD = {
+ '3t8!id' : 'L',
+ '4i!reserved' : 0,
+ '5d!switch in' : 0,
+ '6d!switch out' : 0,
+ '7s!sfx ID1' : 0,
+ '8s!sfx ID2' : 0,
+ '9I!flags' : 0,
+ '10d!X co' : 0,
+ '11d!Y co' : 0,
+ '12d!Z co' : 0,
+ '13d!Transition' : 0,
+ '14d!Sig Size' : 0
+}
+FLTLODDisplay = [4]
+
+FLTInlineLP = {
+ '3t8!id' : 'Lp',
+ '4s!smc' : 0,
+ '5s!fid' : 0,
+ '6C!back color: a' : 255,
+ '7C!back color: b' : 255,
+ '8C!back color: g' : 255,
+ '9C!back color: r' : 255,
+ '10i!display mode' : 255,
+ '11f!intensity' : 1.0,
+ '12f!back intensity' : 0.0,
+ '13f!minimum defocus' : 0.0,
+ '14f!maximum defocus' : 1.0,
+ '15i!fading mode' : 0,
+ '16i!fog punch mode' : 0,
+ '17i!directional mode' : 1,
+ '18i!range mode' : 0,
+ '19f!min pixel size' : 1.0,
+ '20f!max pixel size' : 1024,
+ '21f!actual size' : 0.25,
+ '22f!trans falloff pixel size' : 0.25,
+ '23f!trans falloff exponent' : 1.0,
+ '24f!trans falloff scalar' : 1.0,
+ '25f!trans falloff clamp' : 1.0,
+ '26f!fog scalar' : 0.25,
+ '27f!fog intensity' : 1.0,
+ '28f!size threshold' : 0.1,
+ '29i!directionality' : 0,
+ '30f!horizontal lobe angle' : 180.0,
+ '31f!vertical lobe angle' : 180.0,
+ '32f!lobe roll angle' : 0.0,
+ '33f!dir falloff exponent' : 1.0,
+ '34f!dir ambient intensity' : 0.1,
+ '35f!anim period' : 0,
+ '36f!anim phase' : 0,
+ '37f!anim enabled' : 0,
+ '38f!significance' : 0.0,
+ '39i!draw order' : 0,
+ '40I!flags' : 813875616,
+ '41f!roti' : 0,
+ '42f!rotj' : 0,
+ '43f!rotk' : 0
+}
+
+FLTInlineLPDisplay = [35,36,37,41,42,43]
+
+FLTXRef = {
+ '3t200!filename' : '', #we dont actually use this value on export
+ '4i!reserved' : 0,
+ '5I!flag' : -478150656,
+ '6s!bbox' : 0,
+ '7s!reserved' : 0
+}
+
+FLTXRefDisplay = [4,7,3]
+
+FLTDOF = {
+ '3t8!id' : 'D',
+ '4i!reserved' : 0,
+ '5d!ORIGX' : 0.0,
+ '6d!ORIGY' : 0.0,
+ '7d!ORIGZ' : 0.0,
+ '8d!XAXIS-X' : 10.0,
+ '9d!XAXIS-Y' : 0.0,
+ '10d!XAXIS-Z' : 0.0,
+ '11d!XYPLANE-X' : 0.0,
+ '12d!XYPLANE-Y' : 10.0,
+ '13d!XZPLANE-Z' : 0.0,
+ '14d!ZMIN' : 0.0,
+ '15d!ZMAX' : 0.0,
+ '16d!ZCUR' : 0.0,
+ '17d!ZSTEP' : 0.0,
+ '18d!YMIN' : 0.0,
+ '19d!YMAX' : 0.0,
+ '20d!YCUR' : 0.0,
+ '21d!YSTEP' : 0.0,
+ '22d!XMIN' : 0.0,
+ '23d!XMAX' : 0.0,
+ '24d!XCUR' : 0.0,
+ '25d!XSTEP' : 0.0,
+ '26d!PITCH-MIN' : 0.0,
+ '27d!PITCH-MAX' : 0.0,
+ '28d!PITCH-CUR' : 0.0,
+ '29d!PITCH-STEP' : 0.0,
+ '30d!ROLL-MIN' : 0.0,
+ '31d!ROLL-MAX' : 0.0,
+ '32d!ROLL-CUR' : 0.0,
+ '33d!ROLL-STEP' : 0.0,
+ '34d!YAW-MIN' : 0.0,
+ '35d!YAW-MAX' : 0.0,
+ '36d!YAW-CUR' : 0.0,
+ '37d!YAW-STEP' : 0.0,
+ '38d!ZSIZE-MIN' : 0.0,
+ '39d!ZSIZE-MAX' : 0.0,
+ '40d!ZSIZE-CUR' : 1.0,
+ '41d!ZSIZE-STEP' : 0.0,
+ '42d!YSIZE-MIN' : 0.0,
+ '43d!YSIZE-MAX' : 0.0,
+ '44d!YSIZE-CUR' : 1.0,
+ '45d!YSIZE-STEP' : 0.0,
+ '46d!XSIZE-MIN' : 0.0,
+ '47d!XSIZE-MAX' : 0.0,
+ '48d!XSIZE-CUR' : 1.0,
+ '49d!XSIZE-STEP' : 0.0,
+ '50I!FLAG' : 1897582,
+ '51i!reserved2' : 0
+}
+
+FLTDOFDisplay = [4]
+
+FLTImage = {
+ '3i!RealU Direction' : 0,
+ '4i!RealV Direction' : 0,
+ '5i!UpX' : 0,
+ '6i!UpY' : 0,
+ '7i!File Format' : 0,
+ '8i!Min Filter' : 1,
+ '9i!Mag Filter' : 1,
+ '10i!Wrap' : 0,
+ '11i!WrapU' : 0,
+ '12i!WrapV' : 0,
+ '13i!Modified' : 0,
+ '14i!PivotX' : 0,
+ '15i!PivotY' : 0,
+ '16i!Enviorment' : 0,
+ '17i!WhiteAlpha' : 0,
+ '18i!reserved1' : 0,
+ '19i!reserved2' : 0,
+ '20i!reserved3' : 0,
+ '21i!reserved4' : 0,
+ '22i!reserved5' : 0,
+ '23i!reserved6' : 0,
+ '24i!reserved7' : 0,
+ '25i!reserved8' : 0,
+ '26i!reserved9' : 0,
+ '27d!RealU Direction' : 0,
+ '28d!RealV Direction' : 0,
+ '29i!Origin' : 0,
+ '30i!Kernel no.' : 0,
+ '31i!Internal Format' : 0,
+ '32i!External Format' : 0,
+ '33i!MipMap Filter?' : 0,
+ '34f!MMF1' : 0.0,
+ '35f!MMF2' : 0.0,
+ '36f!MMF3' : 0.0,
+ '37f!MMF4' : 0.0,
+ '38f!MMF5' : 0.0,
+ '39f!MMF6' : 0.0,
+ '40f!MMF7' : 0.0,
+ '41f!MMF8' : 0.0,
+ '42i!Tex CPs?' : 0,
+ '43f!LOD0 CP' : 0.0,
+ '44f!Scale0 CP' : 0.0,
+ '45f!LOD1 CP' : 0.0,
+ '46f!Scale1 CP' : 0.0,
+ '47f!LOD2 CP' : 0.0,
+ '48f!Scale2 CP' : 0.0,
+ '49f!LOD3 CP' : 0.0,
+ '50f!Scale3 CP' : 0.0,
+ '51f!LOD4 CP' : 0.0,
+ '52f!Scale4 CP' : 0.0,
+ '53f!LOD5 CP' : 0.0,
+ '54f!Scale5 CP' : 0.0,
+ '55f!LOD6 CP' : 0.0,
+ '56f!Scale6 CP' : 0.0,
+ '57f!LOD7 CP' : 0.0,
+ '58f!Scale7 CP' : 0.0,
+ '59f!Control Clamp' : 0.0,
+ '60i!Mag Alpha Filter' : 0,
+ '61i!Mag Color Filter' : 0,
+ '62f!reserved10' : 0,
+ '63f!reserved11' : 0,
+ '64f!reserved12' : 0,
+ '65f!reserved13' : 0,
+ '66f!reserved14' : 0,
+ '67f!reserved15' : 0,
+ '68f!reserved16' : 0,
+ '69f!reserved17' : 0,
+ '70f!reserved18' : 0,
+ '71d!Lambert Central' : 0.0,
+ '72d!Lambert Upper' : 0.0,
+ '73d!Lambert Lower' : 0.0,
+ '74d!reserved19' : 0,
+ '75f!reserved20' : 0,
+ '76f!reserved21' : 0,
+ '77f!reserved22' : 0,
+ '78f!reserved23' : 0,
+ '79f!reserved24' : 0,
+ '80i!Tex Detail?' : 0,
+ '81i!Tex J' : 0,
+ '82i!Tex K' : 0,
+ '83i!Tex M' : 0,
+ '84i!Tex N' : 0,
+ '85i!Tex Scramble' : 0,
+ '86i!Tex Tile?' : 0,
+ '87f!Tex Tile LLU' : 0.0,
+ '88f!Tex Tile LLV' : 0.0,
+ '89f!Tex Tile URU' : 0.0,
+ '90f!Tex Tile URV' : 0.0,
+ '91i!Projection' : 0,
+ '92i!Earth Model' : 0,
+ '93i!reserved25' : 0,
+ '94i!UTM Zone' : 0,
+ '95i!Image Origin' : 0,
+ '96i!GPU' : 0,
+ '97i!reserved26' : 0,
+ '98i!reserved27' : 0,
+ '99i!GPU Hemi' : 0,
+ '100i!reserved41' : 0,
+ '101i!reserved42' : 0,
+ '102i!reserved43' : 0,
+ '103i!Cubemap' : 0,
+ '104t588!reserved44' : '',
+ '105t512!Comments' : '',
+ '106i!reserved28' : 0,
+ '107i!reserved29' : 0,
+ '108i!reserved30' : 0,
+ '109i!reserved31' : 0,
+ '110i!reserved32' : 0,
+ '111i!reserved33' : 0,
+ '112i!reserved34' : 0,
+ '113i!reserved35' : 0,
+ '114i!reserved36' : 0,
+ '115i!reserved37' : 0,
+ '116i!reserved38' : 0,
+ '117i!reserved39' : 0,
+ '118i!reserved40' : 0,
+ '119i!reserved45' : 0,
+ '120i!Format Version' : 0,
+ '121i!GPU num' : 0,
+}
+
+FLTImageDisplay = [18,19,29,21,22,23,24,25,26,62,63,64,65,66,67,68,69,70,74,75,76,77,78,79,93,97,98,102,114]
+
+FLTHeader = {
+ '3t8!id' : 'db',
+ '4i!version' : 1620,
+ '5i!editversion' : 0,
+ '6t32!date' : 0,
+ '7s!NGID' : 0,
+ '8s!NLID' : 0,
+ '9s!NOID' : 0,
+ '10s!NFID' : 0,
+ '11s!UMULT' : 1,
+ '12c!units' : 0,
+ '13c!set white' : 0,
+ '14I!flags' : 0x80000000,
+ '15i!reserved1' : 0,
+ '16i!reserved2' : 0,
+ '17i!reserved3' : 0,
+ '18i!reserved4' : 0,
+ '19i!reserved5' : 0,
+ '20i!reserved6' : 0,
+ '21i!projection type' : 0,
+ '22i!reserved7' : 0,
+ '23i!reserved8' : 0,
+ '24i!reserved9' : 0,
+ '25i!reserved10' : 0,
+ '26i!reserved11' : 0,
+ '27i!reserved12' : 0,
+ '28i!reserved13' : 0,
+ '29s!NDID' : 0,
+ '30s!vstore' : 1,
+ '31i!origin' : 0,
+ '32d!sw x' : 0,
+ '33d!sw y' : 0,
+ '34d!dx' : 0,
+ '35d!dy' : 0,
+ '36s!NSID' : 0,
+ '37s!NPID' : 0,
+ '38i!reserved14' : 0,
+ '39i!reserved15' : 0,
+ '40s!NCID' : 0,
+ '41s!NTID' : 0,
+ '42s!NBID' : 0,
+ '43s!NWID' : 0,
+ '44i!reserved14' : 0,
+ '45d!sw lat' : 0,
+ '46d!sw lon' : 0,
+ '47d!ne lat' : 0,
+ '48d!ne lon' : 0,
+ '49d!origin lat' : 0,
+ '50d!origin lon' : 0,
+ '51d!lambert lat1' : 0,
+ '52d!lambert lat2' : 0,
+ '53s!NLSID' : 0,
+ '54s!NLPID' : 0,
+ '55s!NRID' : 0,
+ '56s!NCATID' : 0,
+ '57s!reserved15' : 0,
+ '58s!reserved16' : 0,
+ '59s!reserved17' : 0,
+ '60s!reserved18' : 0,
+ '61i!ellipsoid model' : 1,
+ '62s!NAID' : 0,
+ '63s!NCVID' : 0,
+ '64s!utm zone' : 0,
+ '65t6!reserved19' : 0,
+ '66d!dz' : 0,
+ '67d!radius' : 0,
+ '68S!NMID' : 0,
+ '69S!NLPSID' : 0,
+ '70i!reserved20' : 0,
+ '71d!major axis' : 0,
+ '72d!minor axis' : 0,
+}
+
+FLT_Records = {
+ 2 : FLTGroup,
+ 4 : FLTObject,
+ 73 : FLTLOD,
+ 63 : FLTXRef,
+ 14 : FLTDOF,
+ 1 : FLTHeader,
+ 111 : FLTInlineLP,
+ 'Image' : FLTImage
+}
+
+def process_recordDefs():
+ records = dict()
+ for record in FLT_Records:
+ props = dict()
+ for prop in FLT_Records[record]:
+ position = ''
+ slice = 0
+ (format,name) = prop.split('!')
+ for i in format:
+ if i not in typecodes:
+ position = position + i
+ slice = slice + 1
+ else:
+ break
+ type = format[slice:]
+ length = type[1:]
+ if len(length) == 0:
+ length = 1
+ else:
+ type = type[0]
+ length = int(length)
+
+ props[int(position)] = (type,length,prop)
+ records[record] = props
+ return records
+
+