|
@@ -55,6 +55,18 @@
|
|
<script src="add/addMarblePT.js"></script>
|
|
<script src="add/addMarblePT.js"></script>
|
|
<script src="add/addStarfieldPT.js"></script>
|
|
<script src="add/addStarfieldPT.js"></script>
|
|
<script>
|
|
<script>
|
|
|
|
+
|
|
|
|
+ dat.GUI.prototype.removeFolder = function(name) {
|
|
|
|
+ var folder = this.__folders[name];
|
|
|
|
+ if (!folder) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ folder.close();
|
|
|
|
+ this.__ul.removeChild(folder.domElement.parentNode);
|
|
|
|
+ delete this.__folders[name];
|
|
|
|
+ this.onResize();
|
|
|
|
+ }
|
|
|
|
+
|
|
if (BABYLON.Engine.isSupported()) {
|
|
if (BABYLON.Engine.isSupported()) {
|
|
var canvas = document.getElementById("renderCanvas");
|
|
var canvas = document.getElementById("renderCanvas");
|
|
var engine = new BABYLON.Engine(canvas, true);
|
|
var engine = new BABYLON.Engine(canvas, true);
|
|
@@ -195,32 +207,93 @@
|
|
sphere.material = std;
|
|
sphere.material = std;
|
|
sphere.receiveShadows = true;
|
|
sphere.receiveShadows = true;
|
|
std.diffuseTexture = currentTexture;
|
|
std.diffuseTexture = currentTexture;
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+ //placeholder for current texture options
|
|
|
|
+ var currentPTOptions = gui.addFolder('Texture Options');
|
|
|
|
+ var PTOptions = [];
|
|
|
|
+ var resetPTOptions = function(){
|
|
|
|
+ //empty options
|
|
|
|
+ while(PTOptions.length > 0){
|
|
|
|
+ currentPTOptions.remove(PTOptions.pop());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var addPToptions = function(pt, fieldNames){
|
|
|
|
+ for(var fieldid = 0; fieldid < fieldNames.length; fieldid++){
|
|
|
|
+ var field = fieldNames[fieldid]
|
|
|
|
+ var added;
|
|
|
|
+ if(typeof pt[field] != 'object' && pt[field] != 'undefined') {
|
|
|
|
+ added = currentPTOptions.add(pt, fieldNames[fieldid]);
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ var proxy = {};
|
|
|
|
+
|
|
|
|
+ if(pt[field] instanceof BABYLON.Vector2){
|
|
|
|
+ proxy[field] = 'new BABYLON.Vector2(0.5, 0.5)';
|
|
|
|
+ }
|
|
|
|
+ else if(pt[field] instanceof BABYLON.Vector3){
|
|
|
|
+ proxy[field] = 'new BABYLON.Vector3(0.5, 0.5, 0.5)';
|
|
|
|
+ }
|
|
|
|
+ else if(pt[field] instanceof BABYLON.Vector4){
|
|
|
|
+ proxy[field] = 'new BABYLON.Vector4(0.5, 0.5, 0.5, 0.5)';
|
|
|
|
+ }
|
|
|
|
+ else if(pt[field] instanceof BABYLON.Color3){
|
|
|
|
+ proxy[field] = 'new BABYLON.Color3(0.5, 0.5, 0.5)';
|
|
|
|
+ }
|
|
|
|
+ else if(pt[field] instanceof BABYLON.Color4){
|
|
|
|
+ proxy[field] = 'new BABYLON.Color4(0.5, 0.5, 0.5, 0.5)';
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ proxy[field] = 'Object (' + pt[field].constructor.name +')';
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ added = currentPTOptions.add(proxy, field).onChange(function () {
|
|
|
|
+ try {
|
|
|
|
+ var res = eval(proxy[field]);
|
|
|
|
+ pt[field] = res;
|
|
|
|
+ } catch (e) {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ PTOptions.push(added);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
gui.add(options, 'texture', ['default', 'fire', 'wood', 'cloud', 'grass', 'road', 'brick', 'marble', 'starfield']).onFinishChange(function () {
|
|
gui.add(options, 'texture', ['default', 'fire', 'wood', 'cloud', 'grass', 'road', 'brick', 'marble', 'starfield']).onFinishChange(function () {
|
|
|
|
+ resetPTOptions();
|
|
switch (options.texture) {
|
|
switch (options.texture) {
|
|
case "fire":
|
|
case "fire":
|
|
currentTexture = firePT;
|
|
currentTexture = firePT;
|
|
|
|
+ addPToptions(firePT, ['time', 'alphaThreshold', 'speed', ]);
|
|
break;
|
|
break;
|
|
case "wood":
|
|
case "wood":
|
|
currentTexture = woodPT;
|
|
currentTexture = woodPT;
|
|
|
|
+ addPToptions(woodPT, ['ampScale', 'woodColor']);
|
|
break;
|
|
break;
|
|
case "cloud":
|
|
case "cloud":
|
|
currentTexture = cloudPT;
|
|
currentTexture = cloudPT;
|
|
|
|
+ addPToptions(cloudPT, ['skyColor', 'cloudColor']);
|
|
break;
|
|
break;
|
|
case "grass":
|
|
case "grass":
|
|
currentTexture = grassPT;
|
|
currentTexture = grassPT;
|
|
|
|
+ addPToptions(grassPT, ['groundColor']);
|
|
break;
|
|
break;
|
|
case "road":
|
|
case "road":
|
|
currentTexture = roadPT;
|
|
currentTexture = roadPT;
|
|
|
|
+ addPToptions(roadPT, ['roadColor']);
|
|
break;
|
|
break;
|
|
case "brick":
|
|
case "brick":
|
|
currentTexture = brickPT;
|
|
currentTexture = brickPT;
|
|
|
|
+ addPToptions(brickPT, ['numberOfBricksHeight', 'numberOfBricksWidth', 'brickColor', 'jointColor']);
|
|
break;
|
|
break;
|
|
case "marble":
|
|
case "marble":
|
|
currentTexture = marblePT;
|
|
currentTexture = marblePT;
|
|
|
|
+ addPToptions(marblePT, ['numberOfTilesHeight', 'numberOfTilesWidth', 'amplitude', 'marbleColor', 'jointColor']);
|
|
break;
|
|
break;
|
|
case "starfield":
|
|
case "starfield":
|
|
currentTexture = starfieldPT;
|
|
currentTexture = starfieldPT;
|
|
|
|
+ addPToptions(starfieldPT, ['saturation', 'distfading', 'darkmatter', 'alpha', 'time', 'beta', 'zoom', 'formuparam', 'stepsize', 'tile', 'brightness']);
|
|
break;
|
|
break;
|
|
case "none":
|
|
case "none":
|
|
default:
|
|
default:
|