From 74c684fff8f8f4c1af5196b1e74f0fa6e34c00f3 Mon Sep 17 00:00:00 2001 From: h4570 Date: Sun, 14 Aug 2022 21:07:16 +0200 Subject: [PATCH] mockup of utility functions --- ROADMAP.txt | 3 -- demo/inc/states/game/enemy/enemy.hpp | 2 + demo/src/states/game/enemy/enemy.cpp | 5 ++ demo/src/states/game/game_state.cpp | 2 +- demo/src/states/game/player/player.cpp | 2 +- engine/inc/renderer/3d/renderer_3d.hpp | 3 ++ .../inc/renderer/3d/renderer_3d_utility.hpp | 39 ++++++++++++++ .../src/renderer/3d/renderer_3d_utility.cpp | 54 +++++++++++++++++++ 8 files changed, 105 insertions(+), 5 deletions(-) create mode 100644 engine/inc/renderer/3d/renderer_3d_utility.hpp create mode 100644 engine/src/renderer/3d/renderer_3d_utility.cpp diff --git a/ROADMAP.txt b/ROADMAP.txt index cd4351b..f03a0ae 100644 --- a/ROADMAP.txt +++ b/ROADMAP.txt @@ -1,9 +1,6 @@ ------------ Tyra's v2.0 roadmap to publish on GitHub ------------ - [Renderer] utility functions -- [Renderer] drawLine() -- [Renderer] drawBBox() -- [Renderer] drawPoint() - [Demo] Red screen on hit - [Demo] Count of killed zombies - [Demo] Crosshair diff --git a/demo/inc/states/game/enemy/enemy.hpp b/demo/inc/states/game/enemy/enemy.hpp index 2967141..387f267 100644 --- a/demo/inc/states/game/enemy/enemy.hpp +++ b/demo/inc/states/game/enemy/enemy.hpp @@ -22,6 +22,7 @@ using Tyra::DynamicMesh; using Tyra::DynPipOptions; using Tyra::Engine; using Tyra::Renderer; +using Tyra::Renderer3DUtility; using Tyra::TextureRepository; using Tyra::Vec4; @@ -53,6 +54,7 @@ class Enemy { bool isFighting = false; Vec4 spawnPoint; + Renderer3DUtility* utility; Audio* audio; EnemyInfo info; }; diff --git a/demo/src/states/game/enemy/enemy.cpp b/demo/src/states/game/enemy/enemy.cpp index 40c8783..064fa6d 100644 --- a/demo/src/states/game/enemy/enemy.cpp +++ b/demo/src/states/game/enemy/enemy.cpp @@ -17,6 +17,7 @@ namespace Demo { Enemy::Enemy(Engine* engine, const EnemyInfo& t_info) { info = t_info; + utility = &engine->renderer.renderer3D.utility; mesh = new DynamicMesh(*info.motherMesh); @@ -96,6 +97,10 @@ void Enemy::handlePlayerShoot(const PlayerShootAction& shootAction) { auto isOnEnemy = ray.intersectBox(bbox.min(), bbox.max()); + utility->drawBBox(bbox); + utility->drawLine(ray.origin, ray.direction); + utility->drawPoint(*mesh->getPosition()); + if (isOnEnemy) { mesh->setPosition(spawnPoint); TYRA_LOG("Enemy hit!"); diff --git a/demo/src/states/game/game_state.cpp b/demo/src/states/game/game_state.cpp index 959f6a6..a7f92ae 100644 --- a/demo/src/states/game/game_state.cpp +++ b/demo/src/states/game/game_state.cpp @@ -65,8 +65,8 @@ void GameState::update() { fpsChecker = 0; } - skybox->update(player->getPosition()); player->update(terrain->heightmap); + skybox->update(player->getPosition()); auto shootAction = player->getShootAction(); enemyManager->update(terrain->heightmap, player->getPosition(), shootAction); diff --git a/demo/src/states/game/player/player.cpp b/demo/src/states/game/player/player.cpp index 29726db..80db7e8 100644 --- a/demo/src/states/game/player/player.cpp +++ b/demo/src/states/game/player/player.cpp @@ -36,7 +36,7 @@ PlayerShootAction Player::getShootAction() const { action.isShooting = weapon.isShooting; if (action.isShooting) { - action.ray = Ray(camera.position, camera.lookAt); + action.ray = Ray(camera.position, camera.lookAt.getNormalized()); } return action; diff --git a/engine/inc/renderer/3d/renderer_3d.hpp b/engine/inc/renderer/3d/renderer_3d.hpp index 9dcb876..60c63b7 100644 --- a/engine/inc/renderer/3d/renderer_3d.hpp +++ b/engine/inc/renderer/3d/renderer_3d.hpp @@ -11,6 +11,7 @@ #pragma once #include "./pipeline/renderer_3d_pipeline.hpp" +#include "./renderer_3d_utility.hpp" namespace Tyra { @@ -19,6 +20,8 @@ class Renderer3D { Renderer3D(); ~Renderer3D(); + Renderer3DUtility utility; + /** Deinitialize previous pipeline and initialize new pipeline */ void usePipeline(Renderer3DPipeline* pipeline); diff --git a/engine/inc/renderer/3d/renderer_3d_utility.hpp b/engine/inc/renderer/3d/renderer_3d_utility.hpp new file mode 100644 index 0000000..effc712 --- /dev/null +++ b/engine/inc/renderer/3d/renderer_3d_utility.hpp @@ -0,0 +1,39 @@ +/* +# _____ ____ ___ +# | \/ ____| |___| +# | | | \ | | +#----------------------------------------------------------------------- +# Copyright 2022, tyra - https://github.com/h4570/tyra +# Licensed under Apache License 2.0 +# Sandro Sobczyński +*/ + +#pragma once + +#include "math/vec4.hpp" +#include "renderer/models/color.hpp" +#include "renderer/core/3d/bbox/core_bbox.hpp" + +namespace Tyra { + +/** Debug functions, with bad performance. */ +class Renderer3DUtility { + public: + Renderer3DUtility(); + ~Renderer3DUtility(); + + void drawPoint(const Vec4& v); + void drawPoint(const Vec4& v, const float& size); + void drawPoint(const Vec4& v, const float& size, const Color& color); + + void drawLine(const Vec4& from, const Vec4& to); + void drawLine(const Vec4& from, const Vec4& to, const float& size); + void drawLine(const Vec4& from, const Vec4& to, const float& size, + const Color& color); + + void drawBBox(const CoreBBox& v); + void drawBBox(const CoreBBox& v, const float& size); + void drawBBox(const CoreBBox& v, const float& size, const Color& color); +}; + +} // namespace Tyra diff --git a/engine/src/renderer/3d/renderer_3d_utility.cpp b/engine/src/renderer/3d/renderer_3d_utility.cpp new file mode 100644 index 0000000..708d452 --- /dev/null +++ b/engine/src/renderer/3d/renderer_3d_utility.cpp @@ -0,0 +1,54 @@ + +/* +# _____ ____ ___ +# | \/ ____| |___| +# | | | \ | | +#----------------------------------------------------------------------- +# Copyright 2022, tyra - https://github.com/h4570/tyra +# Licensed under Apache License 2.0 +# Sandro Sobczyński +*/ + +#include "renderer/3d/renderer_3d_utility.hpp" + +namespace Tyra { + +Renderer3DUtility::Renderer3DUtility() {} + +Renderer3DUtility::~Renderer3DUtility() {} + +void Renderer3DUtility::drawPoint(const Vec4& v) { drawPoint(v, 1.0F); } +void Renderer3DUtility::drawLine(const Vec4& from, const Vec4& to) { + drawLine(from, to, 1.0F); +} +void Renderer3DUtility::drawBBox(const CoreBBox& v) { drawBBox(v, 1.0F); } + +void Renderer3DUtility::drawPoint(const Vec4& v, const float& size) { + drawPoint(v, size, Color(128.0F, 0.0F, 0.0F, 128.0F)); +} + +void Renderer3DUtility::drawLine(const Vec4& from, const Vec4& to, + const float& size) { + drawLine(from, to, size, Color(128.0F, 0.0F, 0.0F, 128.0F)); +} + +void Renderer3DUtility::drawBBox(const CoreBBox& v, const float& size) { + drawBBox(v, size, Color(128.0F, 0.0F, 0.0F, 128.0F)); +} + +void Renderer3DUtility::drawPoint(const Vec4& v, const float& size, + const Color& color) { + // TODO +} + +void Renderer3DUtility::drawLine(const Vec4& from, const Vec4& to, + const float& size, const Color& color) { + // TODO +} + +void Renderer3DUtility::drawBBox(const CoreBBox& v, const float& size, + const Color& color) { + // TODO +} + +} // namespace Tyra