forked from AcademySoftwareFoundation/MaterialX
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLook.cpp
More file actions
112 lines (96 loc) · 3.3 KB
/
Look.cpp
File metadata and controls
112 lines (96 loc) · 3.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
//
// TM & (c) 2017 Lucasfilm Entertainment Company Ltd. and Lucasfilm Ltd.
// All rights reserved. See LICENSE.txt for license.
//
#include <MaterialXCore/Look.h>
namespace MaterialX
{
const string MaterialAssign::MATERIAL_ATTRIBUTE = "material";
const string MaterialAssign::EXCLUSIVE_ATTRIBUTE = "exclusive";
const string Visibility::VIEWER_GEOM_ATTRIBUTE = "viewergeom";
const string Visibility::VIEWER_COLLECTION_ATTRIBUTE = "viewercollection";
const string Visibility::VISIBILITY_TYPE_ATTRIBUTE = "vistype";
const string Visibility::VISIBLE_ATTRIBUTE = "visible";
//
// MaterialAssign methods
//
vector<VariantAssignPtr> MaterialAssign::getActiveVariantAssigns() const
{
vector<VariantAssignPtr> activeAssigns;
for (ConstElementPtr elem : traverseInheritance())
{
vector<VariantAssignPtr> assigns = elem->asA<MaterialAssign>()->getVariantAssigns();
activeAssigns.insert(activeAssigns.end(), assigns.begin(), assigns.end());
}
return activeAssigns;
}
//
// Look methods
//
MaterialAssignPtr Look::addMaterialAssign(const string& name, const string& material)
{
MaterialAssignPtr matAssign = addChild<MaterialAssign>(name);
if (!material.empty())
{
matAssign->setMaterial(material);
}
return matAssign;
}
vector<MaterialAssignPtr> Look::getActiveMaterialAssigns() const
{
vector<MaterialAssignPtr> activeAssigns;
for (ConstElementPtr elem : traverseInheritance())
{
vector<MaterialAssignPtr> assigns = elem->asA<Look>()->getMaterialAssigns();
activeAssigns.insert(activeAssigns.end(), assigns.begin(), assigns.end());
}
return activeAssigns;
}
vector<PropertyAssignPtr> Look::getActivePropertyAssigns() const
{
vector<PropertyAssignPtr> activeAssigns;
for (ConstElementPtr elem : traverseInheritance())
{
vector<PropertyAssignPtr> assigns = elem->asA<Look>()->getPropertyAssigns();
activeAssigns.insert(activeAssigns.end(), assigns.begin(), assigns.end());
}
return activeAssigns;
}
vector<PropertySetAssignPtr> Look::getActivePropertySetAssigns() const
{
vector<PropertySetAssignPtr> activeAssigns;
for (ConstElementPtr elem : traverseInheritance())
{
vector<PropertySetAssignPtr> assigns = elem->asA<Look>()->getPropertySetAssigns();
activeAssigns.insert(activeAssigns.end(), assigns.begin(), assigns.end());
}
return activeAssigns;
}
vector<VariantAssignPtr> Look::getActiveVariantAssigns() const
{
vector<VariantAssignPtr> activeAssigns;
for (ConstElementPtr elem : traverseInheritance())
{
vector<VariantAssignPtr> assigns = elem->asA<Look>()->getVariantAssigns();
activeAssigns.insert(activeAssigns.end(), assigns.begin(), assigns.end());
}
return activeAssigns;
}
vector<VisibilityPtr> Look::getActiveVisibilities() const
{
vector<VisibilityPtr> activeVisibilities;
for (ConstElementPtr elem : traverseInheritance())
{
vector<VisibilityPtr> visibilities = elem->asA<Look>()->getVisibilities();
activeVisibilities.insert(activeVisibilities.end(), visibilities.begin(), visibilities.end());
}
return activeVisibilities;
}
//
// MaterialAssign methods
//
MaterialPtr MaterialAssign::getReferencedMaterial() const
{
return resolveRootNameReference<Material>(getMaterial());
}
} // namespace MaterialX