mirror of
https://github.com/LBRYFoundation/lbry-desktop.git
synced 2025-08-29 00:11:28 +00:00
57 lines
1.5 KiB
JavaScript
57 lines
1.5 KiB
JavaScript
import * as THREE from './three';
|
|
|
|
const addGrid = (scene, { gridColor, centerLineColor, size }) => {
|
|
const divisions = size / 2;
|
|
const grid = new THREE.GridHelper(
|
|
size,
|
|
divisions,
|
|
new THREE.Color(centerLineColor),
|
|
new THREE.Color(gridColor)
|
|
);
|
|
grid.material.opacity = 0.4;
|
|
grid.material.transparent = true;
|
|
scene.add(grid);
|
|
};
|
|
|
|
const addLights = (scene, color, groundColor) => {
|
|
// Light color
|
|
const lightColor = new THREE.Color(color);
|
|
// Main light
|
|
const light = new THREE.HemisphereLight(lightColor, groundColor, 0.4);
|
|
// Shadow light
|
|
const shadowLight = new THREE.DirectionalLight(lightColor, 0.4);
|
|
shadowLight.position.set(100, 50, 100);
|
|
// Back light
|
|
const backLight = new THREE.DirectionalLight(lightColor, 0.6);
|
|
backLight.position.set(-100, 200, 50);
|
|
// Add lights to scene
|
|
scene.add(backLight);
|
|
scene.add(light);
|
|
scene.add(shadowLight);
|
|
};
|
|
|
|
const Scene = ({ backgroundColor, groundColor, showFog, showGrid, gridColor, centerLineColor }) => {
|
|
// Convert color
|
|
const bgColor = new THREE.Color(backgroundColor);
|
|
// New scene
|
|
const scene = new THREE.Scene();
|
|
// Background color
|
|
scene.background = bgColor;
|
|
// Fog effect
|
|
scene.fog = showFog === true ? new THREE.Fog(bgColor, 1, 95) : null;
|
|
// Add grid
|
|
if (showGrid) {
|
|
addGrid(scene, {
|
|
size: 100,
|
|
gridColor,
|
|
centerLineColor,
|
|
});
|
|
}
|
|
// Add basic lights
|
|
addLights(scene, '#FFFFFF', groundColor);
|
|
|
|
// Return new three scene
|
|
return scene;
|
|
};
|
|
|
|
export default Scene;
|