11#include "COLLADAFWFloatOrDoubleArray.h"
12#include "COLLADAFWTypes.h"
13#include "COLLADASWColorOrTexture.h"
105 const std::string &ob_name,
106 const std::string &channel_type,
107 const std::string &axis_name,
108 const std::string &axis_separator =
"_");
128 bool apply_modifiers,
152 size_t i = s.rfind(probe);
153 if (
i != std::string::npos) {
154 return (s.substr(
i + probe.length(), s.length() -
i));
161 size_t i = s.find(probe);
162 if (
i != std::string::npos) {
163 return s.substr(0,
i);
168inline bool bc_startswith(std::string
const &value, std::string
const &starting)
170 if (starting.size() > value.size()) {
173 return (value.substr(0, starting.size()) == starting);
176inline bool bc_endswith(
const std::string &value,
const std::string &ending)
178 if (ending.size() > value.size()) {
182 return value.compare(value.size() - ending.size(), ending.size(), ending) == 0;
186inline bool bc_endswith(std::string
const &value, std::string
const &ending)
188 if (ending.size() > value.size()) {
191 return std::equal(ending.rbegin(), ending.rend(), value.rbegin());
196 const std::string &pattern,
197 const std::string &replacement);
207 bool scale_to_scene);
212extern void bc_decompose(
float mat[4][4],
float *loc,
float eul[3],
float quat[4],
float *
size);
234extern int bc_set_layer(
int bitfield,
int layer,
bool enable);
239 return fabsf(a -
b) < range;
244void bc_copy_m4d_v44(
double (&r)[4][4], std::vector<std::vector<double>> &a);
245void bc_copy_v44_m4d(std::vector<std::vector<double>> &r,
double (&a)[4][4]);
270 const std::string &key,
318 float from_mat[4][4],
319 bool use_local_space);
323 std::vector<Object *> base_objects;
328 base_objects.push_back(ob);
333 std::vector<Object *>::iterator it = std::find(base_objects.begin(), base_objects.end(), ob);
334 return (it != base_objects.end());
339 return base_objects.size();
344 return base_objects[index];
349 std::vector<unsigned int> normal_indices;
354 normal_indices.push_back(index);
359 return normal_indices[
i];
372 std::vector<std::string> bone_collections;
375 bool has_custom_tail;
376 bool has_custom_roll;
423 std::map<std::string, BoneExtensionMap *> extended_bone_maps;
452 const Color &default_color,
453 bool with_alpha =
true);
455COLLADASW::ColorOrTexture
bc_get_cot(
float r,
float g,
float b,
float a);
std::map< int, const BCMatrix * > BCMatrixSampleMap
General operations, lookup, etc. for blender objects.
Object is a sort of wrapper for general info.
BMesh const char void * data
ATTR_WARN_UNUSED_RESULT const BMVert * v
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void add_index(unsigned int index)
unsigned int operator[](unsigned int i)
void set_use_connect(int use_connect)
void set_roll(float roll)
const std::vector< std::string > & get_bone_collections()
void set_bone_collections(std::vector< std::string > bone_collections)
void set_tail(const float vec[])
void set_leaf_bone(bool state)
BoneExtended(EditBone *aBone)
void set_chain_length(int aLength)
void set_name(const char *aName)
BoneExtensionMap & getExtensionMap(bArmature *armature)
bool contains(Object *ob)
Object * bc_add_object(Main *bmain, Scene *scene, ViewLayer *view_layer, int type, const char *name)
COLLADASW::ColorOrTexture bc_get_cot_from_shader(bNode *shader, std::string nodeid, const Color &default_color, bool with_alpha=true)
COLLADASW::ColorOrTexture bc_get_specular(Material *ma)
COLLADASW::ColorOrTexture bc_get_ambient(Material *ma)
IDProperty * bc_get_IDProperty(Bone *bone, const std::string &key)
void bc_copy_farray_m4(float *r, float a[4][4])
const char * bc_CustomData_get_active_layer_name(const CustomData *data, eCustomDataType type)
bool bc_is_root_bone(Bone *aBone, bool deform_bones_only)
double bc_get_alpha(Material *ma)
AnimData * bc_getSceneLightAnimData(Object *ob)
bool bc_set_parent(Object *ob, Object *par, bContext *C, bool is_parent_space=true)
bNode * bc_get_master_shader(Material *ma)
std::vector< bAction * > bc_getSceneActions(const bContext *C, Object *ob, bool all_actions)
COLLADASW::ColorOrTexture bc_get_cot(float r, float g, float b, float a)
AnimData * bc_getSceneCameraAnimData(Object *ob)
std::string bc_url_encode(const std::string &data)
constexpr int LIMITTED_PRECISION
COLLADASW::ColorOrTexture bc_get_emission(Material *ma)
COLLADASW::ColorOrTexture bc_get_reflective(Material *ma)
std::string bc_get_action_id(const std::string &action_name, const std::string &ob_name, const std::string &channel_type, const std::string &axis_name, const std::string &axis_separator="_")
const char * bc_CustomData_get_layer_name(const CustomData *data, eCustomDataType type, int n)
bool bc_in_range(float a, float b, float range)
std::map< std::string, Image * > KeyImageMap
void bc_rotate_from_reference_quat(float quat_to[4], float quat_from[4], float mat_to[4][4])
double bc_get_reflectivity(Material *ma)
std::map< COLLADAFW::TextureMapId, std::vector< MTex * > > TexIndexTextureArrayMap
bool bc_endswith(const std::string &value, const std::string &ending)
void bc_copy_m4d_v44(double(&r)[4][4], std::vector< std::vector< double > > &a)
void bc_match_scale(Object *ob, UnitConverter &bc_unit, bool scale_to_scene)
void bc_set_IDProperty(EditBone *ebone, const char *key, float value)
bAction * bc_getSceneObjectAction(Object *ob)
AnimData * bc_getSceneMaterialAnimData(Material *ma)
std::set< Object * > BCObjectSet
Object * bc_get_assigned_armature(Object *ob)
void bc_add_global_transform(Matrix &to_mat, const Matrix &from_mat, const BCMatrix &global_transform, bool invert=false)
float bc_get_property(Bone *bone, const std::string &key, float def)
void bc_add_default_shader(bContext *C, Material *ma)
bool bc_startswith(std::string const &value, std::string const &starting)
Object * bc_add_armature(COLLADAFW::Node *node, ExtraTags *node_extra_tags, Main *bmain, Scene *scene, ViewLayer *view_layer, int type, const char *name)
void bc_set_IDPropertyMatrix(EditBone *ebone, const char *key, float mat[4][4])
std::string bc_string_before(const std::string &s, const std::string &probe)
bool bc_is_animated(BCMatrixSampleMap &values)
int bc_set_layer(int bitfield, int layer, bool enable)
void bc_triangulate_mesh(Mesh *mesh)
void bc_create_restpose_mat(BCExportSettings &export_settings, Bone *bone, float to_mat[4][4], float from_mat[4][4], bool use_local_space)
bool bc_get_float_from_shader(bNode *shader, double &val, std::string nodeid)
int bc_get_active_UVLayer(Object *ob)
void bc_bubble_sort_by_Object_name(LinkNode *export_set)
EditBone * bc_get_edit_bone(bArmature *armature, const char *name)
bool bc_validateConstraints(bConstraint *con)
Mesh * bc_get_mesh_copy(BlenderContext &blender_context, Object *ob, BC_export_mesh_type export_mesh_type, bool apply_modifiers, bool triangulate)
std::string bc_string_after(const std::string &s, const std::string &probe)
bool bc_has_animations(Scene *sce, LinkNode *export_set)
double bc_get_shininess(Material *ma)
std::map< COLLADAFW::UniqueId, Image * > UidImageMap
COLLADASW::ColorOrTexture bc_get_base_color(Material *ma)
float bc_get_float_value(const COLLADAFW::FloatOrDoubleArray &array, unsigned int index)
double bc_get_ior(Material *ma)
void bc_get_property_vector(Bone *bone, const std::string &key, float val[3], const float def[3])
void bc_copy_v44_m4d(std::vector< std::vector< double > > &r, double(&a)[4][4])
void bc_update_scene(BlenderContext &blender_context, float ctime)
void bc_sanitize_v3(double v[3], int precision)
std::string bc_replace_string(std::string data, const std::string &pattern, const std::string &replacement)
bool bc_bone_matrix_local_get(Object *ob, Bone *bone, Matrix &mat, bool for_opensim)
void bc_apply_global_transform(Matrix &to_mat, const BCMatrix &global_transform, bool invert=false)
std::map< std::string, BoneExtended * > BoneExtensionMap
void bc_copy_darray_m4d(double *r, double a[4][4])
void bc_enable_fcurves(bAction *act, const char *bone_name)
void bc_decompose(float mat[4][4], float *loc, float eul[3], float quat[4], float *size)
void bc_copy_m4_farray(float r[4][4], float *a)
bool bc_get_property_matrix(Bone *bone, const std::string &key, float mat[4][4])
bool bc_has_object_type(LinkNode *export_set, short obtype)
bool bc_is_leaf_bone(Bone *bone)
int bc_test_parent_loop(Object *par, Object *ob)
CCL_NAMESPACE_BEGIN ccl_device float invert(const float color, const float factor)