101 bool manualPose =
false;
106 std::string groundRef;
152 void createRemoteGuiTab();
159 Entry* findEntry(
const std::string& instanceName);
160 Entry& addObject(
const std::string& classId);
164 void renameEntry(Entry& entry,
const std::string& newName);
165 void deleteEntry(
const std::string& instanceName);
166 void flipEntry(Entry& entry,
const Eigen::Vector3f& axis);
168 void applyPendingTransform(
const std::string& instanceName);
169 bool applyManualPose(Entry& entry,
const Eigen::Vector3f& position,
float yawDeg);
170 void selectEntry(
const std::string& instanceName);
171 void setGroundZ(
float groundZ);
176 void alignToPlane(
int axis,
bool minSide,
const std::string& planeName);
180 float groundHeightOf(
const std::string& ref);
181 float groundHeightFor(
const Entry& entry);
183 void reseatEntriesGroundedTo(
const std::string& ref);
186 void afterEntryPoseChanged(
const Entry& entry);
192 float groundSnappedZ(
const Entry& entry,
const Eigen::Matrix4f& candidatePose);
196 const std::optional<simox::AxisAlignedBoundingBox>& localAabbOf(
const Entry& entry);
200 std::optional<simox::AxisAlignedBoundingBox> globalAabb(
const Entry& entry,
201 const Eigen::Matrix4f& pose);
205 std::string collidesWith(
const Entry& entry,
const Eigen::Matrix4f& candidatePose);
209 bool isMoveAllowed(Entry& entry,
const Eigen::Matrix4f& candidatePose);
210 VirtualRobot::ObstaclePtr collisionModelOf(
const Entry& entry);
212 void saveScene(
const std::string& fileArg);
213 void loadScene(
const std::string& fileArg);
218 std::filesystem::path resolveScenePath(std::string name)
const;
223 std::filesystem::path groundingPathFor(
const std::filesystem::path& scenePath)
const;
224 std::string makeUniqueInstanceName(
const std::string& classId);
226 void rebuildSceneLayer();
227 void rebuildGroundLayer();
238 std::vector<Entry> entries_;
239 std::unordered_map<std::string, Eigen::Matrix4f> pendingTransforms_;
240 std::map<std::string, VirtualRobot::ObstaclePtr> collisionModels_;
241 std::map<std::string, std::optional<simox::AxisAlignedBoundingBox>> localAabbs_;
242 std::string selected_;
246 bool sceneLayerDirty_ =
true;
247 bool groundLayerDirty_ =
true;
248 bool syncGui_ =
false;
249 bool tabRebuildNeeded_ =
false;
250 bool guiInitialized_ =
false;
254 float groundZ_ = 0.0f;
256 std::map<std::string, std::vector<std::string>> objectsByDataset_;
257 std::string currentDataset_;
259 std::string objectsPackage_;
260 std::string scenesPackage_;
263 std::string sceneStorageDirectory_;
264 std::string initialSceneFile_;
265 std::string initialGroundClass_;