Tramway SDK
model.h
Go to the documentation of this file.
1// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime
2
3#ifndef TRAM_SDK_RENDER_MODEL_H
4#define TRAM_SDK_RENDER_MODEL_H
5
6#include <render/material.h>
7
8namespace tram::Render {
9
10struct ModelData;
11struct ModelAABB;
12
16 uint32_t material;
17};
18
19struct IndexRange {
20 uint32_t index_offset = 0;
21 uint32_t index_length = 0;
22 uint32_t material_count = 0;
24 uint32_t materials[15] = { 0 };
25};
26
27class Model : public Resource {
28public:
30
31 void LoadFromDisk();
32 void LoadFromMemory();
33
34 void Unload() {}
35
37
40
41 const std::vector<Bone>& GetArmature() const { return armature; }
42 const std::vector<Material*>& GetMaterials() const { return materials; }
43 const std::vector<IndexRange>& GetIndexRanges() const { return index_ranges; }
44
45 void DrawAABB(vec3 position, quat rotation);
46 void FindAllFromRay(vec3 ray_pos, vec3 ray_dir, std::vector<AABBTriangle>& result);
47
48 vec3 GetAABBMin() const { return aabb_min; }
49 vec3 GetAABBMax() const { return aabb_max; }
50
51 float GetNearDistance() const { return fade_near; }
52 float GetFarDistance() const { return fade_far; }
53 void SetNearDistance(float dist) { fade_near = dist; }
54 void SetFarDistance(float dist) { fade_far = dist; }
55
56 static Model* Find(name_t name);
57
58protected:
60
63
64 std::vector<IndexRange> index_ranges;
65
66 vec3 aabb_min = {0.0f, 0.0f, 0.0f};
67 vec3 aabb_max = {0.0f, 0.0f, 0.0f};
68
69 float fade_near = 0.0f;
70 float fade_far = INFINITY;
71
72 std::vector<Material*> materials;
73
74 Model* source = nullptr;
75
76 std::vector<Bone> armature;
80};
81
82}
83
84
85#endif // TRAM_SDK_RENDER_MODEL_H
Definition: model.h:27
static Model * Find(name_t name)
Definition: model.cpp:56
vec3 aabb_max
Definition: model.h:67
void LoadFromDisk()
Definition: model.cpp:279
void DrawAABB(vec3 position, quat rotation)
Draws the AABB tree.
Definition: model.cpp:197
vec3 GetAABBMin() const
Definition: model.h:48
void FindAllFromRay(vec3 ray_pos, vec3 ray_dir, std::vector< AABBTriangle > &result)
Finds triangles that intersect ray.
Definition: model.cpp:141
indexarray_t GetIndexArray() const
Definition: model.h:39
void LoadFromMemory()
Definition: model.cpp:67
ModelAABB * model_aabb
Definition: model.h:78
void SetNearDistance(float dist)
Definition: model.h:53
float GetFarDistance() const
Definition: model.h:52
size_t approx_vram_usage
Definition: model.h:79
std::vector< IndexRange > index_ranges
Definition: model.h:64
const std::vector< IndexRange > & GetIndexRanges() const
Definition: model.h:43
vec3 aabb_min
Definition: model.h:66
ModelData * model_data
Definition: model.h:77
std::vector< Bone > armature
Definition: model.h:76
void Unload()
Definition: model.h:34
const std::vector< Bone > & GetArmature() const
Definition: model.h:41
vertexformat_t GetVertexFormat() const
Definition: model.h:36
Model(name_t name)
Definition: model.h:29
indexarray_t index_array
Definition: model.h:62
float fade_near
Definition: model.h:69
float GetNearDistance() const
Definition: model.h:51
float fade_far
Definition: model.h:70
vertexarray_t vertex_array
Definition: model.h:61
vec3 GetAABBMax() const
Definition: model.h:49
vertexarray_t GetVertexArray() const
Definition: model.h:38
Model * source
Definition: model.h:74
void SetFarDistance(float dist)
Definition: model.h:54
std::vector< Material * > materials
Definition: model.h:72
const std::vector< Material * > & GetMaterials() const
Definition: model.h:42
vertexformat_t vertex_format
Definition: model.h:59
Definition: resource.h:11
name_t name
Definition: resource.h:37
High-level Render system API.
Definition: gui.h:8
uint32_t vertexformat_t
Definition: render.h:19
@ VERTEX_STATIC
Definition: render.h:68
uint32_t materialtype_t
Definition: render.h:20
glm::vec3 vec3
Definition: math.h:11
glm::quat quat
Definition: math.h:12
Definition: model.h:13
vec3 normal
Definition: model.h:15
uint32_t material
Definition: model.h:16
vec3 point1
Definition: model.h:14
vec3 point2
Definition: model.h:14
vec3 point3
Definition: model.h:14
Definition: model.h:19
materialtype_t material_type
Definition: model.h:23
uint32_t material_count
Definition: model.h:22
uint32_t index_length
Definition: model.h:21
uint32_t materials[15]
Definition: model.h:24
uint32_t index_offset
Definition: model.h:20
Definition: model.cpp:132
Definition: vertices.h:58
Definition: render.h:119
Definition: render.h:102
Interned string type.
Definition: uid.h:10