mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-21 19:41:23 +01:00
Fixes for brush circle and Firefox
This commit is contained in:
parent
6a10692b22
commit
8054bab688
3 changed files with 45 additions and 27 deletions
|
|
@ -41,9 +41,8 @@ function render() {
|
|||
_3dpreviewRenderer.render(_3dpreviewScene, _3dpreviewCamera);
|
||||
}
|
||||
|
||||
function start3dpreview(canvas) {
|
||||
_3dpreviewScene = new THREE.Scene();
|
||||
|
||||
function check3dCamera(canvas) {
|
||||
// workaround to fix camera problems
|
||||
var resetCamera = 0;
|
||||
if (!_3dpreviewCamera) {
|
||||
resetCamera = 1;
|
||||
|
|
@ -57,6 +56,22 @@ function start3dpreview(canvas) {
|
|||
_3dpreviewCamera.position.z = 800;
|
||||
_3dpreviewCamera.position.y = 1000;
|
||||
}
|
||||
}
|
||||
|
||||
function removeMesh() {
|
||||
_3dpreviewScene.remove(_3dmesh);
|
||||
_3dmesh.geometry.dispose();
|
||||
_3dmesh.material.dispose();
|
||||
_3dmesh = undefined;
|
||||
_3dgeometry = undefined;
|
||||
_3dmaterial = undefined;
|
||||
_3dtexture = undefined;
|
||||
}
|
||||
|
||||
function start3dpreview(canvas) {
|
||||
_3dpreviewScene = new THREE.Scene();
|
||||
|
||||
check3dCamera(canvas);
|
||||
|
||||
_3dpreviewRenderer = new THREE.WebGLRenderer({ canvas: canvas });
|
||||
_3dpreviewControls = new THREE.OrbitControls( _3dpreviewCamera, _3dpreviewRenderer.domElement );
|
||||
|
|
@ -66,7 +81,6 @@ function start3dpreview(canvas) {
|
|||
|
||||
document.body.appendChild(_3dpreviewRenderer.domElement);
|
||||
|
||||
// _3dpreviewControls.addEventListener( 'change', render );
|
||||
_3danimationFrame = requestAnimationFrame(render);
|
||||
}
|
||||
|
||||
|
|
@ -75,13 +89,7 @@ function stop3dpreview() {
|
|||
cancelAnimationFrame(_3danimationFrame);
|
||||
_3danimationFrame = null;
|
||||
}
|
||||
_3dpreviewScene.remove(_3dmesh);
|
||||
_3dmesh.geometry.dispose();
|
||||
_3dmesh.material.dispose();
|
||||
_3dmesh = undefined;
|
||||
_3dgeometry = undefined;
|
||||
_3dmaterial = undefined;
|
||||
_3dtexture = undefined;
|
||||
removeMesh();
|
||||
|
||||
_3dpreviewScene = null;
|
||||
_3dpreviewRenderer = null;
|
||||
|
|
@ -89,13 +97,8 @@ function stop3dpreview() {
|
|||
}
|
||||
|
||||
function update3dpreview(canvas) {
|
||||
_3dpreviewScene.remove(_3dmesh);
|
||||
_3dmesh.geometry.dispose();
|
||||
_3dmesh.material.dispose();
|
||||
_3dmesh = undefined;
|
||||
_3dgeometry = undefined;
|
||||
_3dmaterial = undefined;
|
||||
_3dtexture = undefined;
|
||||
removeMesh();
|
||||
check3dCamera(canvas);
|
||||
|
||||
_3dpreviewRenderer.setSize(canvas.width, canvas.height);
|
||||
addMesh(graphWidth, graphHeight, grid.cellsX, grid.cellsY);
|
||||
|
|
|
|||
|
|
@ -53,6 +53,12 @@ function getSVGImage(type, width, height) {
|
|||
if (!clone.select("#prec").selectAll("circle").size()) clone.select("#prec").remove();
|
||||
if (!clone.select("#scaleBar").selectAll("use").size()) clone.select("#scaleBar").remove();
|
||||
|
||||
// default to water - on Firefox, ocean pattern appears as alternating blocks of ocean and water pattern
|
||||
const isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
|
||||
if (isFirefox) {
|
||||
if (!clone.select("#oceanPattern").selectAll("use").size()) clone.select("#oceanPattern").remove();
|
||||
}
|
||||
|
||||
const removeEmptyGroups = function() {
|
||||
let empty = 0;
|
||||
clone.selectAll("g").each(function() {
|
||||
|
|
@ -76,7 +82,7 @@ function getSVGImage(type, width, height) {
|
|||
if (key === "mask-image" && value !== defaultStyles.getPropertyValue(key)) {
|
||||
style += "mask-image: url('#land');";
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (key === "cursor") continue; // cursor should be default
|
||||
if (this.hasAttribute(key)) continue; // don't add style if there is the same attribute
|
||||
if (value === defaultStyles.getPropertyValue(key)) continue;
|
||||
|
|
@ -140,6 +146,5 @@ function getHeightmap() {
|
|||
}
|
||||
|
||||
function getPreviewTexture(width, height) {
|
||||
|
||||
return getSVGImage("svg", width, height);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1251,16 +1251,26 @@ function getHeight(h) {
|
|||
_3dpreview.height = 800 / (graphWidth / graphHeight);
|
||||
|
||||
$("#_3dpreviewEditor").dialog({
|
||||
title: "3D Preview", width: _3dpreview.width, height: _3dpreview.height+50, resizable: true,
|
||||
resizeStop: function(event, ui) {
|
||||
var _3dpreview = document.getElementById("_3dpreview");
|
||||
_3dpreview.width = ui.size.width;
|
||||
_3dpreview.height = ui.size.height-50;
|
||||
update3dpreview(_3dpreview);
|
||||
}
|
||||
title: "3D Preview", width: _3dpreview.width, height: _3dpreview.height, resizable: true
|
||||
}).on('dialogclose', close3dPreview);
|
||||
|
||||
var titleBar = document.getElementById("_3dpreviewEditor").previousSibling;
|
||||
$("#_3dpreviewEditor").dialog( "option", "height", _3dpreview.height + titleBar.clientHeight + 2 );
|
||||
|
||||
$("#_3dpreviewEditor").on("dialogresizestop", function(event, ui) {
|
||||
var titleBar = document.getElementById("_3dpreviewEditor").previousSibling;
|
||||
|
||||
var _3dpreview = document.getElementById("_3dpreview");
|
||||
_3dpreview.width = ui.size.width;
|
||||
_3dpreview.height = (ui.size.height - titleBar.clientHeight);
|
||||
hideCircle();
|
||||
update3dpreview(_3dpreview);
|
||||
showCircle();
|
||||
});
|
||||
|
||||
hideCircle();
|
||||
start3dpreview(_3dpreview);
|
||||
showCircle();
|
||||
|
||||
var _3dpreviewContainer = document.getElementById("_3dpreviewContainer");
|
||||
_3dpreviewContainer.appendChild(_3dpreview);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue