[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