appui.js 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. function createApp(){
  2. let self = this
  3. function makeSetter(val){
  4. let setstr = 'this.'+val+ '= value; this.redrawEvent();'
  5. return setstr
  6. }
  7. function getNewPosition() {
  8. //let allChild = vwf.find("","/*")
  9. let cursorVisID = vwf.find("myCursor-avatar-" + vwf.moniker_,"./vis")[0]
  10. let avPos = AFRAME.utils.coordinates.parse(vwf.getProperty(cursorVisID, 'worldPosition'));
  11. let newPos = [avPos.x, avPos.y, avPos.z]
  12. return newPos
  13. }
  14. return {
  15. $cell: true,
  16. $type: "div",
  17. class: "propGrid max-width mdc-layout-grid mdc-layout-grid--align-left",
  18. $components: [
  19. {
  20. $cell: true,
  21. $type: "div",
  22. class: "mdc-layout-grid__inner",
  23. $components: [
  24. {
  25. $cell: true,
  26. $type: "div",
  27. class: "mdc-layout-grid__cell mdc-layout-grid__cell--span-12",
  28. $components: [
  29. // {
  30. // $cell: true,
  31. // $type: "button",
  32. // class: "mdc-button mdc-button--raised",
  33. // $text: "Draw L-System",
  34. // onclick: function (e) {
  35. // let sceneID = vwf.find("","/")[0];
  36. // vwf_view.kernel.callMethod(sceneID, "drawLSys1");
  37. // }
  38. // },
  39. {
  40. $cell: true,
  41. $type: "button",
  42. class: "mdc-button mdc-button--raised",
  43. $text: "Create new turtle",
  44. onclick: function (e) {
  45. let sceneID = vwf.find("","/")[0];
  46. let turtleID = vwf.find("","/turtle")[0];
  47. let params = {
  48. "angle": 60,
  49. "iteration": 3,
  50. "stepLength": 0.3,
  51. "rule": 'F++F++F',
  52. "axiomF": 'F-F++F-F',
  53. "axiomG": ''
  54. }
  55. console.log("create new turtle");
  56. //let newTurtle = vwf.getNode(turtleID, true);
  57. // let newTurtle = self.removeProps(node);
  58. let newTurtle = self.getNodeDef(turtleID);
  59. // newTurtle.children.drawNode = {
  60. // "extends": "http://vwf.example.com/aframe/aentity.vwf"
  61. // }
  62. newTurtle.events.redrawEvent = {}
  63. let props = ["angle", "iteration", "stepLength", "rule", "axiomF", "axiomG"]
  64. props.forEach(el =>{
  65. newTurtle.properties[el] = {
  66. "value": params[el],
  67. "set": makeSetter(el)
  68. }
  69. })
  70. newTurtle.properties.position = getNewPosition();
  71. newTurtle.properties.ready = false;
  72. let randomName = "turtle-new-" + self.GUID();
  73. vwf_view.kernel.createChild(sceneID, randomName, newTurtle);
  74. }
  75. }
  76. ]
  77. },
  78. {
  79. $cell: true,
  80. $type: "div",
  81. class: "mdc-layout-grid__cell mdc-layout-grid__cell--span-6",
  82. $components: [
  83. {
  84. $type: "img",
  85. src: "./lsys/Koch.jpg",
  86. class: "mdc-elevation--z2",
  87. style: "width: 150px",
  88. onclick: function(evt){
  89. let turtleID = vwf.find("","/turtle")[0];
  90. let params = {
  91. "angle": 60,
  92. "iteration": 3,
  93. "stepLength": 0.3,
  94. "rule": 'F++F++F',
  95. "axiomF": 'F-F++F-F',
  96. "axiomG": ''
  97. }
  98. vwf_view.kernel.callMethod(turtleID, 'setTurtleParams', [Object.entries(params)])
  99. }
  100. }
  101. ]
  102. },
  103. {
  104. $cell: true,
  105. $type: "div",
  106. class: "mdc-layout-grid__cell mdc-layout-grid__cell--span-6",
  107. $components: [
  108. {
  109. $type: "img",
  110. src: "./lsys/dragon.jpg",
  111. class: "mdc-elevation--z2",
  112. style: "width: 150px",
  113. onclick: function(evt){
  114. let turtleID = vwf.find("","/turtle")[0];
  115. let params = {
  116. "angle": 90,
  117. "iteration": 10,
  118. "stepLength": 0.3,
  119. "rule": 'F',
  120. "axiomF": 'F+G+',
  121. "axiomG": '-F-G'
  122. }
  123. vwf_view.kernel.callMethod(turtleID, 'setTurtleParams', [Object.entries(params)])
  124. }
  125. }
  126. ]
  127. },
  128. {
  129. $cell: true,
  130. $type: "div",
  131. class: "mdc-layout-grid__cell mdc-layout-grid__cell--span-6",
  132. $components: [
  133. {
  134. $type: "img",
  135. src: "./lsys/SierpinskiCurve.jpg",
  136. class: "mdc-elevation--z2",
  137. style: "width: 150px",
  138. onclick: function(evt){
  139. let turtleID = vwf.find("","/turtle")[0];
  140. let params = {
  141. "angle": 60,
  142. "iteration": 5,
  143. "stepLength": 0.3,
  144. "rule": 'F',
  145. "axiomF": 'G-F-G',
  146. "axiomG": 'F+G+F'
  147. }
  148. vwf_view.kernel.callMethod(turtleID, 'setTurtleParams', [Object.entries(params)])
  149. }
  150. }
  151. ]
  152. },
  153. {
  154. $cell: true,
  155. $type: "div",
  156. class: "mdc-layout-grid__cell mdc-layout-grid__cell--span-6",
  157. $components: [
  158. {
  159. $type: "img",
  160. src: "./lsys/SierpinskiTriangle.jpg",
  161. class: "mdc-elevation--z2",
  162. style: "width: 150px",
  163. onclick: function(evt){
  164. let turtleID = vwf.find("","/turtle")[0];
  165. let params = {
  166. "angle": 120,
  167. "iteration": 5,
  168. "stepLength": 0.3,
  169. "rule": 'F--F--F',
  170. "axiomF": 'F--F--F--G',
  171. "axiomG": 'GG'
  172. }
  173. vwf_view.kernel.callMethod(turtleID, 'setTurtleParams', [Object.entries(params)])
  174. }
  175. }
  176. ]
  177. }
  178. ]
  179. }
  180. ]
  181. }
  182. }