Skip to content

Differences in FOV calculation depending on position #218

Description

@scalemaildev

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.

cornercase1
cornercase2

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;
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions