home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 23 / IOPROG_23.ISO / SOFT / RAYCAST.ZIP / RAYREND.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1995-10-23  |  1.3 KB  |  68 lines

  1. #include "ray.h"
  2. #include "rayrend.h"
  3. #include "raycl.h"
  4. #include "rayvb.h"
  5. #include "globals.h"
  6. #include "voxinter.h"
  7. #include "asm.h"
  8. #include "scrconf.h"
  9.  
  10. #define MIN_RENDER_MODE 0
  11. #define MAX_RENDER_MODE 1
  12.  
  13. #define APPROX_INFO_SIZE 10
  14.  
  15. void Render_Init() {
  16.  
  17. bounds=(vb_node *)NewPtr(Get_Phys_Screen_Width() * sizeof(vb_node));
  18.  
  19. wall_runs=(wall_run_info *)NewPtr(MAX_WALL_RUNS * sizeof(wall_run_info));
  20. floor_runs=(floor_run_info *)NewPtr(MAX_FLOOR_RUNS * sizeof(floor_run_info));
  21.  
  22. Draw_Sub_Sector_Setup();
  23.  
  24. Init_Slope_Table();
  25.  
  26. }
  27.  
  28. void Render_Close() {
  29.  
  30.    DelPtr(bounds);
  31.    DelPtr(wall_runs);
  32.    DelPtr(floor_runs);
  33.    Draw_Sub_Sector_Close();
  34.    Clear_Slope_Table();
  35.  
  36. }
  37.  
  38. render_type render_mode;
  39.  
  40. void Render_Screen(long x, long y, long z, long view_angle) {
  41.    switch (render_mode) {
  42.    case MODE_3D:
  43.       Ray_Caster(x, y, z, view_angle);
  44.       break;
  45.    case MODE_2D:
  46.       Render_2d(x, y, view_angle);
  47.       break;
  48.    default: 
  49.  
  50.      break;
  51.    } /* endswitch */
  52. }
  53.  
  54. void SwitchRenderMode() {
  55.    render_mode++;
  56.    if (render_mode > MAX_RENDER_MODE) {
  57.       render_mode=MIN_RENDER_MODE;
  58.    } /* endif */
  59.    clearBuff();
  60. }
  61.  
  62. void SetRenderMode(render_type mode) {
  63.    render_mode=mode;
  64.    clearBuff();
  65. };
  66.  
  67. render_type GetRenderMode() { return render_mode; };
  68.