Blender V4.3
usd_reader_instance.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 NVIDIA Corporation. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
6
7#include "BKE_lib_id.hh"
8#include "BKE_object.hh"
9
11#include "DNA_object_types.h"
12
13namespace blender::io::usd {
14
15USDInstanceReader::USDInstanceReader(const pxr::UsdPrim &prim,
16 const USDImportParams &import_params,
17 const ImportSettings &settings)
18 : USDXformReader(prim, import_params, settings)
19{
20}
21
23{
24 return prim_.IsValid() && prim_.IsInstance();
25}
26
27void USDInstanceReader::create_object(Main *bmain, const double /*motionSampleTime*/)
28{
29 this->object_ = BKE_object_add_only_object(bmain, OB_EMPTY, name_.c_str());
30 this->object_->data = nullptr;
31 this->object_->instance_collection = nullptr;
33}
34
36{
37 if (this->object_ && this->object_->instance_collection != coll) {
38 if (this->object_->instance_collection) {
40 this->object_->instance_collection = nullptr;
41 }
42 id_us_plus(&coll->id);
43 this->object_->instance_collection = coll;
44 }
45}
46
48{
49 if (pxr::UsdPrim proto = prim_.GetPrototype()) {
50 return proto.GetPath();
51 }
52
53 return pxr::SdfPath();
54}
55
56} // namespace blender::io::usd
void id_us_plus(ID *id)
Definition lib_id.cc:351
void id_us_min(ID *id)
Definition lib_id.cc:359
General operations, lookup, etc. for blender objects.
Object * BKE_object_add_only_object(Main *bmain, int type, const char *name) ATTR_RETURNS_NONNULL
Object groups, one object can be in many groups at once.
Object is a sort of wrapper for general info.
@ OB_EMPTY
@ OB_DUPLICOLLECTION
void create_object(Main *bmain, double motionSampleTime) override
void set_instance_collection(Collection *coll)
USDInstanceReader(const pxr::UsdPrim &prim, const USDImportParams &import_params, const ImportSettings &settings)
short transflag
struct Collection * instance_collection