-
Notifications
You must be signed in to change notification settings - Fork 92
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
4 changed files
with
195 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
#include "RustRenderer.h" | ||
#include "vange_rs.h" | ||
|
||
using namespace renderer; | ||
using namespace renderer::scene; | ||
using namespace renderer::scene::rust; | ||
|
||
void RustRenderer::camera_create(const CameraDescription& camera_description) | ||
{ | ||
vange_rs_camera_description v_desc { | ||
.fov = camera_description.fov, | ||
.aspect = camera_description.aspect, | ||
.near= camera_description.near, | ||
.far = camera_description.far, | ||
}; | ||
|
||
vange_rs_camera_create(v_desc); | ||
} | ||
|
||
void RustRenderer::camera_destroy() | ||
{ | ||
vange_rs_camera_destroy(); | ||
} | ||
|
||
void RustRenderer::camera_set_transform(const Transform& transform) | ||
{ | ||
vange_rs_transform v_transform { | ||
.position = vange_rs_vector3 { | ||
.x = transform.position.x, | ||
.y = transform.position.y, | ||
.z = transform.position.z, | ||
}, | ||
.rotation = vange_rs_quaternion { | ||
.x = transform.rotation.x, | ||
.y = transform.rotation.y, | ||
.z = transform.rotation.z, | ||
.w = transform.rotation.w, | ||
} | ||
}; | ||
vange_rs_camera_set_transform(v_transform); | ||
} | ||
|
||
void RustRenderer::map_create(const MapDescription& map_description) | ||
{ | ||
vange_rs_map_description v_desc { | ||
.width = map_description.width, | ||
.height = map_description.height, | ||
.lineT = map_description.lineT, | ||
.material_begin_offsets = map_description.material_begin_offsets, | ||
.material_end_offsets = map_description.material_end_offsets, | ||
.material_count = map_description.material_count, | ||
}; | ||
vange_rs_map_create(v_desc); | ||
} | ||
|
||
void RustRenderer::map_destroy() | ||
{ | ||
vange_rs_map_destroy(); | ||
} | ||
|
||
void RustRenderer::map_request_update(const Rect& region) | ||
{ | ||
vange_rs_rect v_rect { | ||
.x = region.x, | ||
.y = region.y, | ||
.width = region.width, | ||
.height = region.height, | ||
}; | ||
|
||
vange_rs_map_request_update(v_rect); | ||
} | ||
|
||
void RustRenderer::map_update_palette(uint32_t* palette, int32_t palette_size) | ||
{ | ||
vange_rs_map_update_palette(palette, palette_size); | ||
} | ||
|
||
void RustRenderer::render(const Rect& viewport) | ||
{ | ||
vange_rs_rect v_rect { | ||
.x = viewport.x, | ||
.y = viewport.y, | ||
.width = viewport.width, | ||
.height = viewport.height, | ||
}; | ||
vange_rs_render(v_rect); | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
#ifndef RUSTRENDERER_H | ||
#define RUSTRENDERER_H | ||
|
||
#include "../AbstractRenderer.h" | ||
|
||
namespace renderer::scene::rust { | ||
class RustRenderer: public AbstractRenderer | ||
{ | ||
public: | ||
void camera_create(const CameraDescription& camera_description) override; | ||
void camera_destroy() override; | ||
void camera_set_transform(const Transform& transform) override; | ||
void map_create(const MapDescription& map_description) override; | ||
void map_destroy() override; | ||
void map_request_update(const Rect& region) override; | ||
void map_update_palette(uint32_t* palette, int32_t palette_size) override; | ||
void render(const Rect& viewport) override; | ||
}; | ||
|
||
} | ||
|
||
#endif // RUSTRENDERER_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
#ifndef VANGE_RS_H | ||
#define VANGE_RS_H | ||
|
||
#include <cstdint> | ||
|
||
/** | ||
This is a stub file for the upcoming vange-rs library bindings | ||
**/ | ||
|
||
// TODO: agree on how we deal with structs | ||
struct vange_rs_camera_description { | ||
float fov; | ||
float aspect; | ||
float near; | ||
float far; | ||
}; | ||
|
||
struct vange_rs_vector3 { | ||
float x; | ||
float y; | ||
float z; | ||
}; | ||
|
||
struct vange_rs_quaternion { | ||
float x; | ||
float y; | ||
float z; | ||
float w; | ||
}; | ||
|
||
struct vange_rs_transform { | ||
vange_rs_vector3 position; | ||
vange_rs_quaternion rotation; | ||
}; | ||
|
||
struct vange_rs_map_description { | ||
int32_t width; // H_SIZE | ||
int32_t height; // V_SIZE | ||
|
||
// data layout: first `width` bytes are height, the rest `width` bytes are meta data | ||
uint8_t** lineT; | ||
|
||
// Material offsets in the palette | ||
uint8_t* material_begin_offsets; | ||
uint8_t* material_end_offsets; | ||
|
||
// 8 for world, 16 for escave | ||
int32_t material_count; | ||
}; | ||
|
||
// TODO: or it could be left, bottom, right, top | ||
struct vange_rs_rect { | ||
int32_t x; | ||
int32_t y; | ||
int32_t width; | ||
int32_t height; | ||
}; | ||
|
||
|
||
// TODO: pointer? | ||
void vange_rs_camera_create(vange_rs_camera_description desc); | ||
|
||
void vange_rs_camera_destroy(); | ||
|
||
// TODO: pointer? | ||
void vange_rs_camera_set_transform(vange_rs_transform transform); | ||
|
||
// TODO: pointer? | ||
void vange_rs_map_create(vange_rs_map_description map_description); | ||
|
||
void vange_rs_map_destroy(); | ||
|
||
void vange_rs_map_query(int32_t* width, int32_t* height); | ||
|
||
// TODO: pointer? | ||
void vange_rs_map_request_update(vange_rs_rect region); | ||
|
||
void vange_rs_map_update_palette(uint32_t* palette, int32_t palette_size); | ||
|
||
// TODO: pointer? | ||
void vange_rs_render(vange_rs_rect viewport); | ||
#endif // VANGE_RS_H |