I've noticed that the FoV calculation puts out different results based on the source position. For example, in these two images: standing on the bones in the lower left allows the player to see the hex next to the bones in the upper right. However, standing in that same spot in the second image doesn't allow the player to see their original position.


Is this normal behavior? I'm using pointy-topped hexes with double wide coordinates, and the topology is set to 6.
Code snippet for how I'm implementing fov:
updateVis(scene: any, entity: Entity): void {
const vis = new Set<number>();
const viewPosC = intToCoord(entity.c.e.pos);
const px = viewPosC[0];
const py = viewPosC[1];
const fov = new FOV.PreciseShadowcasting((x: number, y: number): boolean => {
const pos = coordToInt([ x, y ]);
return scene.currentLevel.tiles[pos] && !scene.currentLevel.tiles[pos].c.e.blocksSight;
}, { topology: 6 });
fov.compute(px, py, entity.c.mem.visRadius, (xi: number, yi: number) => {
const pos = coordToInt([ xi, yi ]);
vis.add(pos);
});
entity.c.mem.vis = vis;
}
I've noticed that the FoV calculation puts out different results based on the source position. For example, in these two images: standing on the bones in the lower left allows the player to see the hex next to the bones in the upper right. However, standing in that same spot in the second image doesn't allow the player to see their original position.
Is this normal behavior? I'm using pointy-topped hexes with double wide coordinates, and the topology is set to 6.
Code snippet for how I'm implementing fov: