#ifndef SHARED_RAY_DDA #define SHARED_RAY_DDA 1 #pragma once #include "shared/types.hh" class Dimension; class RayDDA final { public: explicit RayDDA(void) = default; explicit RayDDA(const Dimension* dimension, const chunk_pos& start_chunk, const glm::fvec3& start_fpos, const glm::fvec3& direction); explicit RayDDA(const Dimension& dimension, const chunk_pos& start_chunk, const glm::fvec3& start_fpos, const glm::fvec3& direction); void reset(const Dimension* dimension, const chunk_pos& start_chunk, const glm::fvec3& start_fpos, const glm::fvec3& direction); void reset(const Dimension& dimension, const chunk_pos& start_chunk, const glm::fvec3& start_fpos, const glm::fvec3& direction); voxel_id step(void); public: const Dimension* dimension; chunk_pos start_chunk; glm::fvec3 start_fpos; glm::fvec3 direction; glm::fvec3 delta_dist; glm::fvec3 side_dist; voxel_pos vstep; double distance; voxel_pos vnormal; voxel_pos vpos; }; #endif /* SHARED_RAY_DDA */