9 std::string
const& name)
11 auto oldIter = oldValues.find(name);
12 if (oldIter == oldValues.end())
17 auto newIter = newValues.find(name);
18 if (newIter == newValues.end())
20 throw LocalException(
"Could find value with name: ") << name;
24 if (oldIter->second.type == VALUE_VARIANT_INT)
28 changed = newValue > oldValue;
30 else if (oldIter->second.type == VALUE_VARIANT_BOOL)
34 changed = newValue != oldValue;
41 operator==(
const ValueVariant& left,
const ValueVariant& right)
43 if (left.type != right.type)
50 case VALUE_VARIANT_EMPTY:
53 case VALUE_VARIANT_BOOL:
54 return (left.i != 0) == (right.i != 0);
56 case VALUE_VARIANT_INT:
57 return left.i == right.i;
59 case VALUE_VARIANT_FLOAT:
60 return left.f == right.f;
62 case VALUE_VARIANT_STRING:
63 return left.s == right.s;
65 case VALUE_VARIANT_VECTOR3:
66 case VALUE_VARIANT_MATRIX4:
67 return left.v == right.v;
70 throw std::logic_error(
"Remote value type not handled");
74 operator!=(
const ValueVariant& left,
const ValueVariant& right)
76 return !(left == right);
102 Eigen::Vector3f result;
112 Eigen::Vector3i result;
124 case VALUE_VARIANT_EMPTY:
126 case VALUE_VARIANT_BOOL:
128 case VALUE_VARIANT_INT:
130 case VALUE_VARIANT_FLOAT:
132 case VALUE_VARIANT_STRING:
134 case VALUE_VARIANT_VECTOR3:
136 case VALUE_VARIANT_MATRIX4:
139 throw LocalException(
"Unknown ValueVariantType: ") << (int)type;
147 result.type = VALUE_VARIANT_BOOL;
148 result.i =
value ? 1 : 0;
156 result.type = VALUE_VARIANT_INT;
165 result.type = VALUE_VARIANT_FLOAT;
174 result.type = VALUE_VARIANT_STRING;
183 result.type = VALUE_VARIANT_VECTOR3;
185 result.v[0] =
value(0);
186 result.v[1] =
value(1);
187 result.v[2] =
value(2);
195 result.type = VALUE_VARIANT_MATRIX4;
197 result.v[0] =
value.row(0)[0];
198 result.v[1] =
value.row(0)[1];
199 result.v[2] =
value.row(0)[2];
200 result.v[3] =
value.row(0)[3];
201 result.v[4] =
value.row(1)[0];
202 result.v[5] =
value.row(1)[1];
203 result.v[6] =
value.row(1)[2];
204 result.v[7] =
value.row(1)[3];
205 result.v[8] =
value.row(2)[0];
206 result.v[9] =
value.row(2)[1];
207 result.v[10] =
value.row(2)[2];
208 result.v[11] =
value.row(2)[3];
209 result.v[12] =
value.row(3)[0];
210 result.v[13] =
value.row(3)[1];
211 result.v[14] =
value.row(3)[2];
212 result.v[15] =
value.row(3)[3];
219 val = getAndReturnValue<bool>(
values, name);
225 val = getAndReturnValue<int>(
values, name);
231 val = getAndReturnValue<float>(
values, name);
237 val = getAndReturnValue<std::string>(
values, name);
243 val = getAndReturnValue<Eigen::Vector3f>(
values, name);
249 val = getAndReturnValue<Eigen::Matrix4f>(
values, name);