5180 fichiers 38.5 Mo 0 téléchargements 287 vues mis à jour il y a 6 heures ui
nitro-v36-with-renderer-v36 / src / api / octane / room / GetRoomTileScreenLocation.ts
GetRoomTileScreenLocation.ts 1.2 Ko Télécharger le fichier
import { GetRoomEngine, Vector3d } from '@octane/renderer';

/**
 * The screen point of a tile's centre on the floor plane (z = 0) and the scale things drawn there
 * take: 1 at normal zoom, 0.5 zoomed out. The same projection the engine uses for room objects.
 */
export const GetRoomTileScreenLocation = (roomId: number, tileX: number, tileY: number, canvasId = 1): { x: number, y: number, scale: number } => {
    const engine = GetRoomEngine();
    const geometry = engine?.getRoomInstanceGeometry(roomId, canvasId);
    const canvas = engine?.getRoomInstanceRenderingCanvas(roomId, canvasId);

    if (!geometry || !canvas) return null;

    const point = geometry.getScreenPoint(new Vector3d(tileX + 0.5, tileY + 0.5, 0));

    if (!point) return null;

    const canvasScale = canvas.isFlipped ? -canvas.scale : canvas.scale;
    const width = canvas.isFlipped ? -canvas.width : canvas.width;
    const height = canvas.isFlipped ? -canvas.height : canvas.height;

    return {
        x: point.x * canvasScale + width / 2 + canvas.screenOffsetX,
        y: point.y * canvasScale + height / 2 + canvas.screenOffsetY,
        scale: (geometry.scale / 64) * Math.abs(canvasScale)
    };
};
15Sujets
1Dépôts
20Membres
2En ligne
Profile
Inscrit
Dernière visite
Messages
0
Votes positifs
0
Votes négatifs
0

Nous utilisons des cookies pour assurer le bon fonctionnement du site et améliorer votre expérience. en savoir plus

Autoriser