[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13999] trunk/blender/release/scripts/ flt_toolbar.py: -> DOF from active tool

Geoffrey Bantle hairbat at yahoo.com
Fri Mar 7 08:23:55 CET 2008


Revision: 13999
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13999
Author:   briggs
Date:     2008-03-07 08:23:55 +0100 (Fri, 07 Mar 2008)

Log Message:
-----------
-> DOF from active tool

Creates (or modifies) a DOF node based upon the active object.
Requires two selected objects, the non-active one will get its
DOF coordinate system from the active selected object. This assumes
that 1 Blender unit == 10 meters

Modified Paths:
--------------
    trunk/blender/release/scripts/flt_toolbar.py

Modified: trunk/blender/release/scripts/flt_toolbar.py
===================================================================
--- trunk/blender/release/scripts/flt_toolbar.py	2008-03-07 03:24:23 UTC (rev 13998)
+++ trunk/blender/release/scripts/flt_toolbar.py	2008-03-07 07:23:55 UTC (rev 13999)
@@ -1,606 +1,654 @@
-#!BPY
-
-"""
-Name: 'FLT Toolbar'
-Blender: 240
-Group: 'Misc'
-Tooltip: 'Tools for working with FLT databases'
-"""
-
-__author__ = "Geoffrey Bantle"
-__version__ = "1.0 11/21/07"
-__email__ = ('scripts', 'Author, ')
-__url__ = ('blender', 'elysiun')
-
-__bpydoc__ ="""\
-This script provides tools for working with OpenFlight databases in Blender. OpenFlight is a
-registered trademark of MultiGen-Paradigm, Inc.
-
-Feature overview and more availible at:
-http://wiki.blender.org/index.php/Scripts/Manual/FLTools
-"""
-
-# --------------------------------------------------------------------------
-# flt_palettemanager.py version 0.1 2005/04/08
-# --------------------------------------------------------------------------
-# ***** BEGIN GPL LICENSE BLOCK *****
-#
-# 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-#
-# ***** END GPL LICENCE BLOCK *****
-# --------------------------------------------------------------------------
-
-import Blender.Draw as Draw
-from Blender.BGL import *
-import Blender
-import flt_properties
-reload(flt_properties)
-from flt_properties import *
-
-xrefprefix = ""
-xrefstack = list()
-vofsstack = list()
-vquatstack = list()
-prop_w = 256
-prop_h = 256
-
-
-#event codes
-evcode = {
-	"XREF_MAKE" : 100,
-	"XREF_EDIT" : 101,
-	"XREF_FILE" : 102,
-	"XREF_PICK" : 103,
-	"XREF_SELECT" : 104,
-        "XREF_POP" : 105,
-        "XREF_PREFIX" : 106,
-	"FACE_NAME" : 200,
-	"FACE_MAKESUB" : 201,
-	"FACE_KILLSUB" : 202,
-	"FACE_SELSUB" : 203,
-	"SCENE_UPDATE" : 303,
-	"IDPROP_COPY" : 501,
-	"IDPROP_KILL" : 502,
-	"CLIGHT_MAKE" : 700
-}
-
-XREF_PREFIX = None
-XREF_MAKE = None
-XREF_EDIT = None
-XREF_SELECT = None
-XREF_POP = None
-FACE_MAKESUB = None
-FACE_SELSUB = None
-FACE_KILLSUB = None
-IDPROP_KILL = None
-IDPROP_COPY = None
-SCENE_UPDATE = None
-CLIGHT_MAKE = None
-
-def update_state():
-	state = dict()
-	state["activeScene"] = Blender.Scene.getCurrent()
-	state["activeObject"] = state["activeScene"].getActiveObject()
-	if state["activeObject"] and not state["activeObject"].sel:
-		state["activeObject"] = None
-	state["activeMesh"] = None
-	if state["activeObject"] and state["activeObject"].type == 'Mesh':
-		state["activeMesh"] = state["activeObject"].getData(mesh=True)
-	
-	state["activeFace"] = None
-	if state["activeMesh"]:
-		if state["activeMesh"].faceUV and state["activeMesh"].activeFace != None:
-			state["activeFace"] = state["activeMesh"].faces[state["activeMesh"].activeFace]
-		
-	#update editmode
-	state["editmode"]	= Blender.Window.EditMode()
-
-	return state
-def pack_face_index(index, intensity):
-	return ((127*intensity)+(128*index))
-def unpack_face_index(face_index):
-	index = face_index / 128
-	intensity = float(face_index - 128.0 * index) / 127.0
-	return(index,intensity)
-	
-def idprops_append(object, typecode, props):
-	object.properties["FLT"] = dict()
-	object.properties["FLT"]['type'] = typecode 
-	for prop in props:
-		object.properties["FLT"][prop] = props[prop]
-	object.properties["FLT"]['3t8!id'] = object.name
-
-def idprops_kill(object):
-	state = update_state()
-	if object and object.properties.has_key('FLT'):
-		object.properties.pop('FLT')
-
-def idprops_copy(source):
-	state = update_state()
-	if source.properties.has_key('FLT'):
-		for object in state["activeScene"].objects:
-			if object.sel and object != source and (state["activeScene"].Layers & object.Layers):
-				idprops_kill(object)
-				object.properties['FLT'] = dict()
-				for key in source.properties['FLT']:
-					object.properties['FLT'][key] = source.properties['FLT'][key]
-
-def update_all():
-	state = update_state()
-	#update the baked FLT colors for all meshes.
-	for object in state["activeScene"].objects:
-		if object.type == "Mesh":
-			mesh = object.getData(mesh=True)
-			if 'FLT_COL' in mesh.faces.properties:
-				mesh.activeColorLayer = "FLT_Fcol"
-				for face in mesh.faces:
-					(index,intensity) = unpack_face_index(face.getProperty('FLT_COL'))
-					color = struct.unpack('>BBBB',struct.pack('>I',state["colors"][index]))
-					#update the vertex colors for this face
-					for col in face.col:
-						col.r = int(color[0] * intensity)
-						col.g = int(color[1] * intensity)
-						col.b = int(color[2] * intensity)
-						col.a = 255
-
-
-#Change this to find the deep parent
-def xref_create():
-	global xrefprefix
-	global xrefstack
-	global vofsstack
-	global vquatstack
-	global prop_w
-	global prop_h
-	
-	state = update_state()
-	
-	def findchildren(object):
-		children = list()
-		for candidate in state["activeScene"].objects:
-			if candidate.parent == object:
-				children.append(candidate)
-		retlist = list(children)
-		for child in children:
-			retlist = retlist + findchildren(child)
-		return retlist
-		
-	actObject = state["activeObject"]
-        if actObject and xrefprefix:
-                scenenames = list()
-                for scene in Blender.Scene.Get():
-                        scenenames.append(scene.name)
-
-                if xrefprefix in scenenames:
-                        #build a unique name for the xref...
-                        suffix = 1
-                        found = False
-                        while not found:
-                                candidate = xrefprefix + str(suffix)
-                                if not candidate in scenenames:
-                                        xrefname = candidate
-                                        found = True
-                                suffix+=1
-                else:
-                        xrefname = xrefprefix
-                #create our XRef node
-                xnode = state["activeScene"].objects.new('Empty')
-                xnode.name = 'X:' + xrefname
-                xnode.properties['FLT'] = dict()
-                for prop in FLTXRef:
-                        xnode.properties['FLT'][prop] = FLTXRef[prop]
-                xnode.properties['FLT']['3t200!filename'] = xrefname + '.flt'
-		xnode.properties['FLT']['type'] = 63
-		xnode.enableDupGroup = True
-		xnode.DupGroup = Blender.Group.New(xrefname) #this is dangerous... be careful!
-
-                #copy rot and loc of actObject
-                xnode.setLocation(actObject.getLocation())
-                xnode.setEuler(actObject.getEuler())         
-                
-                #build the new scene
-		xrefscene = Blender.Scene.New(xrefname)
-		xrefscene.properties['FLT'] = dict()
-		xrefscene.properties['FLT']['Filename'] = xrefname
-		xrefscene.properties['FLT']['Main'] = 0
-
-                #find the children of actObject so that we can add them to the group
-		linkobjects = findchildren(actObject)
-                linkobjects.append(actObject)
-		for object in linkobjects:
-                        xrefscene.objects.link(object)
-                        state["activeScene"].objects.unlink(object)
-                        xnode.DupGroup.objects.link(object)
-                #clear rotation of actObject and location
-                actObject.setLocation(0.0,0.0,0.0)
-                actObject.setEuler(0.0,0.0,0.0)
-
-                xrefscene.update(1)
-                state["activeScene"].update(1)
-
-def xref_select():
-	state = update_state()
-	candidates = list()
-	scenelist = [scene.name for scene in Blender.Scene.Get()]
-	for object in state["activeScene"].objects:
-		if object.type == 'Empty' and object.enableDupGroup == True and object.DupGroup:
-			candidates.append(object)
-		
-	for object in candidates:
-		if object.DupGroup.name in scenelist:
-			object.sel = 1
-
-def xref_edit():
-	global xrefprefix
-	global xrefstack
-	global vofsstack
-	global vquatstack
-	global prop_w
-	global prop_h
-	
-	state = update_state()
-
-	actObject = state["activeObject"]
-
-	if actObject and actObject.type == 'Empty' and actObject.DupGroup:
-#		if actObject.properties.has_key('FLT') and actObject.properties['FLT']['type'] == 63:
-		for FLTscene in Blender.Scene.Get():
-			if FLTscene.properties.has_key('FLT') and FLTscene.name == actObject.DupGroup.name:
-				actObject.sel = 0
-				xrefstack.append(state["activeScene"])
-				vofsstack.append(Blender.Window.GetViewOffset())
-				vquatstack.append(Blender.Window.GetViewQuat())
-				FLTscene.makeCurrent()
-				Blender.Window.SetViewOffset(0.0,0.0,0.0)
-
-def xref_finish():
-	global xrefprefix
-	global xrefstack
-	global vofsstack
-	global vquatstack
-	global prop_w
-	global prop_h
-	
-	state = update_state() 
-        if xrefstack:
-                scene = xrefstack.pop()
-                Blender.Window.SetViewQuat(vquatstack.pop())
-                Blender.Window.SetViewOffset(vofsstack.pop())
-                scene.makeCurrent()
-                
-
-def sortSub(a,b):
-	aindex = a.getProperty("FLT_ORIGINDEX")
-	bindex = b.getProperty("FLT_ORIGINDEX")
-	
-	if aindex > bindex:
-		return 1
-	elif aindex < bindex:
-		return -1
-	return 0
-
-def subface_make():
-	global xrefprefix
-	global xrefstack
-	global vofsstack
-	global vquatstack
-	global prop_w
-	global prop_h
-	
-	editmode = 0
-	if Blender.Window.EditMode():
-		Blender.Window.EditMode(0)
-		editmode = 1
-
-	state = update_state()
-	
-	actmesh = state["activeMesh"]
-	activeFace = state["activeFace"]
-	if actmesh:
-		if not "FLT_ORIGINDEX" in actmesh.faces.properties:
-			actmesh.faces.addPropertyLayer("FLT_ORIGINDEX",Blender.Mesh.PropertyTypes["INT"])
-			for i, face in enumerate(actmesh.faces):
-				face.setProperty("FLT_ORIGINDEX",i)
-		if not "FLT_SFLEVEL" in actmesh.faces.properties:
-			actmesh.faces.addPropertyLayer("FLT_SFLEVEL",Blender.Mesh.PropertyTypes["INT"])

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list