Patch [#23389] Add authorship information to exported COLLADA files
authorNathan Letwory <nathan@letworyinteractive.com>
Thu, 26 Aug 2010 06:58:32 +0000 (06:58 +0000)
committerNathan Letwory <nathan@letworyinteractive.com>
Thu, 26 Aug 2010 06:58:32 +0000 (06:58 +0000)
Contributed by Imran Syed (freakabcd).

This adds basic authoring tool and author info ("Blender User" for now).

NOTE: Linux and OSX users need now to update their OpenCOLLADA libs - Blender should now compile fine with their latest revision.

Made some changes to the original patch to ensure linking is done correctly.
Some small cleanups for scons too.

SConstruct
build_files/scons/tools/Blender.py
source/blender/collada/CMakeLists.txt
source/blender/collada/DocumentExporter.cpp
source/blender/collada/SConscript

index 4715a955d7f86275e78ed6bd8689909dd71a4ea4..811298cc851e54725a7f8793f3672da1a8cf9fee 100644 (file)
@@ -406,12 +406,12 @@ thestatlibs, thelibincs = B.setup_staticlibs(env)
 thesyslibs = B.setup_syslibs(env)
 
 if 'blender' in B.targets or not env['WITH_BF_NOBLENDER']:
-       env.BlenderProg(B.root_build_dir, "blender", dobj + mainlist + thestatlibs, [], thesyslibs, [B.root_build_dir+'/lib'] + thelibincs, 'blender')
+       env.BlenderProg(B.root_build_dir, "blender", mainlist + thestatlibs + dobj, thesyslibs, [B.root_build_dir+'/lib'] + thelibincs, 'blender')
 if env['WITH_BF_PLAYER']:
        playerlist = B.create_blender_liblist(env, 'player')
        playerlist += B.create_blender_liblist(env, 'intern')
        playerlist += B.create_blender_liblist(env, 'extern')
-       env.BlenderProg(B.root_build_dir, "blenderplayer", dobj + playerlist, [], thestatlibs + thesyslibs, [B.root_build_dir+'/lib'] + thelibincs, 'blenderplayer')
+       env.BlenderProg(B.root_build_dir, "blenderplayer",  playerlist, thestatlibs + dobj + thesyslibs, [B.root_build_dir+'/lib'] + thelibincs, 'blenderplayer')
 
 ##### Now define some targets
 
index e16c550cc72dde51891bf3b5ec0af901746e8a9c..496b169eda7720150296c36eb4254529a45b59a8 100644 (file)
@@ -724,7 +724,7 @@ class BlenderEnvironment(SConsEnvironment):
                # note: libs is a global
                add_lib_to_dict(self, libs, libtype, libname, priority)
 
-       def BlenderProg(self=None, builddir=None, progname=None, sources=None, includes=None, libs=None, libpath=None, binarykind=''):
+       def BlenderProg(self=None, builddir=None, progname=None, sources=None, libs=None, libpath=None, binarykind=''):
                global vcp
                print bc.HEADER+'Configuring program '+bc.ENDC+bc.OKGREEN+progname+bc.ENDC
                lenv = self.Clone()
@@ -750,7 +750,6 @@ class BlenderEnvironment(SConsEnvironment):
                        lenv.Append(LINKFLAGS = lenv['BF_OPENGL_LINKFLAGS'])
                if lenv['BF_PROFILE']:
                        lenv.Append(LINKFLAGS = lenv['BF_PROFILE_LINKFLAGS'])
-               lenv.Append(CPPPATH=includes)
                if root_build_dir[0]==os.sep or root_build_dir[1]==':':
                        lenv.Append(LIBPATH=root_build_dir + '/lib')
                lenv.Append(LIBPATH=libpath)
index 420650a6ff7e0861b127c5e80c8862d490cf570e..fa582673746f7f298155131c52a109348b1c9eea 100644 (file)
@@ -61,4 +61,8 @@ SET(INC
 
 ENDIF(APPLE)
 
-BLENDERLIB(bf_collada "${SRC}" "${INC}")
+IF(WITH_BUILDINFO)
+       ADD_DEFINITIONS(-DNAN_BUILDINFO)
+ENDIF(WITH_BUILDINFO)
+
+BLENDERLIB(bf_collada "${SRC}" "${INC}")
\ No newline at end of file
index ca3aada80c0938d042c332508de3f908696aa6d0..72f280d7ce20cb8ec33fe6cb3f1a6a9b2c6fda8e 100644 (file)
@@ -48,10 +48,14 @@ extern "C"
 #include "BLI_path_util.h"
 #include "BLI_fileops.h"
 #include "ED_keyframing.h"
+#ifdef NAN_BUILDINFO
+extern char build_rev[];
+#endif
 }
 
 #include "MEM_guardedalloc.h"
 
+#include "BKE_blender.h" // version info
 #include "BKE_scene.h"
 #include "BKE_global.h"
 #include "BKE_main.h"
@@ -1296,7 +1300,7 @@ private:
                int offset = 0;
                input.push_back(COLLADASW::Input(COLLADASW::JOINT, // constant declared in COLLADASWInputList.h
                                                                                 COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, joints_source_id), offset++));
-        input.push_back(COLLADASW::Input(COLLADASW::WEIGHT,
+               input.push_back(COLLADASW::Input(COLLADASW::WEIGHT,
                                                                                 COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, weights_source_id), offset++));
 
                weights.setCount(me->totvert);
@@ -1719,11 +1723,7 @@ public:
                                // most widespread de-facto standard.
                                texture.setProfileName("FCOLLADA");
                                texture.setChildElementName("bump");                            
-#ifdef WIN32   // currently, Windows builds are using revision 746 of OpenCollada while Linux and Mac are using an older revision 721
                                ep.addExtraTechniqueColorOrTexture(COLLADASW::ColorOrTexture(texture));
-#else
-                               ep.setExtraTechniqueColorOrTexture(COLLADASW::ColorOrTexture(texture));
-#endif
                        }
                }
                // performs the actual writing
@@ -2536,6 +2536,15 @@ void DocumentExporter::exportCurrentScene(Scene *sce, const char* filename)
        // XXX ask blender devs about this?
        asset.setUnit("decimetre", 0.1);
        asset.setUpAxisType(COLLADASW::Asset::Z_UP);
+       // TODO: need an Author field in userpref
+       asset.getContributor().mAuthor = "Blender User";
+#ifdef NAN_BUILDINFO
+       char version_buf[128];
+       sprintf(version_buf, "Blender %d.%02d.%d r%s", BLENDER_VERSION/100, BLENDER_VERSION%100, BLENDER_SUBVERSION, build_rev);
+       asset.getContributor().mAuthoringTool = version_buf;
+#else
+       asset.getContributor().mAuthoringTool = "Blender 2.5x";
+#endif
        asset.add();
        
        // <library_cameras>
@@ -2596,4 +2605,3 @@ NOTES:
 * AnimationExporter::sample_animation enables all curves on armature, this is undesirable for a user
 
  */
-
index 91c3a381272ebc99a61dcb723c2846c0a3cefae0..09402dcda64055b5672c3311ee0600e76869776b 100644 (file)
@@ -28,6 +28,7 @@
 Import ('env')
 
 sources = env.Glob('*.cpp')
+defs = []
 
 # relative paths to include dirs, space-separated, string
 if  env['OURPLATFORM']=='darwin':
@@ -35,5 +36,7 @@ if  env['OURPLATFORM']=='darwin':
 else:
        incs = '../blenlib ../blenkernel ../windowmanager ../makesdna ../makesrna ../editors/include ../../../intern/guardedalloc [OPENCOLLADA]/COLLADAStreamWriter/include [OPENCOLLADA]/COLLADABaseUtils/include [OPENCOLLADA]/COLLADAFramework/include [OPENCOLLADA]/COLLADASaxFrameworkLoader/include '.replace('[OPENCOLLADA]', env['BF_OPENCOLLADA_INC'])
 
-env.BlenderLib ('bf_collada', sources, Split(incs), [], libtype='core', priority=200 )
+if env['BF_BUILDINFO']:
+       defs.append('NAN_BUILDINFO')
 
+env.BlenderLib ('bf_collada', sources, Split(incs), defs, libtype='core', priority=200 )