diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/crepe/api/Animator.cpp | 2 | ||||
| -rw-r--r-- | src/crepe/api/Camera.h | 18 | ||||
| -rw-r--r-- | src/crepe/api/Vector2.cpp | 4 | ||||
| -rw-r--r-- | src/crepe/api/Vector2.h | 2 | ||||
| -rw-r--r-- | src/crepe/facade/SDLContext.cpp | 7 | ||||
| -rw-r--r-- | src/crepe/system/AnimatorSystem.cpp | 2 | ||||
| -rw-r--r-- | src/crepe/system/RenderSystem.cpp | 1 | ||||
| -rw-r--r-- | src/example/rendering.cpp | 10 | 
8 files changed, 20 insertions, 26 deletions
diff --git a/src/crepe/api/Animator.cpp b/src/crepe/api/Animator.cpp index f3d809c..d206428 100644 --- a/src/crepe/api/Animator.cpp +++ b/src/crepe/api/Animator.cpp @@ -18,7 +18,7 @@ Animator::Animator(game_object_id_t id, Sprite & ss, int row, int col, int col_a  	animator_rect.h /= col;  	animator_rect.w /= row;  	animator_rect.x = 0; -	animator_rect.y = (col_animator - 1)* animator_rect.h; +	animator_rect.y = (col_animator - 1) * animator_rect.h;  	this->active = false;  }  Animator::~Animator() { dbg_trace(); } diff --git a/src/crepe/api/Camera.h b/src/crepe/api/Camera.h index dfccd24..d7292ef 100644 --- a/src/crepe/api/Camera.h +++ b/src/crepe/api/Camera.h @@ -28,25 +28,17 @@ public:  	//! Background color of the camera view.  	Color bg_color; -	/** -	 * \pos The position of the camera in world units  -	 */ +	//! pos The position of the camera in world units  	Vector2 pos = {0, 0}; -	/** -	 * \screen the display size in pixels ( output resolution ) -	 */ +	//! screen the display size in pixels ( output resolution )  	Vector2 screen = {640, 480}; -	/** -	 * \viewport is the area of the world visible through the camera (in world units) -	 */ +	//! viewport is the area of the world visible through the camera (in world units)  	Vector2 viewport = {500, 500}; -	/** -	 * \scale scaling factor from world units to pixel coordinates -	 */ -	Vector2 scale = {0,0}; +	//! scale scaling factor from world units to pixel coordinates +	Vector2 scale = {0, 0};  	//! Zoom level of the camera view.  	double zoom = 1.0f; diff --git a/src/crepe/api/Vector2.cpp b/src/crepe/api/Vector2.cpp index c3a49b7..8658c00 100644 --- a/src/crepe/api/Vector2.cpp +++ b/src/crepe/api/Vector2.cpp @@ -8,14 +8,16 @@ Vector2 Vector2::operator+(const Vector2 & other) const { return {x + other.x, y  Vector2 Vector2::operator*(double scalar) const { return {x * scalar, y * scalar}; } -Vector2 Vector2::operator*(const Vector2 & other) const{ +Vector2 Vector2::operator*(const Vector2 & other) const {  	return {this->x * other.x, this->y * other.y};  } +  Vector2 & Vector2::operator*=(const Vector2 & other) {  	x *= other.x;  	y *= other.y;  	return *this;  } +  Vector2 & Vector2::operator*=(const double & other) {  	x *= other;  	y *= other; diff --git a/src/crepe/api/Vector2.h b/src/crepe/api/Vector2.h index 2a5db1d..790160d 100644 --- a/src/crepe/api/Vector2.h +++ b/src/crepe/api/Vector2.h @@ -18,6 +18,7 @@ struct Vector2 {  	//! Multiplies this vector by a scalar and returns the result.  	Vector2 operator*(double scalar) const; +	//! Multiplies this vector by another vector element-wise and updates this vector.  	Vector2 operator*(const Vector2 & other) const;  	//! Multiplies this vector by another vector element-wise and updates this vector. @@ -26,6 +27,7 @@ struct Vector2 {  	//! Multiplies a scalar value to both components of this vector and updates this vector.  	Vector2 & operator*=(const double & other); +	//! Divides this vector by another vector element-wise and updates this vector.  	Vector2 operator/(const Vector2 & other) const;  	//! Adds another vector to this vector and updates this vector. diff --git a/src/crepe/facade/SDLContext.cpp b/src/crepe/facade/SDLContext.cpp index 785b285..0cb7be9 100644 --- a/src/crepe/facade/SDLContext.cpp +++ b/src/crepe/facade/SDLContext.cpp @@ -38,7 +38,7 @@ SDLContext::SDLContext() {  	}  	SDL_Window * tmp_window  		= SDL_CreateWindow("Crepe Game Engine", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, -						   this->viewport.w, this->viewport.h, SDL_WINDOW_RESIZABLE); +						   this->viewport.w, this->viewport.h, 0);  	if (!tmp_window) {  		// FIXME: throw exception  		std::cerr << "Window could not be created! SDL_Error: " << SDL_GetError() << std::endl; @@ -104,13 +104,11 @@ void SDLContext::handle_events(bool & running) {  void SDLContext::clear_screen() { SDL_RenderClear(this->game_renderer.get()); }  void SDLContext::present_screen() { SDL_RenderPresent(this->game_renderer.get()); } -  void SDLContext::draw(const Sprite & sprite, const Transform & transform, const Camera & cam) {  	SDL_RendererFlip render_flip  		= (SDL_RendererFlip) ((SDL_FLIP_HORIZONTAL * sprite.flip.flip_x)  							  | (SDL_FLIP_VERTICAL * sprite.flip.flip_y)); -	  	Vector2 pixel_coord = (transform.position - cam.pos) * cam.scale;  	double pixel_w = sprite.sprite_rect.w * transform.scale * cam.scale.x; @@ -148,11 +146,10 @@ void SDLContext::camera(Camera & cam) {  		cam.scale.y = cam.scale.x = cam.screen.y / zoomed_viewport.y;  	} -  	if (this->viewport.w != cam.screen.x && this->viewport.h != cam.screen.y) {  		this->viewport.w = cam.screen.x;  		this->viewport.h = cam.screen.y; -		SDL_SetWindowSize(this->game_window.get(), cam.screen.x	, cam.screen.y); +		SDL_SetWindowSize(this->game_window.get(), cam.screen.x, cam.screen.y);  	}  	SDL_SetRenderDrawColor(this->game_renderer.get(), cam.bg_color.r, cam.bg_color.g, diff --git a/src/crepe/system/AnimatorSystem.cpp b/src/crepe/system/AnimatorSystem.cpp index ceb5bfd..efe0e48 100644 --- a/src/crepe/system/AnimatorSystem.cpp +++ b/src/crepe/system/AnimatorSystem.cpp @@ -3,8 +3,8 @@  #include <vector>  #include "api/Animator.h" -  #include "facade/SDLContext.h" +  #include "AnimatorSystem.h"  #include "ComponentManager.h" diff --git a/src/crepe/system/RenderSystem.cpp b/src/crepe/system/RenderSystem.cpp index 989a82f..7538e20 100644 --- a/src/crepe/system/RenderSystem.cpp +++ b/src/crepe/system/RenderSystem.cpp @@ -13,6 +13,7 @@ using namespace crepe;  void RenderSystem::clear_screen() const { SDLContext::get_instance().clear_screen(); }  void RenderSystem::present_screen() const { SDLContext::get_instance().present_screen(); } +  void RenderSystem::update_camera() {  	ComponentManager & mgr = this->component_manager; diff --git a/src/example/rendering.cpp b/src/example/rendering.cpp index 1db57e5..418e03d 100644 --- a/src/example/rendering.cpp +++ b/src/example/rendering.cpp @@ -24,7 +24,7 @@ int main() {  	ComponentManager mgr{};  	RenderSystem sys{mgr}; -	AnimatorSystem anim_sys {mgr}; +	AnimatorSystem anim_sys{mgr};  	GameObject obj = mgr.new_object("name", "tag", Vector2{250, 0}, 0, 1);  	GameObject obj1 = mgr.new_object("name", "tag", Vector2{500, 0}, 1, 0.1); @@ -33,10 +33,11 @@ int main() {  	// Normal adding components  	{  		Color color(0, 0, 0, 0); -		Sprite & sprite = obj.add_component<Sprite>(make_shared<Texture>("../asset/spritesheet/spritesheet_test.png"), color, -								  FlipSettings{false, false}); +		Sprite & sprite = obj.add_component<Sprite>( +			make_shared<Texture>("../asset/spritesheet/spritesheet_test.png"), color, +			FlipSettings{false, false});  		Camera & cam = obj.add_component<Camera>(Color::get_red()); -		obj.add_component<Animator>(sprite, 4,1,1).active = true; +		obj.add_component<Animator>(sprite, 4, 1, 1).active = true;  	}  	/*  	{ @@ -54,7 +55,6 @@ int main() {  	}  	*/ -  	auto start = std::chrono::steady_clock::now();  	while (std::chrono::steady_clock::now() - start < std::chrono::seconds(5)) {  		anim_sys.update();  |