Changed to keep the original Cone function

This commit is contained in:
WBHarry 2025-07-08 23:37:18 +02:00
parent 9454fe0525
commit 2a72c8ac83
4 changed files with 88 additions and 42 deletions

View file

@ -1,6 +1,6 @@
export default class DhTemplateLayer extends TemplateLayer {
export default class DhTemplateLayer extends foundry.canvas.layers.TemplateLayer {
static prepareSceneControls() {
const sc = SceneControls;
const sc = foundry.applications.ui.SceneControls;
return {
name: 'templates',
order: 2,
@ -26,6 +26,17 @@ export default class DhTemplateLayer extends TemplateLayer {
cone: {
name: 'cone',
order: 2,
title: 'CONTROLS.MeasureCone',
icon: 'fa-solid fa-angle-left',
toolclip: {
src: 'toolclips/tools/measure-cone.webm',
heading: 'CONTROLS.MeasureCone',
items: sc.buildToolclipItems(['create', 'move', 'edit', 'hide', 'delete', 'rotate'])
}
},
inFront: {
name: 'inFront',
order: 3,
title: 'CONTROLS.inFront',
icon: 'fa-solid fa-eye',
toolclip: {
@ -36,7 +47,7 @@ export default class DhTemplateLayer extends TemplateLayer {
},
rect: {
name: 'rect',
order: 3,
order: 4,
title: 'CONTROLS.MeasureRect',
icon: 'fa-regular fa-square',
toolclip: {
@ -47,7 +58,7 @@ export default class DhTemplateLayer extends TemplateLayer {
},
ray: {
name: 'ray',
order: 4,
order: 5,
title: 'CONTROLS.MeasureRay',
icon: 'fa-solid fa-up-down',
toolclip: {
@ -58,7 +69,7 @@ export default class DhTemplateLayer extends TemplateLayer {
},
clear: {
name: 'clear',
order: 5,
order: 6,
title: 'CONTROLS.MeasureClear',
icon: 'fa-solid fa-trash',
visible: game.user.isGM,
@ -69,4 +80,37 @@ export default class DhTemplateLayer extends TemplateLayer {
activeTool: 'circle'
};
}
_onDragLeftStart(event) {
const interaction = event.interactionData;
// Snap the origin to the grid
if (!event.shiftKey) interaction.origin = this.getSnappedPoint(interaction.origin);
// Create a pending MeasuredTemplateDocument
const tool = game.activeTool === 'inFront' ? 'cone' : game.activeTool;
const previewData = {
user: game.user.id,
t: tool,
x: interaction.origin.x,
y: interaction.origin.y,
sort: Math.max(this.getMaxSort() + 1, 0),
distance: 1,
direction: 0,
fillColor: game.user.color || '#FF0000',
hidden: event.altKey
};
const defaults = CONFIG.MeasuredTemplate.defaults;
if (game.activeTool === 'cone') previewData.angle = defaults.angle;
else if (game.activeTool === 'inFront') previewData.angle = 180;
else if (game.activeTool === 'ray') previewData.width = defaults.width * canvas.dimensions.distance;
const cls = foundry.utils.getDocumentClass('MeasuredTemplate');
const doc = new cls(previewData, { parent: canvas.scene });
// Create a preview MeasuredTemplate object
const template = new this.constructor.placeableClass(doc);
doc._object = template;
interaction.preview = this.preview.addChild(template);
template.draw();
}
}