223bool IsOfType(
const std::filesystem::path& path);
290 u32 offset_coordinate_map = 0;
291 u32 offset_vertex_table = 0;
292 u32 offset_normal_table = 0;
293 u32 offset_triangles = 0;
294 u32 offset_edges = 0;
295 u32 offset_collision_tests = 0;
300 u16 num_triangles = 0;
303static_assert(
sizeof(RHeader) == 0x40);
307 u16 index_vertex_0 = 0;
308 u16 index_vertex_1 = 0;
309 u16 index_vertex_2 = 0;
310 u16 index_normal = 0;
311 u16 index_vertex_min = 0;
312 u16 index_vertex_max = 0;
313 u16 push_features = 0;
314 u16 surface_features = 0;
317static_assert(
sizeof(RTriangle) == 0x14);
321 u16 index_vertex_0 = 0;
322 u16 index_vertex_1 = 0;
323 u16 index_vertex_min = 0;
324 u16 index_vertex_max = 0;
325 u16 index_normal = 0;
329static_assert(
sizeof(REdge) == 0x10);
332 u32 offset_triangle_indices = 0;
333 u32 offset_triangle_wall_indices = 0;
334 u32 offset_edge_indices = 0;
335 u16 num_triangle_indices = 0;
336 u16 num_triangle_wall_indices = 0;
337 u16 num_edge_indices = 0;
341static_assert(
sizeof(RCollisionTest) == 0x14);
345 std::vector<Vec4<f32>> vertices;
346 std::vector<Vec4<f32>> normals;
347 std::vector<RTriangle> triangles;
348 std::vector<REdge> edges;
349 std::vector<RCollisionTest> collision_tests;
350 std::vector<u16> indices_triangles_edges;
351 std::vector<u16> coordinate_map;
354RCollision Parse(Reader& f);
356Collision Convert(
const RCollision& rcollision);
Defines a 3d array class with a linear storage.
Contains macros for defining flag enums.
Contains macros and definitions for fixed-width types.
std::vector< ConvertParam > GenerateConvertParam(const Collision &collision)
Generates conversion parameters for SMesh objects to achieve a similar in-game collision config when ...
std::vector< u16 > edge_wall_indices
Definition collision.hpp:134
u16 index_vertex_max
Definition collision.hpp:116
std::vector< glm::vec3 > normals
Normal vectors associated with the geometric shapes.
Definition collision.hpp:164
std::vector< u16 > triangle_indices
Definition collision.hpp:130
u16 index_vertex_min
Definition collision.hpp:114
std::vector< u16 > triangle_wall_indices
Definition collision.hpp:132
glm::vec3 origin_point
Definition collision.hpp:159
std::array< u16, 3 > indices_vertices
Indices of the triangle's vertices.
Definition collision.hpp:93
u16 index_vertex_max
Definition collision.hpp:97
std::vector< Edge > edges
List of wall edges.
Definition collision.hpp:166
std::vector< Triangle > triangles
List of triangles.
Definition collision.hpp:165
PushFeatures push_features
Push behavior flags.
Definition collision.hpp:99
std::array< u16, 2 > indices_vertices
Indices of the edge's vertices.
Definition collision.hpp:113
u16 index_vertex_min
Definition collision.hpp:95
u16 index_normal
Index of the triangle's normal.
Definition collision.hpp:94
std::vector< glm::vec3 > vertices
Definition collision.hpp:162
u16 index_normal
Index of the flipped triangle's normal.
Definition collision.hpp:118
utl::Array3D< CollisionTest > coordinate_map
Definition collision.hpp:167
SurfaceFeatures surface_features
Surface behavior flags.
Definition collision.hpp:100
u16 shift_value
Definition collision.hpp:155
Struct defining a wall edge used in collision detection.
Definition collision.hpp:112
Struct representing a set of geometric shapes for collision testing.
Definition collision.hpp:129
Parameters for converting a simplified mesh to the in-game collision format.
Definition collision.hpp:187
Struct defining a single triangle used in collision detection.
Definition collision.hpp:92
Struct that contains all necessary information for collision detection.
Definition collision.hpp:154
PushFeatures
Enum representing different push behaviors for entities.
Definition collision.hpp:76
bool IsOfType(BufferView buffer)
Tests if the provided file is a collision config.
SModel Convert(const Collision &collision)
Converts collision data from the in-game format to a simplified model representation.
SurfaceFeatures
Enum representing different settings for surfaces.
Definition collision.hpp:48
Collision Import(BufferView buffer)
Parses a binary file and converts it to a structured collision.
Buffer Export(const Collision &collision)
Converts a collision config to a binary file representation.
@ kPushIfStuck
This flag should be used for meshes that act as ceilings.
Definition collision.hpp:81
@ kPushBack
Definition collision.hpp:78
@ kDirt
Dirt.
Definition collision.hpp:50
@ kShadow
Definition collision.hpp:60
@ kDirt2
Another type of dirt.
Definition collision.hpp:51
@ kNone
Default, same as kDirt.
Definition collision.hpp:49
@ kMetal
Metal.
Definition collision.hpp:58
@ kStone2
Another type of stone.
Definition collision.hpp:57
@ kStone
Stone or gravel.
Definition collision.hpp:53
@ kSand
Sand.
Definition collision.hpp:52
@ kWater
Water.
Definition collision.hpp:55
@ kWood
Wood.
Definition collision.hpp:56
@ kPassCamera
Allows the camera to pass through the surface.
Definition collision.hpp:64
@ kPassThrowables
Definition collision.hpp:62
@ kGrass
Grass.
Definition collision.hpp:54
4D vector template with packed storage
Definition fixed_type.hpp:116
3D vector template with packed storage
Definition fixed_type.hpp:163
std::uint16_t u16
16-bit unsigned integer
Definition fixed_type.hpp:62
std::uint32_t u32
32-bit unsigned integer
Definition fixed_type.hpp:60
#define NNL_PACK(...)
A structure packing directive.
Definition fixed_type.hpp:41
#define NNL_DEFINE_ENUM_OPERATORS(ENUMTYPE)
Macro to define bitwise operators for enum types.
Definition enum_flag.hpp:36
#define NNL_FLAG_ENUM
An attribute for defining flag enums.
Definition enum_flag.hpp:28
Represents a simple model.
Definition smodel.hpp:654
A 3-dimensional array template class.
Definition array3d.hpp:29
Provides classes for reading and writing binary data to and from various sources.
Contains structures and functions for working with static collisions.
Definition collision.hpp:31
Definition exception.hpp:56
Provides data structures and functions for managing essential components of a 3D model.