index.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. ascii: false
  14. }
  15. var registeredUIs = {};
  16. var textureui;
  17. window.registerColorPicker = function(texture, name, color, onChange, onSet) {
  18. if (!registeredUIs[texture]) {
  19. registeredUIs[texture] = [];
  20. }
  21. registeredUIs[texture].push({
  22. name: name,
  23. color: "#ff0000",
  24. onChange: onChange,
  25. onSet: onSet
  26. });
  27. };
  28. window.registerRangeUI = function(texture, name, minValue, maxValue, onChange, onSet) {
  29. if (!registeredUIs[texture]) {
  30. registeredUIs[texture] = [];
  31. }
  32. registeredUIs[texture].push({
  33. name: name,
  34. minValue: minValue,
  35. maxValue: maxValue,
  36. onChange: onChange,
  37. onSet: onSet
  38. });
  39. }
  40. var setUi = function(ui) {
  41. options[ui.name] = ui.onSet();
  42. if (ui.color) {
  43. textureui.addColor(options, ui.name).onChange(function(value) {
  44. ui.onChange(value);
  45. });
  46. } else {
  47. textureui.add(options, ui.name, ui.minValue, ui.maxValue).onChange(function(value) {
  48. ui.onChange(value);
  49. });
  50. }
  51. }
  52. window.enableTexture = function(texture) {
  53. if (textureui) {
  54. textureui.domElement.parentElement.removeChild(textureui.domElement);
  55. textureui = null;
  56. }
  57. if (registeredUIs[texture]) {
  58. textureui = new dat.GUI();
  59. for (var index = 0; index < registeredUIs[texture].length; index++) {
  60. var ui = registeredUIs[texture][index];
  61. setUi(ui);
  62. }
  63. }
  64. }