[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