GfxContext, render refactor

This commit is contained in:
MihailRis
2023-11-19 20:18:44 +03:00
parent ea729760d4
commit e3743b8463
12 changed files with 270 additions and 103 deletions
+16 -3
View File
@@ -215,8 +215,21 @@ void PlayerController::updateInteraction(){
Camera* camera = player->camera;
vec3 end;
vec3 norm;
bool xkey = Events::pressed(keycode::X);
bool lclick = Events::jclicked(mousecode::BUTTON_1) ||
(xkey && Events::clicked(mousecode::BUTTON_1));
bool rclick = Events::jclicked(mousecode::BUTTON_2) ||
(xkey && Events::clicked(mousecode::BUTTON_2));
float maxDistance = 10.0f;
if (xkey) {
maxDistance *= 20.0f;
}
vec3 iend;
voxel* vox = chunks->rayCast(camera->position, camera->front, 10.0f, end, norm, iend);
voxel* vox = chunks->rayCast(camera->position,
camera->front,
maxDistance,
end, norm, iend);
if (vox != nullptr){
player->selectedVoxel = *vox;
selectedBlockId = vox->id;
@@ -238,11 +251,11 @@ void PlayerController::updateInteraction(){
}
Block* block = Block::blocks[vox->id];
if (Events::jclicked(mousecode::BUTTON_1) && block->breakable){
if (lclick && block->breakable){
chunks->set(x,y,z, 0, 0);
lighting->onBlockSet(x,y,z, 0);
}
if (Events::jclicked(mousecode::BUTTON_2)){
if (rclick){
if (block->model != BlockModel::xsprite){
x = (int)(iend.x)+(int)(norm.x);
y = (int)(iend.y)+(int)(norm.y);