commit 4496b673300ab4e5504e6ec302bc855b8c900832
parent 213e4244f521327d0dbb6db97ccf2b858d57201e
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Thu, 17 Nov 2016 16:43:41 +0100
Implement the geometry getters
Diffstat:
4 files changed, 31 insertions(+), 0 deletions(-)
diff --git a/src/solstice_geometry.h b/src/solstice_geometry.h
@@ -71,4 +71,19 @@ solstice_geometry_copy_and_release
return darray_object_id_copy_and_release(&dst->objects, &src->objects);
}
+static FINLINE size_t
+solstice_geometry_get_objects_count(const struct solstice_geometry* geom)
+{
+ ASSERT(geom);
+ return darray_object_id_size_get(&geom->objects);
+}
+
+static FINLINE struct solstice_object_id
+solstice_geometry_get_object
+ (const struct solstice_geometry* geom, const size_t i)
+{
+ ASSERT(geom && i < solstice_geometry_get_objects_count(geom));
+ return darray_object_id_cdata_get(&geom->objects)[i];
+}
+
#endif /* SOLSTICE_GEOMETRY_H */
diff --git a/src/solstice_parser.c b/src/solstice_parser.c
@@ -2772,6 +2772,15 @@ solstice_parser_get_entity
return darray_entity_cdata_get(&parser->entities) + entity.i;
}
+const struct solstice_geometry*
+solstice_parser_get_geometry
+ (const struct solstice_parser* parser,
+ const struct solstice_geometry_id geom)
+{
+ ASSERT(parser && geom.i < darray_geometry_size_get(&parser->geometries));
+ return darray_geometry_cdata_get(&parser->geometries) + geom.i;
+}
+
void
solstice_parser_entity_iterator_begin
(struct solstice_parser* parser,
diff --git a/src/solstice_parser.h b/src/solstice_parser.h
@@ -58,6 +58,11 @@ solstice_parser_get_entity
(const struct solstice_parser* parser,
const struct solstice_entity_id entity);
+extern LOCAL_SYM const struct solstice_geometry*
+solstice_parser_get_geometry
+ (const struct solstice_parser* parser,
+ const struct solstice_geometry_id geom);
+
extern LOCAL_SYM void
solstice_parser_entity_iterator_begin
(struct solstice_parser* parser,
diff --git a/src/test_solstice_parser2.c b/src/test_solstice_parser2.c
@@ -24,6 +24,7 @@ main(int argc, char** argv)
struct solstice_entity_iterator it, end;
struct solstice_entity_id entity_id;
const struct solstice_entity* entity, *entity1, *entity2;
+ const struct solstice_geometry* geom;
double tmp[3];
FILE* stream;
@@ -73,6 +74,7 @@ main(int argc, char** argv)
CHECK(d3_eq(entity->rotation, d3(tmp, 4, 5, 6)), 1);
CHECK(strcmp("lvl0", str_cget(&entity->name)), 0);
CHECK(solstice_entity_get_children_count(entity), 2);
+ geom = solstice_parser_get_geometry(parser, entity->geometry);
entity_id = solstice_entity_get_child(entity, 0);
entity1 = solstice_parser_get_entity(parser, entity_id);