diff options
author | Lukas Tönne <lukas.toenne@gmail.com> | 2015-03-19 15:23:33 +0300 |
---|---|---|
committer | Lukas Tönne <lukas.toenne@gmail.com> | 2015-03-26 16:13:40 +0300 |
commit | aeb4384d5aa5b12c52d68059e9ce8c0a93f08f0c (patch) | |
tree | f14ab22ba0aeee1feff799dfec1a734f4189a219 /source | |
parent | aef3dc4938c8365984b3b9d4710dbd02abdf9248 (diff) |
MCol customdata caching.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/pointcache/alembic/abc_customdata.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/source/blender/pointcache/alembic/abc_customdata.cpp b/source/blender/pointcache/alembic/abc_customdata.cpp index 710e0e19314..92b09dfc564 100644 --- a/source/blender/pointcache/alembic/abc_customdata.cpp +++ b/source/blender/pointcache/alembic/abc_customdata.cpp @@ -108,6 +108,14 @@ void write_sample<CD_MDEFORMVERT>(CustomDataWriter *writer, OCompoundProperty &p } template <> +void write_sample<CD_MCOL>(CustomDataWriter *writer, OCompoundProperty &parent, const std::string &name, void *data, int num_data) +{ + OC4fArrayProperty prop = writer->add_array_property<OC4fArrayProperty>(name, parent); + + prop.set(OC4fArrayProperty::sample_type((C4f *)data, num_data)); +} + +template <> void write_sample<CD_ORIGINDEX>(CustomDataWriter *writer, OCompoundProperty &parent, const std::string &name, void *data, int num_data) { OInt32ArrayProperty prop = writer->add_array_property<OInt32ArrayProperty>(name, parent); @@ -203,6 +211,20 @@ PTCReadSampleResult read_sample<CD_MDEFORMVERT>(CustomDataReader *reader, ICompo } template <> +PTCReadSampleResult read_sample<CD_MCOL>(CustomDataReader *reader, ICompoundProperty &parent, const ISampleSelector &ss, const std::string &name, void *data, int num_data) +{ + IC4fArrayProperty prop = reader->add_array_property<IC4fArrayProperty>(name, parent); + + C4fArraySamplePtr sample = prop.getValue(ss); + + if (sample->size() != num_data) + return PTC_READ_SAMPLE_INVALID; + + memcpy(data, sample->getData(), sizeof(C4f) * num_data); + return PTC_READ_SAMPLE_EXACT; +} + +template <> PTCReadSampleResult read_sample<CD_ORIGINDEX>(CustomDataReader *reader, ICompoundProperty &parent, const ISampleSelector &ss, const std::string &name, void *data, int num_data) { IInt32ArrayProperty prop = reader->add_array_property<IInt32ArrayProperty>(name, parent); @@ -212,7 +234,7 @@ PTCReadSampleResult read_sample<CD_ORIGINDEX>(CustomDataReader *reader, ICompoun if (sample->size() != num_data) return PTC_READ_SAMPLE_INVALID; - memcpy(data, sample->getData(), num_data); + memcpy(data, sample->getData(), sizeof(int32_t) * num_data); return PTC_READ_SAMPLE_EXACT; } |