[Bf-blender-cvs] [8c05580] alembic: Write out sim debug data along with dupli caches, if the global sim debug flag is enabled.
Lukas Tönne
noreply at git.blender.org
Sun Apr 5 17:11:40 CEST 2015
Commit: 8c055802a212f7c994892356837b0425808990f4
Author: Lukas Tönne
Date: Sun Apr 5 16:02:41 2015 +0200
Branches: alembic
https://developer.blender.org/rB8c055802a212f7c994892356837b0425808990f4
Write out sim debug data along with dupli caches, if the global sim
debug flag is enabled.
===================================================================
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_group.cpp
M source/blender/pointcache/alembic/abc_group.h
M source/blender/pointcache/alembic/alembic.cpp
M source/blender/pointcache/intern/ptc_types.h
===================================================================
diff --git a/source/blender/editors/io/io_cache_library.c b/source/blender/editors/io/io_cache_library.c
index 9ea43dc..b66da00 100644
--- a/source/blender/editors/io/io_cache_library.c
+++ b/source/blender/editors/io/io_cache_library.c
@@ -249,7 +249,7 @@ static void cache_library_bake_do(CacheLibraryBakeJob *data)
data->writer = PTC_writer_dupligroup(data->group->id.name, &data->eval_ctx, scene, data->group, data->cachelib);
break;
case CACHE_LIBRARY_SOURCE_CACHE:
- data->writer = PTC_writer_duplicache(data->group->id.name, data->group, process_data.dupcache, data->cachelib->data_types);
+ data->writer = PTC_writer_duplicache(data->group->id.name, data->group, process_data.dupcache, data->cachelib->data_types, G.debug & G_DEBUG_SIMDATA);
break;
}
if (!data->writer)
diff --git a/source/blender/pointcache/PTC_api.cpp b/source/blender/pointcache/PTC_api.cpp
index 11b603b..592fc57 100644
--- a/source/blender/pointcache/PTC_api.cpp
+++ b/source/blender/pointcache/PTC_api.cpp
@@ -70,7 +70,7 @@ class StubFactory : public Factory {
Writer *create_writer_derived_final_realtime(const std::string &/*name*/, Object */*ob*/) { return NULL; }
Writer *create_writer_derived_final_render(const std::string &/*name*/, Scene */*scene*/, Object */*ob*/, DerivedMesh **/*render_dm_ptr*/) { return NULL; }
Writer *create_writer_dupligroup(const std::string &/*name*/, EvaluationContext */*eval_ctx*/, Scene */*scene*/, Group */*group*/, CacheLibrary */*cachelib*/) { return NULL; }
- Writer *create_writer_duplicache(const std::string &/*name*/, Group */*group*/, DupliCache */*dupcache*/, int /*datatypes*/) { return NULL; }
+ Writer *create_writer_duplicache(const std::string &/*name*/, Group */*group*/, DupliCache */*dupcache*/, int /*datatypes*/, bool /*do_sim_debug*/) { return NULL; }
Reader *create_reader_duplicache(const std::string &/*name*/, Group */*group*/, DupliCache */*dupcache*/) { return NULL; }
Reader *create_reader_duplicache_object(const std::string &/*name*/, Object */*ob*/, DupliObjectData */*data*/) { return NULL; }
};
@@ -249,9 +249,9 @@ PTCWriter *PTC_writer_dupligroup(const char *name, struct EvaluationContext *eva
return (PTCWriter *)PTC::Factory::alembic->create_writer_dupligroup(name, eval_ctx, scene, group, cachelib);
}
-PTCWriter *PTC_writer_duplicache(const char *name, struct Group *group, struct DupliCache *dupcache, int datatypes)
+PTCWriter *PTC_writer_duplicache(const char *name, struct Group *group, struct DupliCache *dupcache, int datatypes, bool do_sim_debug)
{
- return (PTCWriter *)PTC::Factory::alembic->create_writer_duplicache(name, group, dupcache, datatypes);
+ return (PTCWriter *)PTC::Factory::alembic->create_writer_duplicache(name, group, dupcache, datatypes, do_sim_debug);
}
PTCReader *PTC_reader_duplicache(const char *name, struct Group *group, struct DupliCache *dupcache)
diff --git a/source/blender/pointcache/PTC_api.h b/source/blender/pointcache/PTC_api.h
index 0bb5889..51963f7 100644
--- a/source/blender/pointcache/PTC_api.h
+++ b/source/blender/pointcache/PTC_api.h
@@ -83,7 +83,7 @@ PTCReadSampleResult PTC_test_sample(struct PTCReader *reader, float frame);
char *PTC_get_archive_info(struct PTCReaderArchive *archive);
struct PTCWriter *PTC_writer_dupligroup(const char *name, struct EvaluationContext *eval_ctx, struct Scene *scene, struct Group *group, struct CacheLibrary *cachelib);
-struct PTCWriter *PTC_writer_duplicache(const char *name, struct Group *group, struct DupliCache *dupcache, int datatypes);
+struct PTCWriter *PTC_writer_duplicache(const char *name, struct Group *group, struct DupliCache *dupcache, int datatypes, bool do_sim_debug);
struct PTCReader *PTC_reader_duplicache(const char *name, struct Group *group, struct DupliCache *dupcache);
struct PTCReader *PTC_reader_duplicache_object(const char *name, struct Object *ob, struct DupliObjectData *data);
diff --git a/source/blender/pointcache/alembic/abc_group.cpp b/source/blender/pointcache/alembic/abc_group.cpp
index 1cd9ee9..b64792a 100644
--- a/source/blender/pointcache/alembic/abc_group.cpp
+++ b/source/blender/pointcache/alembic/abc_group.cpp
@@ -27,6 +27,7 @@
#include "abc_group.h"
#include "abc_object.h"
#include "abc_particles.h"
+#include "abc_simdebug.h"
extern "C" {
#include "BLI_listbase.h"
@@ -218,11 +219,17 @@ AbcWriter *AbcDupligroupWriter::find_id_writer(ID *id) const
/* ------------------------------------------------------------------------- */
-AbcDupliCacheWriter::AbcDupliCacheWriter(const std::string &name, Group *group, DupliCache *dupcache, int data_types) :
+AbcDupliCacheWriter::AbcDupliCacheWriter(const std::string &name, Group *group, DupliCache *dupcache, int data_types, bool do_sim_debug) :
GroupWriter(group, name),
m_dupcache(dupcache),
- m_data_types(data_types)
+ m_data_types(data_types),
+ m_simdebug_writer(NULL)
{
+ if (do_sim_debug) {
+ BKE_sim_debug_data_set_enabled(true);
+ if (_sim_debug_data)
+ m_simdebug_writer = new AbcSimDebugWriter("sim_debug", _sim_debug_data);
+ }
}
AbcDupliCacheWriter::~AbcDupliCacheWriter()
@@ -231,6 +238,9 @@ AbcDupliCacheWriter::~AbcDupliCacheWriter()
if (it->second)
delete it->second;
}
+
+ if (m_simdebug_writer)
+ delete m_simdebug_writer;
}
void AbcDupliCacheWriter::init_abc()
@@ -239,6 +249,11 @@ void AbcDupliCacheWriter::init_abc()
return;
m_abc_group = abc_archive()->add_id_object<OObject>((ID *)m_group);
+
+ if (m_simdebug_writer) {
+ m_simdebug_writer->init(abc_archive());
+ m_simdebug_writer->init_abc(abc_archive()->root());
+ }
}
void AbcDupliCacheWriter::write_sample_object_data(DupliObjectData *data)
@@ -308,6 +323,10 @@ void AbcDupliCacheWriter::write_sample()
for (dob = (DupliObject *)m_dupcache->duplilist.first, i = 0; dob; dob = dob->next, ++i) {
write_sample_dupli(dob, i);
}
+
+ if (m_simdebug_writer) {
+ m_simdebug_writer->write_sample();
+ }
}
AbcWriter *AbcDupliCacheWriter::find_id_writer(ID *id) const
diff --git a/source/blender/pointcache/alembic/abc_group.h b/source/blender/pointcache/alembic/abc_group.h
index a43a2ce..a4cee8a5 100644
--- a/source/blender/pointcache/alembic/abc_group.h
+++ b/source/blender/pointcache/alembic/abc_group.h
@@ -37,6 +37,7 @@ namespace PTC {
class AbcDerivedMeshWriter;
class AbcStrandsWriter;
+class AbcSimDebugWriter;
class AbcGroupWriter : public GroupWriter, public AbcWriter {
public:
@@ -103,7 +104,7 @@ public:
typedef std::map<ID *, AbcWriter *> IDWriterMap;
typedef std::pair<ID *, AbcWriter *> IDWriterPair;
- AbcDupliCacheWriter(const std::string &name, Group *group, DupliCache *dupcache, int data_types);
+ AbcDupliCacheWriter(const std::string &name, Group *group, DupliCache *dupcache, int data_types, bool do_sim_debug = false);
~AbcDupliCacheWriter();
void init_abc();
@@ -122,6 +123,7 @@ private:
ObjectWriterList m_object_writers;
PropertyWriterList m_property_writers;
IDWriterMap m_id_writers;
+ AbcSimDebugWriter *m_simdebug_writer;
};
class AbcDupliCacheReader : public GroupReader, public AbcReader {
diff --git a/source/blender/pointcache/alembic/alembic.cpp b/source/blender/pointcache/alembic/alembic.cpp
index 1b17bb0..99d2376 100644
--- a/source/blender/pointcache/alembic/alembic.cpp
+++ b/source/blender/pointcache/alembic/alembic.cpp
@@ -147,9 +147,9 @@ class AbcFactory : public Factory {
return new AbcDupligroupWriter(name, eval_ctx, scene, group, cachelib);
}
- Writer *create_writer_duplicache(const std::string &name, Group *group, DupliCache *dupcache, int datatypes)
+ Writer *create_writer_duplicache(const std::string &name, Group *group, DupliCache *dupcache, int datatypes, bool do_sim_debug)
{
- return new AbcDupliCacheWriter(name, group, dupcache, datatypes);
+ return new AbcDupliCacheWriter(name, group, dupcache, datatypes, do_sim_debug);
}
Reader *create_reader_duplicache(const std::string &name, Group *group, DupliCache *dupcache)
diff --git a/source/blender/pointcache/intern/ptc_types.h b/source/blender/pointcache/intern/ptc_types.h
index d56ee77..bc0b4d6 100644
--- a/source/blender/pointcache/intern/ptc_types.h
+++ b/source/blender/pointcache/intern/ptc_types.h
@@ -229,7 +229,7 @@ struct Factory {
virtual Writer *create_writer_derived_final_render(const std::string &name, Scene *scene, Object *ob, DerivedMesh **render_dm_ptr) = 0;
virtual Writer *create_writer_dupligroup(const std::string &name, EvaluationContext *eval_ctx, Scene *scene, Group *group, CacheLibrary *cachelib) = 0;
- virtual Writer *create_writer_duplicache(const std::string &name, Group *group, DupliCache *dupcache, int datatypes) = 0;
+ virtual Writer *create_writer_duplicache(const std::string &name, Group *group, DupliCache *dupcache, int datatypes, bool do_sim_debug) = 0;
virtual Reader *create_reader_duplicache(const std::string &name, Group *group, DupliCache *dupcache) = 0;
virtual Reader *create_reader_duplicache_object(const std::string &name, Object *ob, DupliObjectData *data) = 0;
More information about the Bf-blender-cvs
mailing list