[Bf-blender-cvs] [117f4c7] alembic_pointcache: Store the scene pointer directly in reader/writer base class. This is required for a variety of uses, mostly related to fps calculation atm.

Lukas Tönne noreply at git.blender.org
Thu Oct 16 16:53:42 CEST 2014


Commit: 117f4c7d0e9426d352bba86d8d0837943c5926dc
Author: Lukas Tönne
Date:   Thu Nov 28 13:46:28 2013 +0100
Branches: alembic_pointcache
https://developer.blender.org/rB117f4c7d0e9426d352bba86d8d0837943c5926dc

Store the scene pointer directly in reader/writer base class. This is
required for a variety of uses, mostly related to fps calculation atm.

===================================================================

M	source/blender/pointcache/intern/particles.cpp
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/pointcache/intern/particles.cpp b/source/blender/pointcache/intern/particles.cpp
index 104fbec..de4987b 100644
--- a/source/blender/pointcache/intern/particles.cpp
+++ b/source/blender/pointcache/intern/particles.cpp
@@ -231,11 +231,11 @@ void OParticlesSchema::init(uint32_t iTsIdx)
 
 
 ParticlesWriter::ParticlesWriter(const std::string &filename, Scene *scene, Object *ob, ParticleSystem *psys) :
-    Writer(filename),
+    Writer(filename, scene),
     m_ob(ob),
     m_psys(psys)
 {
-	uint32_t fs = add_frame_sampling(scene);
+	uint32_t fs = add_frame_sampling();
 	
 	OObject root = m_archive.getTop();
 	m_points = OPoints(root, m_psys->name, fs);
@@ -273,7 +273,7 @@ void ParticlesWriter::write_sample()
 
 
 ParticlesReader::ParticlesReader(const std::string &filename, Scene *scene, Object *ob, ParticleSystem *psys) :
-    Reader(filename),
+    Reader(filename, scene),
     m_ob(ob),
     m_psys(psys)
 {
diff --git a/source/blender/pointcache/intern/reader.cpp b/source/blender/pointcache/intern/reader.cpp
index 951deb5..c5c29e2 100644
--- a/source/blender/pointcache/intern/reader.cpp
+++ b/source/blender/pointcache/intern/reader.cpp
@@ -29,7 +29,8 @@ namespace PTC {
 
 using namespace Abc;
 
-Reader::Reader(const std::string &filename)
+Reader::Reader(const std::string &filename, Scene *scene) :
+    m_scene(scene)
 {
 	m_archive = IArchive(AbcCoreHDF5::ReadArchive(), filename, ErrorHandler::kThrowPolicy);
 }
@@ -38,9 +39,9 @@ Reader::~Reader()
 {
 }
 
-void Reader::get_frame_range(Scene *scene, int &start_frame, int &end_frame)
+void Reader::get_frame_range(int &start_frame, int &end_frame)
 {
-	if (scene->r.frs_sec_base == 0.0f) {
+	if (m_scene->r.frs_sec_base == 0.0f) {
 		/* Should never happen, just to be safe */
 		start_frame = end_frame = 1;
 		return;
@@ -49,7 +50,7 @@ void Reader::get_frame_range(Scene *scene, int &start_frame, int &end_frame)
 	double start_time, end_time;
 	GetArchiveStartAndEndTime(m_archive, start_time, end_time);
 	
-	double fps = (double)scene->r.frs_sec / (double)scene->r.frs_sec_base;
+	double fps = (double)m_scene->r.frs_sec / (double)m_scene->r.frs_sec_base;
 	start_frame = start_time * fps;
 	end_frame = end_time * fps;
 }
diff --git a/source/blender/pointcache/intern/reader.h b/source/blender/pointcache/intern/reader.h
index 56d85cd..61c39a9 100644
--- a/source/blender/pointcache/intern/reader.h
+++ b/source/blender/pointcache/intern/reader.h
@@ -31,15 +31,17 @@ using namespace Alembic;
 
 class Reader {
 public:
-	Reader(const std::string &filename);
+	Reader(const std::string &filename, Scene *scene);
 	virtual ~Reader();
 	
-	void get_frame_range(Scene *scene, int &start_frame, int &end_frame);
+	void get_frame_range(int &start_frame, int &end_frame);
 	
 	virtual void read_sample() = 0;
 	
 protected:
 	Abc::IArchive m_archive;
+	
+	Scene *m_scene;
 };
 
 } /* namespace PTC */
diff --git a/source/blender/pointcache/intern/writer.cpp b/source/blender/pointcache/intern/writer.cpp
index 8dc9a5b..2d298ec 100644
--- a/source/blender/pointcache/intern/writer.cpp
+++ b/source/blender/pointcache/intern/writer.cpp
@@ -39,7 +39,8 @@ static void ensure_directory(const char *filename)
 	BLI_dir_create_recursive(dir);
 }
 
-Writer::Writer(const std::string &filename)
+Writer::Writer(const std::string &filename, Scene *scene) :
+    m_scene(scene)
 {
 	ensure_directory(filename.c_str());
 	m_archive = OArchive(AbcCoreHDF5::WriteArchive(), filename, ErrorHandler::kThrowPolicy);
@@ -49,16 +50,16 @@ Writer::~Writer()
 {
 }
 
-uint32_t Writer::add_frame_sampling(Scene *scene)
+uint32_t Writer::add_frame_sampling()
 {
-	if (scene->r.frs_sec == 0.0f) {
+	if (m_scene->r.frs_sec == 0.0f) {
 		/* Should never happen, just to be safe
 		 * Index 0 is the default time sampling with a step of 1.0
 		 */
 		return 0;
 	}
 	
-	chrono_t cycle_time = (double)scene->r.frs_sec_base / (double)scene->r.frs_sec;
+	chrono_t cycle_time = (double)m_scene->r.frs_sec_base / (double)m_scene->r.frs_sec;
 	chrono_t start_time = 0.0f;
 	return m_archive.addTimeSampling(TimeSampling(cycle_time, start_time));
 }
diff --git a/source/blender/pointcache/intern/writer.h b/source/blender/pointcache/intern/writer.h
index b0e39e1..b502fab 100644
--- a/source/blender/pointcache/intern/writer.h
+++ b/source/blender/pointcache/intern/writer.h
@@ -31,15 +31,17 @@ using namespace Alembic;
 
 class Writer {
 public:
-	Writer(const std::string &filename);
+	Writer(const std::string &filename, Scene *scene);
 	virtual ~Writer();
 	
-	uint32_t add_frame_sampling(Scene *scene);
+	uint32_t add_frame_sampling();
 	
 	virtual void write_sample() = 0;
 	
 protected:
 	Abc::OArchive m_archive;
+	
+	Scene *m_scene;
 };
 
 } /* namespace PTC */




More information about the Bf-blender-cvs mailing list