mirror of
https://git.coom.tech/drummyfish/raycastlib.git
synced 2024-11-23 20:49:57 +01:00
Optimize
This commit is contained in:
parent
5ee1c370dc
commit
c6bcb70158
1 changed files with 7 additions and 7 deletions
14
raycastlib.h
14
raycastlib.h
|
@ -309,13 +309,13 @@ void castRayMultiHit(Ray ray, int16_t (*arrayFunc)(int16_t, int16_t),
|
||||||
|
|
||||||
*hitResultsLen = 0;
|
*hitResultsLen = 0;
|
||||||
|
|
||||||
int16_t squareType = arrayFunc(currentSquare.x,currentSquare.y);
|
int_fast16_t squareType = arrayFunc(currentSquare.x,currentSquare.y);
|
||||||
|
|
||||||
Vector2D no, co; // next cell offset, collision offset
|
Vector2D no, co; // next cell offset, collision offset
|
||||||
|
|
||||||
for (uint16_t i = 0; i < maxSteps; ++i)
|
for (uint_fast16_t i = 0; i < maxSteps; ++i)
|
||||||
{
|
{
|
||||||
int16_t currentType = arrayFunc(currentSquare.x,currentSquare.y);
|
int_fast16_t currentType = arrayFunc(currentSquare.x,currentSquare.y);
|
||||||
|
|
||||||
if (currentType != squareType)
|
if (currentType != squareType)
|
||||||
{
|
{
|
||||||
|
@ -380,7 +380,7 @@ void castRaysMultiHit(
|
||||||
void (*hitFunc)(uint16_t pos, HitResult hit, uint16_t hitNo, Ray r),
|
void (*hitFunc)(uint16_t pos, HitResult hit, uint16_t hitNo, Ray r),
|
||||||
uint16_t maxHits, uint16_t maxSteps)
|
uint16_t maxHits, uint16_t maxSteps)
|
||||||
{
|
{
|
||||||
uint16_t fovHalf = fovAngle / 2;
|
uint_fast16_t fovHalf = fovAngle / 2;
|
||||||
|
|
||||||
Vector2D dir1 = angleToDirection(directionAngle - fovHalf);
|
Vector2D dir1 = angleToDirection(directionAngle - fovHalf);
|
||||||
Vector2D dir2 = angleToDirection(directionAngle + fovHalf);
|
Vector2D dir2 = angleToDirection(directionAngle + fovHalf);
|
||||||
|
@ -389,19 +389,19 @@ void castRaysMultiHit(
|
||||||
Unit dY = dir2.y - dir1.y;
|
Unit dY = dir2.y - dir1.y;
|
||||||
|
|
||||||
HitResult hits[maxHits];
|
HitResult hits[maxHits];
|
||||||
uint16_t hitCount;
|
uint_fast16_t hitCount;
|
||||||
|
|
||||||
Ray r;
|
Ray r;
|
||||||
r.start = position;
|
r.start = position;
|
||||||
|
|
||||||
for (uint8_t i = 0; i < resolution; ++i)
|
for (uint_fast8_t i = 0; i < resolution; ++i)
|
||||||
{
|
{
|
||||||
r.direction.x = dir1.x + (dX * i) / resolution;
|
r.direction.x = dir1.x + (dX * i) / resolution;
|
||||||
r.direction.y = dir1.y + (dY * i) / resolution;
|
r.direction.y = dir1.y + (dY * i) / resolution;
|
||||||
|
|
||||||
castRayMultiHit(r,arrayFunc,maxSteps,hits,&hitCount,maxHits);
|
castRayMultiHit(r,arrayFunc,maxSteps,hits,&hitCount,maxHits);
|
||||||
|
|
||||||
for (uint8_t j = 0; j < hitCount; ++j)
|
for (uint_fast8_t j = 0; j < hitCount; ++j)
|
||||||
hitFunc(i,hits[j],j,r);
|
hitFunc(i,hits[j],j,r);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue