Skip to content

Instantly share code, notes, and snippets.

@deltakosh
Created March 6, 2023 22:56
Show Gist options
  • Save deltakosh/66c3c6b460d1ab29c3808b6daf484706 to your computer and use it in GitHub Desktop.
Save deltakosh/66c3c6b460d1ab29c3808b6daf484706 to your computer and use it in GitHub Desktop.
// Capture the first pointer down
// And if we start on the potato we block camera control
var potatoHasControl;
scene.onPointerDown = (evt, pickResult) => {
if (!pickResult.hit) {
return;
}
if (pickResult.pickedMesh !== potato) {
return;
}
potatoHasControl = true;
scene.activeCamera.detachControl();
}
// Restore camera control
scene.onPointerUp = () => {
if (!potatoHasControl) {
return;
}
potatoHasControl = false;
scene.activeCamera.attachControl();
}
// Get the pointer move and act accordingly
scene.onPointerMove = (evt, pickResult) => {
if (!potatoHasControl) {
return;
}
if (!pickResult || !pickResult.hit) {
return;
}
if (pickResult.pickedMesh !== potato) {
return;
}
// UV of the picked point
var uv = pickResult.getTextureCoordinates();
var size = heightmap.getSize();
var centerX = Math.max(Math.round(uv.x * (size.width - 1)), 0);
var centerY = Math.max(Math.round((1 - uv.y) * (size.height - 1)), 0);
var radius = 20;
context.beginPath();
context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false);
context.fillStyle = evt.shiftKey ? 'black' : 'white';
context.fill();
heightmap.update(true);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment