Commit: be4c8e66450f17b955a655e1f7114102b0ebd771 Author: Lukas Tönne Date: Mon Mar 16 09:43:27 2015 +0100 Branches: alembic_pointcache https://developer.blender.org/rBbe4c8e66450f17b955a655e1f7114102b0ebd771
Simplification of the archive init functions in writers and readers. Now the base types for readers/writers are not nominally forming the interface any more (they may be removed entirely later). This makes possible a cleaner init method directly in the Abc Writer/Reader classes. Further work may be required in this area. =================================================================== M source/blender/blenkernel/intern/cache_library.c M source/blender/editors/io/io_cache_library.c M source/blender/pointcache/PTC_api.cpp M source/blender/pointcache/PTC_api.h M source/blender/pointcache/alembic/abc_cloth.cpp M source/blender/pointcache/alembic/abc_cloth.h M source/blender/pointcache/alembic/abc_group.cpp M source/blender/pointcache/alembic/abc_group.h M source/blender/pointcache/alembic/abc_mesh.cpp M source/blender/pointcache/alembic/abc_mesh.h M source/blender/pointcache/alembic/abc_object.cpp M source/blender/pointcache/alembic/abc_object.h M source/blender/pointcache/alembic/abc_particles.cpp M source/blender/pointcache/alembic/abc_particles.h M source/blender/pointcache/alembic/abc_reader.cpp M source/blender/pointcache/alembic/abc_reader.h M source/blender/pointcache/alembic/abc_writer.h M source/blender/pointcache/intern/ptc_types.h M source/blender/pointcache/intern/reader.cpp M source/blender/pointcache/intern/reader.h M source/blender/pointcache/intern/writer.cpp M source/blender/pointcache/intern/writer.h =================================================================== diff --git a/source/blender/blenkernel/intern/cache_library.c b/source/blender/blenkernel/intern/cache_library.c index 0b63ad5..3ae8f8c 100644 --- a/source/blender/blenkernel/intern/cache_library.c +++ b/source/blender/blenkernel/intern/cache_library.c @@ -846,7 +846,7 @@ struct PTCWriterArchive *BKE_cache_library_writers_open_archive(Scene *scene, Ca archive = PTC_open_writer_archive(scene, filename); for (link = writers->first; link; link = link->next) { - PTC_writer_set_archive(link->writer, archive); + PTC_writer_init(link->writer, archive); } for (link = writers->first; link; link = link->next) { @@ -991,7 +991,7 @@ eCacheReadSampleResult BKE_cache_library_read_derived_mesh(Scene *scene, float f BKE_cache_archive_path(cachelib->filepath, (ID *)cachelib, cachelib->id.lib, filename, sizeof(filename)); archive = PTC_open_reader_archive(scene, filename); - PTC_reader_set_archive(reader, archive); + PTC_reader_init(reader, archive); result = BKE_cache_read_result(PTC_read_sample(reader, frame)); item->read_result = result; @@ -1021,7 +1021,7 @@ eCacheReadSampleResult BKE_cache_library_read_hair_dynamics(Scene *scene, float BKE_cache_archive_path(cachelib->filepath, (ID *)cachelib, cachelib->id.lib, filename, sizeof(filename)); archive = PTC_open_reader_archive(scene, filename); - PTC_reader_set_archive(reader, archive); + PTC_reader_init(reader, archive); result = BKE_cache_read_result(PTC_read_sample(reader, frame)); item->read_result = result; @@ -1049,7 +1049,7 @@ eCacheReadSampleResult BKE_cache_library_read_particles(Scene *scene, float fram BKE_cache_archive_path(cachelib->filepath, (ID *)cachelib, cachelib->id.lib, filename, sizeof(filename)); archive = PTC_open_reader_archive(scene, filename); - PTC_reader_set_archive(reader, archive); + PTC_reader_init(reader, archive); result = BKE_cache_read_result(PTC_read_sample(reader, frame)); item->read_result = result; @@ -1077,7 +1077,7 @@ eCacheReadSampleResult BKE_cache_library_read_particles_pathcache_parents(Scene BKE_cache_archive_path(cachelib->filepath, (ID *)cachelib, cachelib->id.lib, filename, sizeof(filename)); archive = PTC_open_reader_archive(scene, filename); - PTC_reader_set_archive(reader, archive); + PTC_reader_init(reader, archive); result = BKE_cache_read_result(PTC_read_sample(reader, frame)); item->read_result = result; @@ -1105,7 +1105,7 @@ eCacheReadSampleResult BKE_cache_library_read_particles_pathcache_children(Scene BKE_cache_archive_path(cachelib->filepath, (ID *)cachelib, cachelib->id.lib, filename, sizeof(filename)); archive = PTC_open_reader_archive(scene, filename); - PTC_reader_set_archive(reader, archive); + PTC_reader_init(reader, archive); result = BKE_cache_read_result(PTC_read_sample(reader, frame)); item->read_result = result; @@ -1236,7 +1236,7 @@ bool BKE_cache_read_dupligroup(Main *bmain, Scene *scene, float frame, eCacheLib archive = PTC_open_reader_archive(scene, filename); reader = PTC_reader_dupligroup(dupgroup->id.name, dupgroup, dupcache); - PTC_reader_set_archive(reader, archive); + PTC_reader_init(reader, archive); result = BKE_cache_read_result(PTC_read_sample(reader, frame)); diff --git a/source/blender/editors/io/io_cache_library.c b/source/blender/editors/io/io_cache_library.c index 5a535b0..094f9b1 100644 --- a/source/blender/editors/io/io_cache_library.c +++ b/source/blender/editors/io/io_cache_library.c @@ -282,7 +282,7 @@ static void cache_library_bake_startjob(void *customdata, short *stop, short *do data->archive = PTC_open_writer_archive(scene, filename); data->writer = PTC_writer_dupligroup(data->cachelib->group->id.name, &data->eval_ctx, scene, data->cachelib->group); - PTC_writer_set_archive(data->writer, data->archive); + PTC_writer_init(data->writer, data->archive); G.is_break = false; diff --git a/source/blender/pointcache/PTC_api.cpp b/source/blender/pointcache/PTC_api.cpp index b2a9a56..a37709d 100644 --- a/source/blender/pointcache/PTC_api.cpp +++ b/source/blender/pointcache/PTC_api.cpp @@ -117,11 +117,11 @@ void PTC_close_reader_archive(PTCReaderArchive *_archive) delete archive; } -void PTC_writer_set_archive(PTCWriter *_writer, PTCWriterArchive *_archive) +void PTC_writer_init(PTCWriter *_writer, PTCWriterArchive *_archive) { PTC::Writer *writer = (PTC::Writer *)_writer; PTC::WriterArchive *archive = (PTC::WriterArchive *)_archive; - writer->set_archive(archive); + writer->init(archive); } void PTC_writer_create_refs(PTCWriter *_writer) @@ -130,11 +130,11 @@ void PTC_writer_create_refs(PTCWriter *_writer) writer->create_refs(); } -void PTC_reader_set_archive(PTCReader *_reader, PTCReaderArchive *_archive) +void PTC_reader_init(PTCReader *_reader, PTCReaderArchive *_archive) { PTC::Reader *reader = (PTC::Reader *)_reader; PTC::ReaderArchive *archive = (PTC::ReaderArchive *)_archive; - reader->set_archive(archive); + reader->init(archive); } /* ========================================================================= */ diff --git a/source/blender/pointcache/PTC_api.h b/source/blender/pointcache/PTC_api.h index 105dabb..48d4a94 100644 --- a/source/blender/pointcache/PTC_api.h +++ b/source/blender/pointcache/PTC_api.h @@ -69,9 +69,9 @@ void PTC_close_writer_archive(struct PTCWriterArchive *archive); struct PTCReaderArchive *PTC_open_reader_archive(struct Scene *scene, const char *path); void PTC_close_reader_archive(struct PTCReaderArchive *archive); -void PTC_writer_set_archive(struct PTCWriter *writer, struct PTCWriterArchive *archive); +void PTC_writer_init(struct PTCWriter *writer, struct PTCWriterArchive *archive); void PTC_writer_create_refs(struct PTCWriter *writer); -void PTC_reader_set_archive(struct PTCReader *reader, struct PTCReaderArchive *archive); +void PTC_reader_init(struct PTCReader *reader, struct PTCReaderArchive *archive); /*** Reader/Writer Interface ***/ diff --git a/source/blender/pointcache/alembic/abc_cloth.cpp b/source/blender/pointcache/alembic/abc_cloth.cpp index 594bb4d..1e6621b 100644 --- a/source/blender/pointcache/alembic/abc_cloth.cpp +++ b/source/blender/pointcache/alembic/abc_cloth.cpp @@ -45,23 +45,18 @@ AbcClothWriter::~AbcClothWriter() { } -void AbcClothWriter::open_archive(WriterArchive *archive) +void AbcClothWriter::init_abc(OObject parent) { - BLI_assert(dynamic_cast<AbcWriterArchive*>(archive)); - AbcWriter::abc_archive(static_cast<AbcWriterArchive*>(archive)); - - if (abc_archive()->archive) { - OObject parent = abc_archive()->get_id_object((ID *)m_ob); - if (parent) { - m_points = OPoints(parent, m_name, abc_archive()->frame_sampling_index()); - - OPointsSchema &schema = m_points.getSchema(); - OCompoundProperty geom_params = schema.getArbGeomParams(); - - m_param_velocities = OV3fGeomParam(geom_params, "velocities", false, kVaryingScope, 1, 0); - m_param_goal_positions = OP3fGeomParam(geom_params, "goal_positions", false, kVaryingScope, 1, 0); - } - } + if (m_points) + return; + + m_points = OPoints(parent, m_name, abc_archive()->frame_sampling_index()); + + OPointsSchema &schema = m_points.getSchema(); + OCompoundProperty geom_params = schema.getArbGeomParams(); + + m_param_velocities = OV3fGeomParam(geom_params, "velocities", false, kVaryingScope, 1, 0); + m_param_goal_positions = OP3fGeomParam(geom_params, "goal_positions", false, kVaryingScope, 1, 0); } static V3fArraySample create_sample_velocities(Cloth *cloth, std::vector<V3f> &data) @@ -143,22 +138,19 @@ AbcClothReader::~AbcClothReader() { } -void AbcClothReader::open_archive(ReaderArchive *archive) +void AbcClothReader::init_abc(IObject parent) { - BLI_assert(dynamic_cast<AbcReaderArchive*>(archive)); - AbcReader::abc_archive(static_cast<AbcReaderArchive*>(archive)); - - if (abc_archive()->archive) { - IObject parent = abc_archive()->get_id_object((ID *)m_ob); - if (parent && parent.getChild(m_name)) { - m_points = IPoints(parent, m_name); - - IPointsSchema &schema = m_points.getSchema(); - ICompoundProperty geom_params = schema.getArbGeomParams(); - - m_param_velocities = IV3fGeomParam(geom_params, "velocities", 0); - m_param_goal_positions= IP3fGeomParam(geom_params, "goal_positions", 0); - } + if (m_points) + return; + + if (parent.getChild(m_name)) { + m_points = IPoints(parent, m_name); + + IPointsSchema &schema = m_points.getSchema(); + ICompoundProperty geom_params = schema.getArbGeomParams(); + + m_param_velocities = IV3fGeomParam(geom_params, "velocities", 0); + m_param_goal_positions= IP3fGeomParam(geom_params, "goal_positions", 0); } } diff --git a/source/blender/pointcache/alembic/abc_cloth.h b/source/blender/pointcache/alembic/abc_cloth.h index 947f49a..42460d1 100644 --- a/source/blender/pointcache/alembic/abc_cloth.h +++ b/source/blender/pointcache/alembic/abc_cloth.h @@ -38,7 +38,7 @@ public: AbcClothWriter(const std::string &name, Object *ob, ClothModifierData *clmd); ~AbcClothWriter(); - void open_archive(WriterArchive *archive); + void init_abc(Abc::OObject parent); void write_sample(); @@ -53,7 +53,7 @@ public: AbcClothReader(const std::string &name, Object *ob, ClothModifierData *clmd); ~AbcClothReader(); - void open_archive(ReaderArchive *archive); + void init_abc(Abc::IObject parent); PTCReadSampleResult read_sample(float frame); diff --git a/source/blender/pointcache/alembic/abc_group.cpp b/source/blender/pointcache/alembic/abc_group.cpp index b2be672..fead89e 100644 --- a/source/blender/pointcache/alembic/abc_group.cpp +++ b/source/blender/pointcache/alembic/abc_group.cpp @@ -49,14 +49,12 @@ AbcGroupWriter::AbcGroupWriter(const std::string &name, Group *group) : { } -void AbcGroupWriter::open_archive(WriterArchive *archive) +void AbcGroupWriter::init_abc() { - BLI_assert(dynamic_cast<AbcWriterArchive*>(archive)); - AbcWriter::abc_archive(static_cast<AbcWriterArchive*>(archive)); + if (m_abc_object) + return; - if (abc_archive()->archive) { - m_abc_object = abc_archive()->add_id_object<OObject>((ID *)m_group); - } + m_abc_object = abc_archive()->add_id_object<OObject>((ID *)m_gro @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs