Ray casting engine implemented on the mBuino platform using the ST7735 LCD controller.
Embed:
(wiki syntax)
Show/hide line numbers
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__
Generated on Sat Jul 16 2022 14:43:34 by 1.7.2