15 #include "eggMaterial.h" 28 EggMaterial(
const string &mref_name)
46 _shininess(copy._shininess),
60 write(ostream &out,
int indent_level)
const {
64 indent(out, indent_level + 2)
65 <<
"<Scalar> diffr { " <<
get_diff()[0] <<
" }\n";
66 indent(out, indent_level + 2)
67 <<
"<Scalar> diffg { " <<
get_diff()[1] <<
" }\n";
68 indent(out, indent_level + 2)
69 <<
"<Scalar> diffb { " <<
get_diff()[2] <<
" }\n";
71 indent(out, indent_level + 2)
72 <<
"<Scalar> diffa { " <<
get_diff()[3] <<
" }\n";
77 indent(out, indent_level + 2)
78 <<
"<Scalar> ambr { " <<
get_amb()[0] <<
" }\n";
79 indent(out, indent_level + 2)
80 <<
"<Scalar> ambg { " <<
get_amb()[1] <<
" }\n";
81 indent(out, indent_level + 2)
82 <<
"<Scalar> ambb { " <<
get_amb()[2] <<
" }\n";
84 indent(out, indent_level + 2)
85 <<
"<Scalar> amba { " <<
get_amb()[3] <<
" }\n";
90 indent(out, indent_level + 2)
91 <<
"<Scalar> emitr { " <<
get_emit()[0] <<
" }\n";
92 indent(out, indent_level + 2)
93 <<
"<Scalar> emitg { " <<
get_emit()[1] <<
" }\n";
94 indent(out, indent_level + 2)
95 <<
"<Scalar> emitb { " <<
get_emit()[2] <<
" }\n";
97 indent(out, indent_level + 2)
98 <<
"<Scalar> emita { " <<
get_emit()[3] <<
" }\n";
103 indent(out, indent_level + 2)
104 <<
"<Scalar> specr { " <<
get_spec()[0] <<
" }\n";
105 indent(out, indent_level + 2)
106 <<
"<Scalar> specg { " <<
get_spec()[1] <<
" }\n";
107 indent(out, indent_level + 2)
108 <<
"<Scalar> specb { " <<
get_spec()[2] <<
" }\n";
110 indent(out, indent_level + 2)
111 <<
"<Scalar> speca { " <<
get_spec()[3] <<
" }\n";
115 if (has_shininess()) {
116 indent(out, indent_level + 2)
117 <<
"<Scalar> shininess { " << get_shininess() <<
" }\n";
121 indent(out, indent_level + 2)
122 <<
"<Scalar> local { " << get_local() <<
" }\n";
125 indent(out, indent_level) <<
"}\n";
148 if (eq & E_attributes) {
149 if (_flags != other._flags ||
154 (has_shininess() && get_shininess() != other.get_shininess()) ||
155 (has_local() && get_local() != other.get_local())) {
160 if (eq & E_mref_name) {
161 if (get_name() != other.get_name()) {
180 if (eq & E_attributes) {
181 if (_flags != other._flags) {
182 return _flags < (int)other._flags;
196 if (has_shininess() && get_shininess() != other.get_shininess()) {
197 return get_shininess() < other.get_shininess();
199 if (has_local() && get_local() != other.get_local()) {
200 return get_local() < other.get_local();
204 if (eq & E_mref_name) {
205 if (get_name() != other.get_name()) {
206 return get_name() < other.get_name();
LColor get_amb() const
It is legal to call this even if has_amb() returns false.
bool is_equivalent_to(const EggMaterial &other, int eq) const
Returns true if the two materials are equivalent in all relevant properties (according to eq)...
virtual void write(ostream &out, int indent_level) const
Writes the material definition to the indicated output stream in Egg format.
int compare_to(const LVecBase4f &other) const
This flavor of compare_to uses a default threshold value based on the numeric type.
void write_header(ostream &out, int indent_level, const char *egg_keyword) const
Writes the first line of the egg object, e.g.
bool sorts_less_than(const EggMaterial &other, int eq) const
An ordering operator to compare two materials for sorting order.
A base class for things that may be directly added into the egg hierarchy.
LColor get_spec() const
It is legal to call this even if has_spec() returns false.
TypeHandle is the identifier used to differentiate C++ class types.
LColor get_emit() const
It is legal to call this even if has_emit() returns false.
LColor get_diff() const
It is legal to call this even if has_diff() returns false.