guiNodeTools.ts 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import { Button } from "babylonjs-gui/2D/controls/button";
  2. import { Checkbox } from "babylonjs-gui/2D/controls/checkbox";
  3. import { ColorPicker } from "babylonjs-gui/2D/controls/colorpicker";
  4. import { Ellipse } from "babylonjs-gui/2D/controls/ellipse";
  5. import { Line } from "babylonjs-gui/2D/controls/line";
  6. import { Rectangle } from "babylonjs-gui/2D/controls/rectangle";
  7. import { Slider } from "babylonjs-gui/2D/controls/sliders/slider";
  8. import { TextBlock } from "babylonjs-gui/2D/controls/textBlock";
  9. import { VirtualKeyboard } from "babylonjs-gui/2D/controls/virtualKeyboard";
  10. import { Image } from "babylonjs-gui/2D/controls/image"
  11. import { InputText } from "babylonjs-gui/2D/controls/inputText";
  12. import { InputPassword } from "babylonjs-gui/2D/controls/inputPassword";
  13. import { Grid } from "babylonjs-gui/2D/controls/grid";
  14. import { DisplayGrid } from "babylonjs-gui/2D/controls/displayGrid";
  15. export class GUINodeTools {
  16. public static CreateControlFromString (data: string) {
  17. //TODO: Add more elements and create default values for certain types.
  18. let element;
  19. switch (data) {
  20. case "Slider":
  21. element = new Slider("Slider");
  22. break;
  23. case "Checkbox":
  24. element = new Checkbox("Checkbox");
  25. break;
  26. case "ColorPicker":
  27. element = new ColorPicker("ColorPicker");
  28. break;
  29. case "Ellipse":
  30. element = new Ellipse("Ellipse");
  31. break;
  32. case "Rectangle":
  33. element = new Rectangle("Rectangle");
  34. break;
  35. case "Line":
  36. element = new Line();
  37. element.x1 = 10;
  38. element.y1 = 10;
  39. element.x2 = 100;
  40. element.y2 = 100;
  41. element.lineWidth = 5;
  42. element.dash = [50, 10];
  43. return element;
  44. case "Text":
  45. element = new TextBlock("Textblock");
  46. element.text = "My Text";
  47. return element;
  48. case "ImageButton":
  49. element = Button.CreateImageButton("Button", "Click Me", "textures/grass.png");
  50. break;
  51. case "VirtualKeyboard":
  52. element = new VirtualKeyboard();
  53. element.addKeysRow(["1","2", "3","\u2190"]);
  54. break;
  55. case "Image":
  56. element = new Image("Image", "https://i.imgur.com/ntIgFT6.jpg");
  57. break;
  58. case "InputText":
  59. element = new InputText();
  60. element.maxWidth = 0.6;
  61. element.text = "Click Me";
  62. break;
  63. case "InputPassword":
  64. element = new InputPassword();
  65. break;
  66. case "Grid":
  67. element = new Grid();
  68. element.addColumnDefinition(100, true);
  69. element.addColumnDefinition(0.5);
  70. element.addColumnDefinition(0.5);
  71. element.addColumnDefinition(100, true);
  72. element.addRowDefinition(0.5);
  73. element.addRowDefinition(0.5);
  74. return element;
  75. case "DisplayGrid":
  76. element = new DisplayGrid();
  77. element.width = "200px";
  78. element.height = "200px";
  79. return element;
  80. default:
  81. element = Button.CreateSimpleButton("Button", "Click Me");
  82. break;
  83. }
  84. element.width = "150px";
  85. element.height = "40px";
  86. element.color = "#FFFFFFFF";
  87. element.isPointerBlocker = true;
  88. return element;
  89. }
  90. }