Skip to content

Commit 6c67c15

Browse files
committed
Add methods to retrieve information about the loaded meshes
CURA-13226
1 parent e854557 commit 6c67c15

9 files changed

Lines changed: 41 additions & 27 deletions

File tree

conandata.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
version: "5.11.0-alpha.0"
1+
version: "5.12.0"

include/Savitar/MeshData.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class MeshData
3535
/**
3636
* Serialise the meshData to xml_node
3737
*/
38-
void toXmlNode(pugi::xml_node& xml_node);
38+
void toXmlNode(pugi::xml_node& xml_node) const;
3939

4040
/**
4141
* Return the vertices as flattend bytes.
@@ -93,7 +93,11 @@ class MeshData
9393
*/
9494
void setFacesFromBytes(const bytearray& data);
9595

96-
[[nodiscard]] std::vector<Vertex> getVertices();
96+
[[nodiscard]] const std::vector<Vertex>& getVertices() const;
97+
98+
[[nodiscard]] const std::vector<Face>& getFaces() const;
99+
100+
[[nodiscard]] int getUVGroupId() const;
97101

98102
/**
99103
* Reset the data of the MeshData object.
@@ -116,4 +120,4 @@ class MeshData
116120
};
117121
} // namespace Savitar
118122

119-
#endif
123+
#endif

include/Savitar/Scene.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class Scene
2828
* Get the scene nodes in this scene.
2929
* \return The scene nodes that are in the scene.
3030
*/
31-
[[nodiscard]] std::vector<SceneNode*> getSceneNodes();
31+
[[nodiscard]] const std::vector<SceneNode*>& getSceneNodes() const;
3232

3333
[[nodiscard]] std::vector<SceneNode*> getAllSceneNodes() const;
3434

@@ -46,7 +46,7 @@ class Scene
4646
/**
4747
* Serialise the scene to model_node
4848
*/
49-
void toXmlNode(pugi::xml_node& model_node);
49+
void toXmlNode(pugi::xml_node& model_node) const;
5050

5151
/**
5252
* Store a metadata entry as metadata.
@@ -84,7 +84,7 @@ class Scene
8484
* Get the unit (milimeter, inch, etc) of the scene.
8585
* This is in milimeter by default.
8686
*/
87-
[[nodiscard]] std::string getUnit();
87+
[[nodiscard]] const std::string& getUnit() const;
8888

8989
void setUnit(std::string unit);
9090

@@ -116,4 +116,4 @@ class Scene
116116
SceneNode* createSceneNodeFromObject(pugi::xml_node root_node, pugi::xml_node object_node);
117117
};
118118
} // namespace Savitar
119-
#endif
119+
#endif

include/Savitar/SceneNode.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ class SceneNode
2121
SceneNode() = default;
2222
virtual ~SceneNode() = default;
2323

24-
[[nodiscard]] std::string getTransformation();
25-
void setTransformation(std::string);
24+
[[nodiscard]] const std::string& getTransformation() const;
25+
void setTransformation(const std::string& transformation);
2626

27-
[[nodiscard]] std::vector<SceneNode*> getChildren();
27+
[[nodiscard]] const std::vector<SceneNode*>& getChildren() const;
2828
[[nodiscard]] std::vector<SceneNode*> getAllChildren();
2929
bool addChild(SceneNode* node);
3030

31-
MeshData& getMeshData();
31+
[[nodiscard]] const MeshData& getMeshData() const;
3232
void setMeshData(const MeshData& mesh_data);
3333

3434
/**
@@ -51,7 +51,7 @@ class SceneNode
5151
/**
5252
* Get the (non-unique) display name of the node.
5353
*/
54-
[[nodiscard]] std::string getName();
54+
[[nodiscard]] const std::string& getName() const;
5555

5656
[[maybe_unused]] void setName(std::string name);
5757

include/Savitar/TextureData.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class TextureData
3131

3232
void fillByXMLNode(pugi::xml_node xml_node);
3333

34-
void toXmlNode(pugi::xml_node& resources_node);
34+
void toXmlNode(pugi::xml_node& resources_node) const;
3535

3636
[[nodiscard]] std::string getTexturePath(const int texture_id) const;
3737

@@ -61,4 +61,4 @@ class TextureData
6161
};
6262
} // namespace Savitar
6363

64-
#endif
64+
#endif

src/MeshData.cpp

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ bytearray MeshData::getFacesAsBytes()
220220
return face_data;
221221
}
222222

223-
void MeshData::toXmlNode(pugi::xml_node& node)
223+
void MeshData::toXmlNode(pugi::xml_node& node) const
224224
{
225225
pugi::xml_node vertices_node = node.append_child("vertices");
226226
for (auto& vertice : vertices_)
@@ -288,13 +288,23 @@ void MeshData::setFacesFromBytes(const bytearray& data)
288288
}
289289
}
290290

291-
std::vector<Vertex> MeshData::getVertices()
291+
const std::vector<Vertex>& MeshData::getVertices() const
292292
{
293293
return vertices_;
294294
}
295295

296+
const std::vector<Face>& MeshData::getFaces() const
297+
{
298+
return faces_;
299+
}
300+
301+
int MeshData::getUVGroupId() const
302+
{
303+
return uv_group_id_;
304+
}
305+
296306
template<typename T>
297307
void MeshData::exportToByteArray(bytearray& data, const T value)
298308
{
299309
data.insert(data.end(), reinterpret_cast<const uint8_t*>(&value), reinterpret_cast<const uint8_t*>(&value) + sizeof(T));
300-
}
310+
}

src/Scene.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
using namespace Savitar;
1212

13-
std::vector<SceneNode*> Scene::getSceneNodes()
13+
const std::vector<SceneNode*>& Scene::getSceneNodes() const
1414
{
1515
return scene_nodes_;
1616
}
@@ -87,7 +87,7 @@ void Scene::fillByXMLNode(pugi::xml_node xml_node)
8787
}
8888
}
8989

90-
void Scene::toXmlNode(pugi::xml_node& model_node)
90+
void Scene::toXmlNode(pugi::xml_node& model_node) const
9191
{
9292
pugi::xml_node resources_node = model_node.append_child("resources");
9393
pugi::xml_node build_node = model_node.append_child("build");
@@ -286,7 +286,7 @@ void Scene::setMetaDataEntry(const std::string& key, const std::string& value, c
286286
metadata_.emplace(key, MetadataEntry(value, type, preserve));
287287
}
288288

289-
std::string Scene::getUnit()
289+
const std::string& Scene::getUnit() const
290290
{
291291
return unit_;
292292
}

src/SceneNode.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88

99
using namespace Savitar;
1010

11-
std::string SceneNode::getTransformation()
11+
const std::string& SceneNode::getTransformation() const
1212
{
1313
return transformation_;
1414
}
1515

16-
void SceneNode::setTransformation(std::string transformation)
16+
void SceneNode::setTransformation(const std::string& transformation)
1717
{
1818
transformation_ = transformation;
1919
}
@@ -28,7 +28,7 @@ std::string SceneNode::getComponentPath() const
2828
return component_path_;
2929
}
3030

31-
std::vector<SceneNode*> SceneNode::getChildren()
31+
const std::vector<SceneNode*>& SceneNode::getChildren() const
3232
{
3333
return children_;
3434
}
@@ -52,7 +52,7 @@ bool SceneNode::addChild(SceneNode* node)
5252
return true;
5353
}
5454

55-
MeshData& SceneNode::getMeshData()
55+
const MeshData& SceneNode::getMeshData() const
5656
{
5757
return mesh_data_;
5858
}
@@ -181,7 +181,7 @@ void SceneNode::setId(const int id)
181181
id_ = id;
182182
}
183183

184-
std::string SceneNode::getName()
184+
const std::string& SceneNode::getName() const
185185
{
186186
return name_;
187187
}

src/TextureData.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ void TextureData::fillByXMLNode(pugi::xml_node xml_node)
4545
}
4646
}
4747

48-
void TextureData::toXmlNode(pugi::xml_node& resources_node)
48+
void TextureData::toXmlNode(pugi::xml_node& resources_node) const
4949
{
5050
// Handle textures paths
5151
for (const auto& texture_path : textures_paths_)

0 commit comments

Comments
 (0)