Ray casting engine implemented on the mBuino platform using the ST7735 LCD controller.

Dependencies:   LCD_ST7735 mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Raycaster.h Source File

Raycaster.h

00001 #ifndef __RATYCASTER_H__
00002 #define __RATYCASTER_H__
00003 class Raycaster
00004 {
00005     public:
00006         Raycaster(int left, int top, int width, int height, 
00007                   int viewerDistance, int viewerHeight, 
00008                   const uint8_t *pMap, int mapWidth, int mapHeight,
00009                   const uint16_t *pPalette);
00010             
00011         void renderFrame();
00012         
00013         void setCellPosition(int x, int y);
00014         void rotate(float radians);
00015         void move(int distance);
00016 
00017         ~Raycaster();
00018     private:
00019         struct Sliver
00020         {
00021             uint8_t top;
00022             uint8_t bottom;
00023             uint16_t color;            
00024         };                
00025     private:
00026         LCD_ST7735 _display;
00027         
00028         const uint8_t *_pMap;
00029         int _mapWidth;
00030         int _mapHeight;
00031         const uint16_t *_pPalette;
00032         int _viewDistanceTimesHeight;        
00033         Sliver *_pSlivers;
00034         
00035         int _left;
00036         int _right;
00037         int _width;
00038         int _halfWidth;
00039         int _horizCenter;
00040         
00041         int _top;
00042         int _bottom;
00043         int _height;
00044         int _halfHeight;
00045         int _vertCenter;
00046         
00047         int _viewerDistance;
00048         int _viewerHeight;
00049         float _viewerDistanceHeightRatio;
00050         float _viewVolume;
00051         float _halfViewVolume;
00052                 
00053         float _ainc;
00054         int _heightRatio;
00055         
00056         float _playerX;
00057         float _playerY;
00058         float _playerViewAngle;
00059 };
00060 #endif //__RATYCASTER_H__