Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
/*-- ------------------------------------------------------------ ###################################################################### #Copyright (C) 2020 Kris Occhipinti #https://filmsbykris.com #This program is free software: you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation, either version 3 of the License, or #(at your option) any later version. #This program is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with this program. If not, see
. ###################################################################### */ var camera, scene, renderer, controls, raycaster; var keyboard = new KeyboardState(); var clock = new THREE.Clock(); var clockD; var player_configs = []; var players = []; init(); animate(); function init() { scene = new THREE.Scene(); createRenderer(); createCamera(); player_configs.push({ speed : 5, keyleft : "A", keyright : "D", keyback : "S", keyforward : "W" }); player_configs.push({ speed : 5, keyright : "J", keyleft : "G", keyback : "H", keyforward : "Y" }); players.push(createCube(1)); players.push(createCube(1)); players[1].position.x = 4; for(var i in players){ for ( var p in player_configs[i] ){ players[i][p] = player_configs[i][p]; players[i].update = player_update; }; }; floor = createPlane(); floor.rotation.x = Math.PI /2;//rotate 90 degrees floor.position.y = -.5; light = createLights(); window.addEventListener( 'resize', onWindowResize, false ); } function onWindowResize() { camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); renderer.setSize( window.innerWidth, window.innerHeight ); } function animate() { requestAnimationFrame( animate ); renderer.render( scene, camera ); clockD = clock.getDelta(); //uncoment to have camera look at player //controls.target = player.position; controls.update(); for(var i in players){ players[i].update(); } //TWEEN.update(); } function player_update(){ keyboard.update(); var moveDistance = this.speed * clockD; if ( keyboard.pressed(this.keyleft) ) this.rotateY( moveDistance ); if ( keyboard.pressed(this.keyright) ) this.rotateY( -moveDistance ); if ( keyboard.pressed(this.keyforward) ) this.translateZ( -moveDistance ); if ( keyboard.pressed(this.keyback) ) this.translateZ( moveDistance ); } function createCamera(){ camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 1, 5000 ); camera.position.z = 5; camera.position.y = 4; camera.lookAt(scene.position); //addcontrols controls = new THREE.OrbitControls( camera, renderer.domElement ); } function createRenderer(){ renderer = new THREE.WebGLRenderer( { antialias: true,alpha: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); } function createCube(size){ var geometry = new THREE.BoxGeometry( size, size, size ); var material = new THREE.MeshLambertMaterial( { color: Math.random() * 0xffffff } ); var cube = new THREE.Mesh( geometry, material ); cube.position.set( 0, 0, 0 ); scene.add(cube); cube.update = player_update; return cube; } function createLights(){ //set to true to view light positions var helpers = false; light1 = new THREE.DirectionalLight( 0xffffff, 1 ); light1.position.set( 5, 5, 10 ).normalize(); scene.add( light1 ); //Add helper to view light position if(helpers){ light1.helper = new THREE.DirectionalLightHelper( light1, 50 ); scene.add( light1.helper); } light2 = new THREE.DirectionalLight( 0xffffff, 1 ); light2.position.set(-1,-1,-5).normalize(); scene.add( light2 ); //Add helper to view light position if(helpers){ light2.helper = new THREE.DirectionalLightHelper( light2, 50 ); scene.add( light2.helper); } return true; } function createPlane(){ //PlaneGeometry(width : Float, height : Float, widthSegments : Integer, heightSegments : Integer) var geometry = new THREE.PlaneGeometry( 20, 20, 32 ); var material = new THREE.MeshBasicMaterial( {color: 0xffff00, side: THREE.DoubleSide} ); var plane = new THREE.Mesh( geometry, material ); scene.add( plane ); return plane; }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)