Blender V5.0
abc_hierarchy_iterator.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2020 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4#pragma once
5
6#include "ABC_alembic.h"
7#include "abc_archive.h"
8
10
11#include <string>
12
13#include <Alembic/Abc/OObject.h>
14
15struct Depsgraph;
16struct Main;
17struct Object;
18
19namespace blender::io::alembic {
20
23
33
35 private:
36 ABCArchive *abc_archive_;
37 const AlembicExportParams &params_;
38
39 public:
41 Depsgraph *depsgraph,
42 ABCArchive *abc_archive,
44
45 void iterate_and_write() override;
46 std::string make_valid_name(const std::string &name) const override;
47
48 Alembic::Abc::OObject get_alembic_object(const std::string &export_path) const;
49
50 protected:
51 bool mark_as_weak_export(const Object *object) const override;
52
55 const HierarchyContext *context,
56 const DupliObject *dupli_object,
57 const DupliParentFinder &dupli_parent_finder) override;
58
63
64 void release_writer(AbstractHierarchyWriter *writer) override;
65
66 private:
67 Alembic::Abc::OObject get_alembic_parent(const HierarchyContext *context) const;
68 ABCWriterConstructorArgs writer_constructor_args(const HierarchyContext *context) const;
69 void update_archive_bounding_box();
70 void update_bounding_box_recursive(Imath::Box3d &bounds, const HierarchyContext *context);
71
72 ABCAbstractWriter *create_data_writer_for_object_type(
73 const HierarchyContext *context, const ABCWriterConstructorArgs &writer_args);
74};
75
76} // namespace blender::io::alembic
BPy_StructRNA * depsgraph
AbstractHierarchyIterator(Main *bmain, Depsgraph *depsgraph)
bool mark_as_weak_export(const Object *object) const override
AbstractHierarchyWriter * create_particle_writer(const HierarchyContext *context) override
Alembic::Abc::OObject get_alembic_object(const std::string &export_path) const
AbstractHierarchyWriter * create_hair_writer(const HierarchyContext *context) override
ObjectIdentifier determine_graph_index_dupli(const HierarchyContext *context, const DupliObject *dupli_object, const DupliParentFinder &dupli_parent_finder) override
std::string make_valid_name(const std::string &name) const override
AbstractHierarchyWriter * create_data_writer(const HierarchyContext *context) override
ObjectIdentifier determine_graph_index_object(const HierarchyContext *context) override
AbstractHierarchyWriter * create_transform_writer(const HierarchyContext *context) override
void release_writer(AbstractHierarchyWriter *writer) override
ABCHierarchyIterator(Main *bmain, Depsgraph *depsgraph, ABCArchive *abc_archive, const AlembicExportParams &params)
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]
const char * name