Add hello ray
This commit is contained in:
parent
cd8a192f7c
commit
189140db7a
1 changed files with 85 additions and 0 deletions
85
helloRay.cpp
Normal file
85
helloRay.cpp
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
/**
|
||||||
|
Raycasting hello world program for Pokitto, using raycastlib.
|
||||||
|
|
||||||
|
author: Miloslav "drummyfish" Ciz
|
||||||
|
license: CC0 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define PIXEL_FUNCTION pixelFunc
|
||||||
|
/* ^ Before including raycastlib, this has to be set to the name of the
|
||||||
|
function that will render pixels. It allows super performance. */
|
||||||
|
|
||||||
|
/* There are many other options that can be defined here, check the library
|
||||||
|
for details. */
|
||||||
|
|
||||||
|
#include "raycastlib.h"
|
||||||
|
#include "Pokitto.h"
|
||||||
|
|
||||||
|
Pokitto::Core pokitto;
|
||||||
|
|
||||||
|
Camera camera; // Defines a view that will be rendered.
|
||||||
|
|
||||||
|
// Function that for given square coordinates returns height of the floor.
|
||||||
|
Unit floorHeightAt(int16_t x, int16_t y)
|
||||||
|
{
|
||||||
|
return x < 0 || x >= 10 || y < 0 || y >= 10 ?
|
||||||
|
UNITS_PER_SQUARE * 2 : 0;
|
||||||
|
// ^ UNITS_PER_SQUARE is the length of one side of the game world square.
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function which the library will call to draw indivifual pixels.
|
||||||
|
void pixelFunc(PixelInfo *pixel)
|
||||||
|
{
|
||||||
|
uint8_t color;
|
||||||
|
|
||||||
|
/* Pixel holds all kind of info about the pixel to be rendered. Check
|
||||||
|
the PixelInfo struct for details. */
|
||||||
|
|
||||||
|
if (pixel->isWall)
|
||||||
|
color = pixel->hit.direction + 2;
|
||||||
|
else
|
||||||
|
color = pixel->isFloor ? 10 : 11;
|
||||||
|
|
||||||
|
pokitto.display.drawPixel(pixel->position.x,pixel->position.y,color);
|
||||||
|
}
|
||||||
|
|
||||||
|
void draw()
|
||||||
|
{
|
||||||
|
RayConstraints c;
|
||||||
|
|
||||||
|
c.maxHits = 1;
|
||||||
|
c.maxSteps = 20;
|
||||||
|
|
||||||
|
/* This triggers the rendering, which will keep calling pixelFunc to render
|
||||||
|
the camera view. */
|
||||||
|
renderSimple(camera,floorHeightAt,0,0,c);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
pokitto.begin();
|
||||||
|
pokitto.setFrameRate(60);
|
||||||
|
|
||||||
|
initCamera(&camera);
|
||||||
|
|
||||||
|
// Set the camera position to square [4;6].
|
||||||
|
camera.position.x = 4 * UNITS_PER_SQUARE;
|
||||||
|
camera.position.y = 6 * UNITS_PER_SQUARE;
|
||||||
|
|
||||||
|
camera.height = UNITS_PER_SQUARE;
|
||||||
|
|
||||||
|
// Set the camera resolution to Pokitto display resolution.
|
||||||
|
camera.resolution.x = 110;
|
||||||
|
camera.resolution.y = 88;
|
||||||
|
|
||||||
|
while (pokitto.isRunning())
|
||||||
|
{
|
||||||
|
if (pokitto.update())
|
||||||
|
{
|
||||||
|
draw();
|
||||||
|
camera.direction -= 10; // Rotate camera for some animation.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in a new issue