Chromium Code Reviews| Index: serializer/cross/serializer.cc |
| =================================================================== |
| --- serializer/cross/serializer.cc (revision 19848) |
| +++ serializer/cross/serializer.cc (working copy) |
| @@ -47,6 +47,7 @@ |
| #include "core/cross/skin.h" |
| #include "core/cross/texture.h" |
| #include "core/cross/transform.h" |
| +#include "import/cross/destination_buffer.h" |
| #include "import/cross/iarchive_generator.h" |
| #include "import/cross/memory_buffer.h" |
| #include "import/cross/memory_stream.h" |
| @@ -345,6 +346,7 @@ |
| BinaryArchiveManager* binary_archive_manager) |
| : writer_(writer), |
| binary_archive_manager_(binary_archive_manager) { |
| + Enable<DestinationBuffer>(&CustomVisitor::Visit); |
| Enable<Buffer>(&CustomVisitor::Visit); |
| Enable<Curve>(&CustomVisitor::Visit); |
| Enable<Primitive>(&CustomVisitor::Visit); |
| @@ -356,6 +358,29 @@ |
| } |
| private: |
| + void Visit(DestinationBuffer* buffer) { |
| + Visit(static_cast<NamedObject*>(buffer)); |
|
apatrick
2009/07/07 00:58:25
Comment why its not the base class.
|
| + writer_->WritePropertyName("numElements"); |
| + Serialize(writer_, buffer->num_elements()); |
| + writer_->WritePropertyName("fields"); |
| + writer_->OpenArray(); |
| + const FieldRefArray& fields = buffer->fields(); |
| + for (size_t ii = 0; ii < fields.size(); ++ii) { |
| + Field* field = fields[ii].Get(); |
| + writer_->BeginCompacting(); |
| + writer_->OpenObject(); |
| + writer_->WritePropertyName("id"); |
| + Serialize(writer_, field->id()); |
| + writer_->WritePropertyName("type"); |
| + Serialize(writer_, field->GetClassName()); |
| + writer_->WritePropertyName("numComponents"); |
| + Serialize(writer_, field->num_components()); |
| + writer_->CloseObject(); |
| + writer_->EndCompacting(); |
| + } |
| + writer_->CloseArray(); |
| + } |
| + |
| void Visit(Buffer* buffer) { |
| Visit(static_cast<NamedObject*>(buffer)); |
| @@ -585,6 +610,7 @@ |
| : binary_archive_manager_(binary_archive_manager) { |
| Enable<Curve>(&BinaryVisitor::Visit); |
| Enable<IndexBuffer>(&BinaryVisitor::Visit); |
| + Enable<DestinationBuffer>(&BinaryVisitor::Visit); |
| Enable<VertexBufferBase>(&BinaryVisitor::Visit); |
| Enable<Skin>(&BinaryVisitor::Visit); |
| } |
| @@ -608,6 +634,11 @@ |
| serialized_data.GetLength()); |
| } |
| + void Visit(DestinationBuffer* buffer) { |
| + // Destination buffers should NOT have their contents serialized. |
| + Visit(static_cast<Buffer*>(buffer)); |
| + } |
| + |
| void Visit(IndexBuffer* buffer) { |
| Visit(static_cast<Buffer*>(buffer)); |