From 8a2c30ac57ff5739a6ccbbdcbaa3f63c1438588b Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Mon, 22 Oct 2012 17:34:16 +0000 Subject: RNA C++ API improvements Added support of such features, as: - Ability to call RNA functions using C++ classes For example RenderEngine.tag_update - Property setters (for scalars and arrays) Used Qt/jQuery-like getters/setters style, meaning Class.prop() is a getter, Class.prop(value) is a setter. Still to come: Collection functions are not currently registering inside a property Meaning BlendData.meshes wouldn't be a subclass of BlendDataMeshes result you'll need to explicitly create BlendDataMeshes for now instead of doing BlendData.meshes.remove() --- intern/cycles/blender/blender_util.h | 44 +++++++++--------------------------- 1 file changed, 11 insertions(+), 33 deletions(-) (limited to 'intern/cycles/blender/blender_util.h') diff --git a/intern/cycles/blender/blender_util.h b/intern/cycles/blender/blender_util.h index da8f30ea169..079320e909c 100644 --- a/intern/cycles/blender/blender_util.h +++ b/intern/cycles/blender/blender_util.h @@ -30,29 +30,7 @@ * todo: clean this up ... */ extern "C" { - -struct RenderEngine; -struct RenderResult; - -ID *rna_Object_to_mesh(void *_self, void *reports, void *scene, int apply_modifiers, int settings); -void rna_Main_meshes_remove(void *bmain, void *reports, void *mesh); -void rna_Object_create_duplilist(void *ob, void *reports, void *sce, int settings); -void rna_Object_free_duplilist(void *ob); -void rna_RenderLayer_rect_set(PointerRNA *ptr, const float *values); -void rna_RenderPass_rect_set(PointerRNA *ptr, const float *values); -struct RenderResult *RE_engine_begin_result(struct RenderEngine *engine, int x, int y, int w, int h, const char *layername); -void RE_engine_update_result(struct RenderEngine *engine, struct RenderResult *result); -void RE_engine_end_result(struct RenderEngine *engine, struct RenderResult *result, int cancel); -int RE_engine_test_break(struct RenderEngine *engine); -void RE_engine_update_stats(struct RenderEngine *engine, const char *stats, const char *info); -void RE_engine_update_progress(struct RenderEngine *engine, float progress); -void engine_tag_redraw(void *engine); -void engine_tag_update(void *engine); -int rna_Object_is_modified(void *ob, void *scene, int settings); -int rna_Object_is_deform_modified(void *ob, void *scene, int settings); void BLI_timestr(double _time, char *str); -void rna_ColorRamp_eval(void *coba, float position, float color[4]); -void rna_Scene_frame_set(void *scene, int frame, float subframe); void BKE_image_user_frame_calc(void *iuser, int cfra, int fieldnr); void BKE_image_user_file_path(void *iuser, void *ima, char *path); } @@ -61,10 +39,7 @@ CCL_NAMESPACE_BEGIN static inline BL::Mesh object_to_mesh(BL::Object self, BL::Scene scene, bool apply_modifiers, bool render) { - ID *data = rna_Object_to_mesh(self.ptr.data, NULL, scene.ptr.data, apply_modifiers, (render)? 2: 1); - PointerRNA ptr; - RNA_id_pointer_create(data, &ptr); - return BL::Mesh(ptr); + return self.to_mesh(NULL, scene, apply_modifiers, (render)? 2: 1); } static inline void colorramp_to_array(BL::ColorRamp ramp, float4 *data, int size) @@ -72,34 +47,37 @@ static inline void colorramp_to_array(BL::ColorRamp ramp, float4 *data, int size for(int i = 0; i < size; i++) { float color[4]; - rna_ColorRamp_eval(ramp.ptr.data, i/(float)(size-1), color); + ramp.evaluate(i/(float)(size-1), color); data[i] = make_float4(color[0], color[1], color[2], color[3]); } } static inline void object_remove_mesh(BL::BlendData data, BL::Mesh mesh) { - rna_Main_meshes_remove(data.ptr.data, NULL, mesh.ptr.data); + /* TODO: BlendData.meshes ideally should be also a subclass of BlendDataMeshes */ + BL::BlendDataMeshes mesh_data(data.ptr); + + mesh_data.remove(NULL, mesh); } static inline void object_create_duplilist(BL::Object self, BL::Scene scene) { - rna_Object_create_duplilist(self.ptr.data, NULL, scene.ptr.data, 2); + self.dupli_list_create(NULL, scene, 2); } static inline void object_free_duplilist(BL::Object self) { - rna_Object_free_duplilist(self.ptr.data); + self.dupli_list_clear(); } static inline bool BKE_object_is_modified(BL::Object self, BL::Scene scene, bool preview) { - return rna_Object_is_modified(self.ptr.data, scene.ptr.data, (preview)? (1<<0): (1<<1))? true: false; + return self.is_modified(scene, (preview)? (1<<0): (1<<1))? true: false; } static inline bool BKE_object_is_deform_modified(BL::Object self, BL::Scene scene, bool preview) { - return rna_Object_is_deform_modified(self.ptr.data, scene.ptr.data, (preview)? (1<<0): (1<<1))? true: false; + return self.is_deform_modified(scene, (preview)? (1<<0): (1<<1))? true: false; } static inline string image_user_file_path(BL::ImageUser iuser, BL::Image ima, int cfra) @@ -112,7 +90,7 @@ static inline string image_user_file_path(BL::ImageUser iuser, BL::Image ima, in static inline void scene_frame_set(BL::Scene scene, int frame) { - rna_Scene_frame_set(scene.ptr.data, frame, 0.0f); + scene.frame_set(frame, 0.0f); } /* Utilities */ -- cgit v1.2.3