Skip to content

Commit

Permalink
ready update to v1.2.7
Browse files Browse the repository at this point in the history
  • Loading branch information
Lampese committed Jul 24, 2023
1 parent f2fda5e commit 42650fd
Show file tree
Hide file tree
Showing 3 changed files with 119 additions and 115 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@pureeval/voxel-geometry",
"version": "1.2.6",
"version": "1.2.7",
"type": "module",
"description": "voxel-geometry",
"devDependencies": {
Expand Down
18 changes: 9 additions & 9 deletions src/generator.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Vec3, Space, vec3, put } from './vector.js';
import { Vec3, Space, vec3 } from './vector.js';
import { round_pos } from './transform.js';
import { LSystem } from './lsystem.js';

// Universal configs : block, origin, player, dimension, env , facing , hollow?
Expand Down Expand Up @@ -58,7 +59,7 @@ function line(p1: Vec3, p2: Vec3, resolution: number): Space {
const stepX = dx / steps;
const stepY = dy / steps;
const stepZ = dz / steps;
const points: Space = [];
const points: Space = [p2];

for (let i = 0; i <= steps; ++i) {
const x = p1.x + i * stepX;
Expand All @@ -71,19 +72,18 @@ function line(p1: Vec3, p2: Vec3, resolution: number): Space {
}

function lineVoxel(p1: Vec3, p2: Vec3): Space {
return line(p1, p2, 1);
return round_pos(line(p1, p2, 1.2));
}

function triangle(p1: Vec3, p2: Vec3, p3: Vec3, acc: number): Space {
const base = line(p1, p2, acc);
const fill = base.flatMap((point) => line(point, p3, acc));
return [...base, ...fill];
const basel = line(p1, p2, acc);
const baser = line(p1, p3, acc);
const fill = basel.flatMap((p, i) => line(p, baser[i], acc));
return [...basel, ...baser, ...fill];
}

function triangleVoxel(p1: Vec3, p2: Vec3, p3: Vec3): Space {
const base = lineVoxel(p1, p2);
const fill = base.flatMap((point) => lineVoxel(point, p3));
return [...base, ...fill];
return round_pos(triangle(p1, p2, p3, 1.2));
}

function turtle(actions: string) {
Expand Down
214 changes: 109 additions & 105 deletions webviewer/public/index.html
Original file line number Diff line number Diff line change
@@ -1,106 +1,110 @@
<html>

<head>
<meta charset="utf-8" />
<title>VoxelGeometry Viewer</title>
<style>
body {
margin: 0;
}
</style>
</head>

<body>
<script async src="https://unpkg.com/[email protected]/dist/es-module-shims.js"></script>
<script type="importmap">
{
"imports": {
"three": "/node_modules/three/build/three.module.js",
"three/addons/": "/node_modules/three/examples/jsm/"
}
}
</script>
<script type="module">
import * as THREE from "three";
import { OrbitControls } from "three/addons/controls/OrbitControls.js";

const createScene = () => {
let scene = new THREE.Scene();
scene.background = new THREE.Color(0xbfd1e5);
return scene;
};

let scene = createScene();

const createCamera = () => {
return new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
};

const camera = createCamera();

const createRenderer = () => {
const renderer = new THREE.WebGLRenderer({
antialias: true,
});
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
return renderer;
};

const renderer = createRenderer();

const createMaterial = () => {
const texture = new THREE.TextureLoader().load("./texture.png");
const material = new THREE.MeshBasicMaterial({
map: texture,
side: THREE.DoubleSide,
});
material.transparent = true;
texture.magFilter = THREE.NearestFilter;
return material;
};

const material = createMaterial();

const geometry = new THREE.BoxGeometry(1, 1, 1);

const createBlock = (x, y, z) => {
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
cube.position.x = x;
cube.position.y = y;
cube.position.z = z;
};

const clear = () => {
scene = createScene();
};

camera.position.z = 5;

const controls = new OrbitControls(camera, renderer.domElement);
controls.target.set(1, 1, 1);
controls.update();

(function animate() {
requestAnimationFrame(animate);
renderer.render(scene, camera);
})();

const ws = new WebSocket("ws://127.0.0.1:2333");

ws.onmessage = function (msg) {
const op = JSON.parse(msg.data);
if (op["op"] == "clear") {
clear();
} else {
for (let x of op["raw"]) {
createBlock(x[0], x[1], x[2]);
}
}
};
</script>
</body>

</html>
<head>
<meta charset="utf-8" />
<title>VoxelGeometry Viewer</title>
<style>
body {
margin: 0;
}
</style>
</head>

<body>
<script
async
src="https://unpkg.com/[email protected]/dist/es-module-shims.js"></script>
<script type="importmap">
{
"imports": {
"three": "/node_modules/three/build/three.module.js",
"three/addons/": "/node_modules/three/examples/jsm/"
}
}
</script>
<script type="module">
import * as THREE from 'three';
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';

const createScene = () => {
let scene = new THREE.Scene();
scene.background = new THREE.Color(0xbfd1e5);
return scene;
};

let scene = createScene();
const geometry = new THREE.BoxGeometry(1, 1, 1);

const createCamera = () => {
return new THREE.PerspectiveCamera(
75,
window.innerWidth / window.innerHeight,
0.1,
1000
);
};

const camera = createCamera();

const createRenderer = () => {
const renderer = new THREE.WebGLRenderer({
antialias: true
});
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
return renderer;
};

const renderer = createRenderer();

const createMaterial = () => {
const texture = new THREE.TextureLoader().load('./texture.png');
const material = new THREE.MeshBasicMaterial({
map: texture,
side: THREE.DoubleSide
});
material.transparent = true;
texture.magFilter = THREE.NearestFilter;
return material;
};

const material = createMaterial();

const createBlock = (x, y, z) => {
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
cube.position.x = x;
cube.position.y = y;
cube.position.z = z;
};

const clear = () => {
scene = createScene();
};

camera.position.z = 5;

const controls = new OrbitControls(camera, renderer.domElement);
controls.target.set(1, 1, 1);
controls.update();

(function animate() {
requestAnimationFrame(animate);
renderer.render(scene, camera);
})();

const ws = new WebSocket('ws://127.0.0.1:2333');

ws.onmessage = function (msg) {
const op = JSON.parse(msg.data);
if (op['op'] == 'clear') {
clear();
} else {
for (const x of op['raw']) {
createBlock(x[0], x[1], x[2]);
}
}
};
</script>
</body>
</html>

0 comments on commit 42650fd

Please sign in to comment.