From 664c95d1ebf525b6daf15dc599c85f14ab58155d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 16 Jun 2012 09:16:24 +0000 Subject: code cleanup: collada - when bubble sorting names - dont convert to str::string just to compare strings - use BLI_linklist_index() to check if an item is in the list - quiet some warnings --- source/blender/collada/ArmatureExporter.cpp | 9 +++++--- source/blender/collada/ArmatureExporter.h | 24 ++++++++++----------- source/blender/collada/DocumentImporter.cpp | 2 +- source/blender/collada/ExportSettings.h | 25 +++++++++++----------- source/blender/collada/collada.cpp | 21 +++++++++--------- source/blender/collada/collada.h | 33 ++++++++++++++--------------- source/blender/collada/collada_utils.cpp | 32 ++++++++-------------------- source/blender/collada/collada_utils.h | 4 ++-- 8 files changed, 68 insertions(+), 82 deletions(-) (limited to 'source/blender/collada') diff --git a/source/blender/collada/ArmatureExporter.cpp b/source/blender/collada/ArmatureExporter.cpp index 8301066edaf..8842a4b1ac5 100644 --- a/source/blender/collada/ArmatureExporter.cpp +++ b/source/blender/collada/ArmatureExporter.cpp @@ -83,7 +83,7 @@ bool ArmatureExporter::is_skinned_mesh(Object *ob) void ArmatureExporter::write_bone_URLs(COLLADASW::InstanceController &ins, Object *ob_arm, Bone *bone) { - if ( bc_is_root_bone(bone, this->export_settings->deform_bones_only) ) + if (bc_is_root_bone(bone, this->export_settings->deform_bones_only)) ins.addSkeleton(COLLADABU::URI(COLLADABU::Utils::EMPTY_STRING, get_joint_id(bone, ob_arm))); else { for (Bone *child = (Bone *)bone->childbase.first; child; child = child->next) { @@ -187,9 +187,12 @@ void ArmatureExporter::add_bone_node(Bone *bone, Object *ob_arm, Scene *sce, node.setNodeName(node_name); node.setNodeSid(node_sid); - /*if ( bone->childbase.first == NULL || BLI_countlist(&(bone->childbase))>=2) +#if 0 + if (bone->childbase.first == NULL || BLI_countlist(&(bone->childbase)) >= 2) { add_blender_leaf_bone( bone, ob_arm , node ); - else{*/ + } + else { +#endif node.start(); add_bone_transform(ob_arm, bone, node); diff --git a/source/blender/collada/ArmatureExporter.h b/source/blender/collada/ArmatureExporter.h index a7575e9fc09..086c16f0cd5 100644 --- a/source/blender/collada/ArmatureExporter.h +++ b/source/blender/collada/ArmatureExporter.h @@ -53,14 +53,14 @@ class SceneExporter; // XXX exporter writes wrong data for shared armatures. A separate // controller should be written for each armature-mesh binding how do // we make controller ids then? -class ArmatureExporter: public COLLADASW::LibraryControllers, protected TransformWriter, protected InstanceWriter +class ArmatureExporter : public COLLADASW::LibraryControllers, protected TransformWriter, protected InstanceWriter { public: ArmatureExporter(COLLADASW::StreamWriter *sw, const ExportSettings *export_settings); // write bone nodes - void add_armature_bones(Object *ob_arm, Scene* sce, SceneExporter* se, - std::list& child_objects); + void add_armature_bones(Object *ob_arm, Scene *sce, SceneExporter *se, + std::list& child_objects); bool is_skinned_mesh(Object *ob); @@ -76,7 +76,7 @@ private: const ExportSettings *export_settings; #if 0 - std::vector written_armatures; + std::vector written_armatures; bool already_written(Object *ob_arm); @@ -89,8 +89,8 @@ private: // Scene, SceneExporter and the list of child_objects // are required for writing bone parented objects - void add_bone_node(Bone *bone, Object *ob_arm, Scene* sce, SceneExporter* se, - std::list& child_objects); + void add_bone_node(Bone *bone, Object *ob_arm, Scene *sce, SceneExporter *se, + std::list& child_objects); void add_bone_transform(Object *ob_arm, Bone *bone, COLLADASW::Node& node); @@ -100,10 +100,10 @@ private: // ob should be of type OB_MESH // both args are required - void export_controller(Object* ob, Object *ob_arm); + void export_controller(Object *ob, Object *ob_arm); void add_joints_element(ListBase *defbase, - const std::string& joints_source_id, const std::string& inv_bind_mat_source_id); + const std::string& joints_source_id, const std::string& inv_bind_mat_source_id); void add_bind_shape_mat(Object *ob); @@ -111,15 +111,15 @@ private: std::string add_inv_bind_mats_source(Object *ob_arm, ListBase *defbase, const std::string& controller_id); - Bone *get_bone_from_defgroup(Object *ob_arm, bDeformGroup* def); + Bone *get_bone_from_defgroup(Object *ob_arm, bDeformGroup *def); - bool is_bone_defgroup(Object *ob_arm, bDeformGroup* def); + bool is_bone_defgroup(Object *ob_arm, bDeformGroup *def); std::string add_weights_source(Mesh *me, const std::string& controller_id, - const std::list& weights); + const std::list& weights); void add_vertex_weights_element(const std::string& weights_source_id, const std::string& joints_source_id, - const std::list& vcount, const std::list& joints); + const std::list& vcount, const std::list& joints); void write_bone_URLs(COLLADASW::InstanceController &ins, Object *ob_arm, Bone *bone); }; diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp index 6c9d277de54..ca07512f439 100644 --- a/source/blender/collada/DocumentImporter.cpp +++ b/source/blender/collada/DocumentImporter.cpp @@ -386,7 +386,7 @@ Object *DocumentImporter::create_instance_node(Object *source_ob, COLLADAFW::Nod Object *new_child = NULL; if (inodes.getCount()) { // \todo loop through instance nodes const COLLADAFW::UniqueId& id = inodes[0]->getInstanciatedObjectId(); - fprintf(stderr, "Doing %d child nodes\n", node_map.count(id)); + fprintf(stderr, "Doing %d child nodes\n", (int)node_map.count(id)); new_child = create_instance_node(object_map.find(id)->second, node_map[id], child_node, sce, is_library_node); } else { diff --git a/source/blender/collada/ExportSettings.h b/source/blender/collada/ExportSettings.h index c93a1b500ae..d0985a27a70 100644 --- a/source/blender/collada/ExportSettings.h +++ b/source/blender/collada/ExportSettings.h @@ -31,19 +31,18 @@ extern "C" { #ifndef __EXPORTSETTINGS_H__ #define __EXPORTSETTINGS_H__ -struct ExportSettings -{ - public: - bool apply_modifiers; - bool selected; - bool include_children; - bool include_armatures; - bool deform_bones_only; - bool use_object_instantiation; - bool sort_by_name; - bool second_life; - char *filepath; - LinkNode *export_set; +struct ExportSettings { +public: + bool apply_modifiers; + bool selected; + bool include_children; + bool include_armatures; + bool deform_bones_only; + bool use_object_instantiation; + bool sort_by_name; + bool second_life; + char *filepath; + LinkNode *export_set; }; #endif diff --git a/source/blender/collada/collada.cpp b/source/blender/collada/collada.cpp index 5b970c236a4..74f140e4813 100644 --- a/source/blender/collada/collada.cpp +++ b/source/blender/collada/collada.cpp @@ -49,20 +49,19 @@ int collada_import(bContext *C, const char *filepath) return 0; } -int collada_export( - Scene *sce, - const char *filepath, +int collada_export(Scene *sce, + const char *filepath, - int apply_modifiers, + int apply_modifiers, - int selected, - int include_children, - int include_armatures, - int deform_bones_only, + int selected, + int include_children, + int include_armatures, + int deform_bones_only, - int use_object_instantiation, - int sort_by_name, - int second_life) + int use_object_instantiation, + int sort_by_name, + int second_life) { ExportSettings export_settings; diff --git a/source/blender/collada/collada.h b/source/blender/collada/collada.h index 89b0e299408..e38f38b627a 100644 --- a/source/blender/collada/collada.h +++ b/source/blender/collada/collada.h @@ -33,23 +33,22 @@ struct Scene; #ifdef __cplusplus extern "C" { #endif - /* - * both return 1 on success, 0 on error - */ - int collada_import(bContext *C, const char *filepath); - int collada_export( - Scene *sce, - const char *filepath, - int apply_modifiers, - - int selected, - int include_children, - int include_armatures, - int deform_bones_only, - - int use_object_instantiation, - int sort_by_name, - int second_life); +/* + * both return 1 on success, 0 on error + */ +int collada_import(bContext *C, const char *filepath); +int collada_export(Scene *sce, + const char *filepath, + int apply_modifiers, + + int selected, + int include_children, + int include_armatures, + int deform_bones_only, + + int use_object_instantiation, + int sort_by_name, + int second_life); diff --git a/source/blender/collada/collada_utils.cpp b/source/blender/collada/collada_utils.cpp index 041ffd48f9d..0d17c89ea30 100644 --- a/source/blender/collada/collada_utils.cpp +++ b/source/blender/collada/collada_utils.cpp @@ -193,30 +193,19 @@ bool bc_is_base_node(LinkNode *export_set, Object *ob) bool bc_is_in_Export_set(LinkNode *export_set, Object *ob) { - LinkNode *node = export_set; - - while (node) { - Object *element = (Object *)node->link; - - if (element == ob) - return true; - - node= node->next; - } - return false; + return (BLI_linklist_index(export_set, ob) != -1); } bool bc_has_object_type(LinkNode *export_set, short obtype) { - LinkNode *node = export_set; + LinkNode *node; - while (node) { + for (node = export_set; node; node = node->next) { Object *ob = (Object *)node->link; - + /* XXX - why is this checking for ob->data? - we could be looking for empties */ if (ob->type == obtype && ob->data) { return true; } - node= node->next; } return false; } @@ -236,19 +225,16 @@ void bc_bubble_sort_by_Object_name(LinkNode *export_set) { bool sorted = false; LinkNode *node; - for(node=export_set; node->next && !sorted; node=node->next) { + for (node = export_set; node->next && !sorted; node = node->next) { sorted = true; LinkNode *current; - for (current=export_set; current->next; current = current->next) { + for (current = export_set; current->next; current = current->next) { Object *a = (Object *)current->link; Object *b = (Object *)current->next->link; - std::string str_a (a->id.name); - std::string str_b (b->id.name); - - if (str_a.compare(str_b) > 0) { + if (strcmp(a->id.name, b->id.name) > 0) { current->link = b; current->next->link = a; sorted = false; @@ -264,7 +250,7 @@ void bc_bubble_sort_by_Object_name(LinkNode *export_set) * are root bones. */ bool bc_is_root_bone(Bone *aBone, bool deform_bones_only) { - if(deform_bones_only) { + if (deform_bones_only) { Bone *root = NULL; Bone *bone = aBone; while (bone) { @@ -272,7 +258,7 @@ bool bc_is_root_bone(Bone *aBone, bool deform_bones_only) { root = bone; bone = bone->parent; } - return aBone==root; + return (aBone == root); } else return !(aBone->parent); diff --git a/source/blender/collada/collada_utils.h b/source/blender/collada/collada_utils.h index 6558ad3e9ca..5f1ce0ce6d9 100644 --- a/source/blender/collada/collada_utils.h +++ b/source/blender/collada/collada_utils.h @@ -51,11 +51,11 @@ extern "C" { #include "ExportSettings.h" -typedef std::map > TexIndexTextureArrayMap; +typedef std::map > TexIndexTextureArrayMap; extern float bc_get_float_value(const COLLADAFW::FloatOrDoubleArray& array, unsigned int index); extern int bc_test_parent_loop(Object *par, Object *ob); -extern int bc_set_parent(Object *ob, Object *par, bContext *C, bool is_parent_space=true); +extern int bc_set_parent(Object *ob, Object *par, bContext *C, bool is_parent_space = true); extern Object *bc_add_object(Scene *scene, int type, const char *name); extern Mesh *bc_to_mesh_apply_modifiers(Scene *scene, Object *ob); -- cgit v1.2.3