mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-16 17:31:24 +01:00
refactor - create types array to have named attributes
This commit is contained in:
parent
0c2ec8d97e
commit
1a3ebe5b99
5 changed files with 24 additions and 18 deletions
|
|
@ -6085,9 +6085,9 @@
|
|||
|
||||
<script src="utils/shorthands.js"></script>
|
||||
<script src="utils/commonUtils.js"></script>
|
||||
<script src="utils/arrayUtils.js?v=29052022"></script>
|
||||
<script src="utils/arrayUtils.js?v=02062022"></script>
|
||||
<script src="utils/colorUtils.js"></script>
|
||||
<script src="utils/graphUtils.js?v=29052022"></script>
|
||||
<script src="utils/graphUtils.js?v=02062022"></script>
|
||||
<script src="utils/nodeUtils.js"></script>
|
||||
<script src="utils/numberUtils.js"></script>
|
||||
<script src="utils/polyfills.js"></script>
|
||||
|
|
@ -6121,7 +6121,7 @@
|
|||
|
||||
<script src="modules/ui/general.js?v=02062022"></script>
|
||||
<script src="modules/ui/options.js?v=01062022"></script>
|
||||
<script src="main.js?v=010620222"></script>
|
||||
<script src="main.js?v=020620222"></script>
|
||||
|
||||
<script defer src="modules/relief-icons.js"></script>
|
||||
<script defer src="modules/ui/style.js"></script>
|
||||
|
|
|
|||
13
main.js
13
main.js
|
|
@ -13,6 +13,11 @@ const ERROR = true;
|
|||
// detect device
|
||||
const MOBILE = window.innerWidth < 600 || navigator.userAgentData?.mobile;
|
||||
|
||||
// typed arrays max values
|
||||
const UINT8_MAX = 255;
|
||||
const UINT16_MAX = 65535;
|
||||
const UINT32_MAX = 4294967295;
|
||||
|
||||
if (PRODUCTION && "serviceWorker" in navigator) {
|
||||
window.addEventListener("load", () => {
|
||||
navigator.serviceWorker.register("./sw.js").catch(err => {
|
||||
|
|
@ -1198,17 +1203,17 @@ function reGraph() {
|
|||
|
||||
function getCellArea(i) {
|
||||
const area = Math.abs(d3.polygonArea(getPackPolygon(i)));
|
||||
return Math.min(area, 65535);
|
||||
return Math.min(area, UINT16_MAX);
|
||||
}
|
||||
|
||||
const {cells: packCells, vertices} = calculateVoronoi(newCells.p, grid.boundary);
|
||||
pack.vertices = vertices;
|
||||
pack.cells = packCells;
|
||||
pack.cells.p = newCells.p;
|
||||
pack.cells.g = getTypedArray(grid.points.length).from(newCells.g);
|
||||
pack.cells.g = createTypedArray({maxValue: grid.points.length, from: newCells.g});
|
||||
pack.cells.q = d3.quadtree(newCells.p.map(([x, y], i) => [x, y, i]));
|
||||
pack.cells.h = getTypedArray(100).from(newCells.h);
|
||||
pack.cells.area = getTypedArray(65535).from(pack.cells.i).map(getCellArea);
|
||||
pack.cells.h = createTypedArray({maxValue: 100, from: newCells.h});
|
||||
pack.cells.area = createTypedArray({maxValue: UINT16_MAX, from: pack.cells.i}).map(getCellArea);
|
||||
|
||||
TIME && console.timeEnd("reGraph");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,16 +43,18 @@ function deepCopy(obj) {
|
|||
|
||||
function getTypedArray(maxValue) {
|
||||
console.assert(
|
||||
Number.isInteger(maxValue) && maxValue >= 0 && maxValue <= 4294967295,
|
||||
`Array maxValue must be an integer between 0 and 4294967295, got ${maxValue}`
|
||||
Number.isInteger(maxValue) && maxValue >= 0 && maxValue <= UINT32_MAX,
|
||||
`Array maxValue must be an integer between 0 and ${UINT32_MAX}, got ${maxValue}`
|
||||
);
|
||||
|
||||
if (maxValue <= 255) return Uint8Array;
|
||||
if (maxValue <= 65535) return Uint16Array;
|
||||
if (maxValue <= 4294967295) return Uint32Array;
|
||||
if (maxValue <= UINT8_MAX) return Uint8Array;
|
||||
if (maxValue <= UINT16_MAX) return Uint16Array;
|
||||
if (maxValue <= UINT32_MAX) return Uint32Array;
|
||||
return Uint32Array;
|
||||
}
|
||||
|
||||
function createTypedArray({maxValue, length}) {
|
||||
return new (getTypedArray(maxValue))(length);
|
||||
function createTypedArray({maxValue, length, from}) {
|
||||
const typedArray = getTypedArray(maxValue);
|
||||
if (!from) return new typedArray(length);
|
||||
return typedArray.from(from);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,11 +43,10 @@ function calculateVoronoi(points, boundary) {
|
|||
TIME && console.timeEnd("calculateDelaunay");
|
||||
|
||||
TIME && console.time("calculateVoronoi");
|
||||
const n = points.length;
|
||||
const voronoi = new Voronoi(delaunay, allPoints, n);
|
||||
const voronoi = new Voronoi(delaunay, allPoints, points.length);
|
||||
|
||||
const cells = voronoi.cells;
|
||||
cells.i = getTypedArray(n).from(d3.range(n)); // array of indexes
|
||||
cells.i = createTypedArray({maxValue: points.length, length: points.length}).map((_, i) => i); // array of indexes
|
||||
const vertices = voronoi.vertices;
|
||||
TIME && console.timeEnd("calculateVoronoi");
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
"use strict";
|
||||
// version and caching control
|
||||
|
||||
const version = "1.84.08"; // generator version, update each time
|
||||
const version = "1.84.09"; // generator version, update each time
|
||||
|
||||
{
|
||||
document.title += " v" + version;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue