index.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. //UI
  2. var gui = new dat.GUI();
  3. var options = {
  4. texture: "standard",
  5. mesh: "sphere",
  6. hemisphericLight: true,
  7. pointLight: false,
  8. directionalLight: false,
  9. castShadows: false,
  10. spotLight: false,
  11. fog: false,
  12. skybox: false
  13. }
  14. var registeredUIs = {};
  15. var textureui;
  16. window.registerColorPicker = function(texture, name, color, onChange, onSet) {
  17. if (!registeredUIs[texture]) {
  18. registeredUIs[texture] = [];
  19. }
  20. registeredUIs[texture].push({
  21. name: name,
  22. color: "#ff0000",
  23. onChange: onChange,
  24. onSet: onSet
  25. });
  26. };
  27. window.registerRangeUI = function(texture, name, minValue, maxValue, onChange, onSet) {
  28. if (!registeredUIs[texture]) {
  29. registeredUIs[texture] = [];
  30. }
  31. registeredUIs[texture].push({
  32. name: name,
  33. minValue: minValue,
  34. maxValue: maxValue,
  35. onChange: onChange,
  36. onSet: onSet
  37. });
  38. }
  39. var setUi = function(ui) {
  40. options[ui.name] = ui.onSet();
  41. if (ui.color) {
  42. textureui.addColor(options, ui.name).onChange(function(value) {
  43. ui.onChange(value);
  44. });
  45. } else {
  46. textureui.add(options, ui.name, ui.minValue, ui.maxValue).onChange(function(value) {
  47. ui.onChange(value);
  48. });
  49. }
  50. }
  51. window.enableTexture = function(texture) {
  52. if (textureui) {
  53. textureui.domElement.parentElement.removeChild(textureui.domElement);
  54. textureui = null;
  55. }
  56. if (registeredUIs[texture]) {
  57. textureui = new dat.GUI();
  58. for (var index = 0; index < registeredUIs[texture].length; index++) {
  59. var ui = registeredUIs[texture][index];
  60. setUi(ui);
  61. }
  62. }
  63. }