Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorLukas Tönne <lukas.toenne@gmail.com>2015-03-19 15:23:33 +0300
committerLukas Tönne <lukas.toenne@gmail.com>2015-03-26 16:13:40 +0300
commitaeb4384d5aa5b12c52d68059e9ce8c0a93f08f0c (patch)
treef14ab22ba0aeee1feff799dfec1a734f4189a219 /source
parentaef3dc4938c8365984b3b9d4710dbd02abdf9248 (diff)
MCol customdata caching.
Diffstat (limited to 'source')
-rw-r--r--source/blender/pointcache/alembic/abc_customdata.cpp24
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;
}