Add first person view.

This commit is contained in:
Sheldon Lee 2023-04-20 00:31:41 +01:00
parent 2c06859473
commit 787b25239e
3 changed files with 53 additions and 0 deletions

39
firstperson.cpp Normal file
View File

@ -0,0 +1,39 @@
#include "firstperson.h"
#include <stdio.h>
#include "maths.h"
static sf::RenderTexture renderTexture;
static sf::Vector2f renderTexturePosition;
static bool init = false;
static unsigned int width;
static unsigned int height;
int firstperson_init(unsigned int _width, unsigned int _height)
{
printf("firstperson_init()\n");
if (!renderTexture.create(_width, _height)) return 0;
width = _width;
height = _height;
init = true;
return 1;
}
void firstperson_update(sf::RenderTarget* renderTarget)
{
renderTexture.clear();
sf::CircleShape shape(50);
renderTexture.draw(shape);
renderTexture.display();
sf::Sprite sprite(renderTexture.getTexture());
sprite.setPosition(renderTexturePosition);
renderTarget->draw(sprite);
}
void firstperson_setTexturePosition(float x, float y)
{
renderTexturePosition.x = x;
renderTexturePosition.y = y;
}

10
firstperson.h Normal file
View File

@ -0,0 +1,10 @@
#ifndef FIRSTPERSON_H
#define FIRSTPERSON_H
#include <SFML/Graphics.hpp>
int firstperson_init(unsigned int width, unsigned int height);
void firstperson_update(sf::RenderTarget* renderTarget);
void firstperson_setTexturePosition(float x, float y);
#endif

View File

@ -5,6 +5,7 @@
#include "maths.h"
#include "camera.h"
#include "minimap.h"
#include "firstperson.h"
#define MINIMAP_SIZE 460
#define VIEW_SIZE MINIMAP_SIZE*2
@ -22,8 +23,10 @@ int view_init()
printf("view_init()\n");
if (!camera_init(&camera, sf::Vector2f(5.f/2.f, 5.f/2.f), 0.f, 100, 0.5f*PI)) return 0;
if (!minimap_init(MINIMAP_SIZE)) return 0;
if (!firstperson_init(VIEW_SIZE, MINIMAP_SIZE)) return 0;
minimap_setTexturePosition(0.f, 0.f);
firstperson_setTexturePosition(MINIMAP_SIZE, 0.f);
return 1;
}
@ -50,6 +53,7 @@ int view_update()
window.clear();
minimap_update(&window, &camera);
firstperson_update(&window);
window.display();
return 1;