Grids with subdivide outwards turned off fade out improved
This commit is contained in:
parent
0ec5334b77
commit
ffc9d42c5b
2 changed files with 32 additions and 16 deletions
|
|
@ -66,7 +66,7 @@ World::World(MainProgram& initMain, OpenWorldInfo& worldInfo):
|
|||
|
||||
gridMan.add_grid("b");
|
||||
gridMan.grids["b"].size = WorldScalar(1000);
|
||||
gridMan.grids["b"].set_remove_divisions_outwards(true);
|
||||
gridMan.grids["b"].set_remove_divisions_outwards(false);
|
||||
gridMan.grids["b"].gridType = WorldGrid::GridType::CIRCLE_POINTS;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -224,10 +224,13 @@ void WorldGrid::draw(GridManager& gMan, SkCanvas* canvas, const DrawData& drawDa
|
|||
|
||||
SkPaint linePaint;
|
||||
|
||||
if(removeDivisionsOutwards && sizeDetermineSubdivisionsToRemove > WorldScalar(1)) {
|
||||
if(sizeDetermineSubdivisionsToRemove > WorldScalar(1)) {
|
||||
double divLogDouble, divLogFraction;
|
||||
divLogFraction = std::modf(static_cast<double>(FixedPoint::log(sizeDetermineSubdivisionsToRemove, WorldScalar(subdivisionsTrue))), &divLogDouble);
|
||||
divLogFraction = std::modf(static_cast<double>(FixedPoint::log(sizeDetermineSubdivisionsToRemove, WorldScalar(subdivisionsTrue == 1 ? 2 : subdivisionsTrue))), &divLogDouble);
|
||||
uint64_t divLog = divLogDouble;
|
||||
if(divLog >= 2 && !removeDivisionsOutwards)
|
||||
return;
|
||||
|
||||
WorldScalar logMultiplier = FixedPoint::exp_int_accurate<WorldScalar>(divLog, subdivisionsTrue);
|
||||
|
||||
WorldScalar subDivSize = size * logMultiplier;
|
||||
|
|
@ -247,17 +250,33 @@ void WorldGrid::draw(GridManager& gMan, SkCanvas* canvas, const DrawData& drawDa
|
|||
|
||||
float finalDivMultiplier = (1.0 - divLogFraction) * ((divLog == 0) ? 0.5 : 1.0);
|
||||
|
||||
linePaint.setShader(get_shader(gridType, {
|
||||
.gridColor = pointColor,
|
||||
.mainGridScale = floatDivWorldSize,
|
||||
.mainGridClosestPoint = closestGridPointScreenPos,
|
||||
.mainGridPointSize = gridPointSize,
|
||||
if(removeDivisionsOutwards || divLog == 0) {
|
||||
linePaint.setShader(get_shader(gridType, {
|
||||
.gridColor = pointColor,
|
||||
.mainGridScale = floatDivWorldSize,
|
||||
.mainGridClosestPoint = closestGridPointScreenPos,
|
||||
.mainGridPointSize = gridPointSize,
|
||||
|
||||
.divGridAlphaFrac = finalDivMultiplier,
|
||||
.divGridScale = floatSubDivWorldSize,
|
||||
.divGridClosestPoint = subClosestGridPointScreenPos,
|
||||
.divGridPointSize = gridPointSize * finalDivMultiplier
|
||||
}));
|
||||
.divGridAlphaFrac = finalDivMultiplier,
|
||||
.divGridScale = floatSubDivWorldSize,
|
||||
.divGridClosestPoint = subClosestGridPointScreenPos,
|
||||
.divGridPointSize = gridPointSize * finalDivMultiplier
|
||||
}));
|
||||
}
|
||||
else {
|
||||
pointColor.fA *= finalDivMultiplier;
|
||||
linePaint.setShader(get_shader(gridType, {
|
||||
.gridColor = pointColor,
|
||||
.mainGridScale = floatSubDivWorldSize,
|
||||
.mainGridClosestPoint = subClosestGridPointScreenPos,
|
||||
.mainGridPointSize = gridPointSize * finalDivMultiplier,
|
||||
|
||||
.divGridAlphaFrac = 0.0f,
|
||||
.divGridScale = floatSubDivWorldSize,
|
||||
.divGridClosestPoint = subClosestGridPointScreenPos,
|
||||
.divGridPointSize = gridPointSize * finalDivMultiplier
|
||||
}));
|
||||
}
|
||||
}
|
||||
else {
|
||||
WorldScalar subDivSize = size;
|
||||
|
|
@ -265,9 +284,6 @@ void WorldGrid::draw(GridManager& gMan, SkCanvas* canvas, const DrawData& drawDa
|
|||
WorldScalar subDivWorldSize = subDivSize / drawData.cam.c.inverseScale;
|
||||
WorldScalar divWorldSize = divSize / drawData.cam.c.inverseScale;
|
||||
|
||||
if(divWorldSize < WorldScalar(7))
|
||||
return;
|
||||
|
||||
float floatDivWorldSize = static_cast<float>(divWorldSize);
|
||||
float floatSubDivWorldSize = static_cast<float>(subDivWorldSize);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue