less copy protection, more size visualization
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

215 lines
8.6 KiB

  1. const scenes = {};
  2. scenes["Default"] = () => {
  3. importScene({ "entities": [{ "name": "Fen", "scale": 1, "view": "back", "x": "0.5152113970588236", "y": "1" }], "world": { "height": 2.9053707516337908, "unit": "meters" } });
  4. fitWorld(true);
  5. }
  6. scenes["Demo"] = () => {
  7. importScene({"entities":[{"name":"Fen","scale":44.58712323880864,"view":"back","x":"0.3983191636029412","y":"1"},{"name":"Cars","scale":1,"view":"Toyota Prius C (Side)","x":"0.255755974264706","y":"1"},{"name":"Aircraft","scale":1,"view":"Cessena 172 (Side)","x":"0.2915096507352941","y":"0.23103070175438598"},{"name":"Buses","scale":1,"view":"City Bus (Front)","x":"0.2189338235294118","y":"1"},{"name":"Two-Story Home","scale":1,"view":"building","x":"0.6674977022058823","y":"1"},{"name":"Statue of Liberty","scale":1,"view":"building","x":"0.8289636948529412","y":"1"},{"name":"Street Lamps","scale":1,"view":"freeway","x":"0.18566176470588233","y":"1"},{"name":"Human","scale":1,"view":"man1","x":"0.5784696691176471","y":"1"},{"name":"Human","scale":1,"view":"woman1","x":"0.4","y":"1"},{"name":"Bus Stop","scale":1,"view":"building","x":"0.19779411764705887","y":"1"}],"world":{"height":110.00000000000011,"unit":"meters"},"canvasWidth":1360})
  8. fitWorld(true);
  9. }
  10. scenes["Military"] = () => {
  11. removeAllEntities();
  12. let entity = availableEntitiesByName["Asana (Mech)"].constructor();
  13. displayEntity(entity, entity.defaultView, 0, 1);
  14. entity = availableEntitiesByName["Napalm"].constructor();
  15. displayEntity(entity, entity.defaultView, 0, 1);
  16. entity = availableEntitiesByName["Chez"].constructor();
  17. displayEntity(entity, entity.defaultView, 0, 1);
  18. entity = availableEntitiesByName["Leopard 2 Rev. 1"].constructor();
  19. displayEntity(entity, entity.defaultView, 0, 1);
  20. entity = availableEntitiesByName["Asana"].constructor();
  21. displayEntity(entity, entity.defaultView, 0, 1);
  22. entity = availableEntitiesByName["Ashtrek"].constructor();
  23. entity.views[entity.view].height = entity.sizes[0].height;
  24. displayEntity(entity, entity.defaultView, 0, 1);
  25. arrangeEntities(getSortedEntities());
  26. fitWorld(true);
  27. }
  28. function makeSlice(min, max) {
  29. return () => {
  30. const characters = availableEntities["characters"].filter(x => {
  31. const entity = x.constructor();
  32. return math.compare(entity.views[entity.view].height, min) == 1 && math.compare(entity.views[entity.view].height, max) != 1
  33. });
  34. characters.forEach(character => {
  35. const entity = character.constructor();
  36. displayEntity(entity, entity.view, 0, 1);
  37. });
  38. arrangeEntities(getSortedEntities());
  39. fitWorld(true);
  40. }
  41. }
  42. scenes["<10m"] = makeSlice(math.unit(0, "meters"), math.unit(10, "meters"));
  43. scenes["10m-100m"] = makeSlice(math.unit(10, "meters"), math.unit(100, "meters"));
  44. scenes["100m-1km"] = makeSlice(math.unit(100, "meters"), math.unit(1000, "meters"));
  45. scenes["1km-10km"] = makeSlice(math.unit(1000, "meters"), math.unit(10000, "meters"));
  46. scenes["10km-100km"] = makeSlice(math.unit(10000, "meters"), math.unit(100000, "meters"));
  47. scenes["100km-1000km"] = makeSlice(math.unit(100000, "meters"), math.unit(1000000, "meters"));
  48. scenes["Everyone"] = () => {
  49. config.height = math.unit(11, "meters");
  50. let entities = availableEntities.characters.map(maker => {
  51. return maker.constructor();
  52. })
  53. if (confirm("This scene will load " + entities.length + " entities -- are you sure?")) {
  54. entities.reduce((counter, entity) => {
  55. entity.views[entity.view].height = math.unit(1, "meter");
  56. const count = availableEntities.characters.length;
  57. const x = 0.05 + math.floor(counter / 10) / math.ceil(count / 10);
  58. const y = (counter % 10) / 10 + 0.1;
  59. displayEntity(entity, entity.view, x, y);
  60. return counter + 1;
  61. }, 0);
  62. updateSizes(true);
  63. }
  64. }
  65. scenes["EVERYTHING"] = () => {
  66. config.height = math.unit(11, "meters");
  67. let entities = Object.values(availableEntitiesByName).map(maker => {
  68. return maker.constructor();
  69. })
  70. if (confirm("This scene will load " + entities.length + " entities -- are you sure?")) {
  71. entities.reduce((counter, entity) => {
  72. entity.views[entity.view].height = math.unit(1, "meter");
  73. const count = Object.values(availableEntitiesByName).length;
  74. const x = 0.05 + math.floor(counter / 10) / math.ceil(count / 10);
  75. const y = (counter % 10) / 10 + 0.1;
  76. displayEntity(entity, entity.view, x, y);
  77. return counter + 1;
  78. }, 0);
  79. updateSizes(true);
  80. }
  81. }
  82. scenes["EVERY VIEW AAAAA"] = () => {
  83. config.height = math.unit(11, "meters");
  84. let entities = Object.values(availableEntitiesByName).map(maker => {
  85. return maker.constructor();
  86. }).flatMap(entity => {
  87. return Object.keys(entity.views).map(view => {
  88. const newEntity = availableEntitiesByName[entity.identifier].constructor();
  89. newEntity.view = view;
  90. return newEntity;
  91. });
  92. })
  93. if (confirm("This scene will load " + entities.length + " entities -- are you sure?")) {
  94. entities.reduce((counter, entity) => {
  95. entity.views[entity.view].height = math.unit(1, "meter");
  96. const count = Object.values(availableEntitiesByName).length;
  97. const x = 0.05 + math.floor(counter / 10) / math.ceil(count / 10);
  98. const y = (counter % 10) / 10 + 0.1;
  99. displayEntity(entity, entity.view, x, y);
  100. return counter + 1;
  101. }, 0);
  102. updateSizes(true);
  103. }
  104. }
  105. function makeOwnerScene(owners) {
  106. return () => {
  107. owners.flatMap(owner => {
  108. return availableEntities["characters"].filter(x => {
  109. const entity = x.constructor();
  110. const owners = ownersOf(entity.views[entity.view].image.source);
  111. if (owners)
  112. return owners.indexOf(owner) != -1;
  113. else
  114. return false;
  115. })
  116. }).map(maker => {
  117. return maker.constructor();
  118. }).sort((e1, e2) => {
  119. return e1.views[e1.view].height.toNumber() - e2.views[e2.view].height.toNumber()
  120. }).forEach(entity => {
  121. console.log(entity)
  122. displayEntity(entity, entity.view, 0, 1);
  123. });
  124. arrangeEntities(getSortedEntities());
  125. fitWorld(true);
  126. }
  127. }
  128. function makeOwnerSceneViews(owners) {
  129. return () => {
  130. owners.flatMap(owner => {
  131. return availableEntities["characters"].filter(x => {
  132. const entity = x.constructor();
  133. const owners = ownersOf(entity.views[entity.view].image.source);
  134. if (owners)
  135. return owners.indexOf(owner) != -1;
  136. else
  137. return false;
  138. })
  139. }).map(maker => {
  140. return maker.constructor();
  141. }).flatMap(entity => {
  142. return Object.keys(entity.views).map(view => {
  143. const newEnt = availableEntitiesByName[entity.identifier].constructor();
  144. newEnt.view = view;
  145. return newEnt;
  146. });
  147. }).sort((e1, e2) => {
  148. return e1.views[e1.view].height.toNumber() - e2.views[e2.view].height.toNumber()
  149. }).forEach(entity => {
  150. console.log(entity)
  151. displayEntity(entity, entity.view, 0, 1);
  152. });
  153. arrangeEntities(getSortedEntities());
  154. fitWorld(true);
  155. }
  156. }
  157. scenes["Kurri"] = makeOwnerScene(["kurrikage"]);
  158. scenes["Neopuc"] = () => {
  159. availableEntities["characters"].filter(x => {
  160. const entity = x.constructor();
  161. const owners = ownersOf(entity.views[entity.view].image.source);
  162. if (owners)
  163. return owners.indexOf("neopuc") != -1;
  164. else
  165. return false;
  166. }).map(maker => {
  167. return maker.constructor();
  168. }).sort((e1, e2) => {
  169. return e1.sizes[e1.sizes.length - 1].height.toNumber() - e2.sizes[e2.sizes.length - 1].height.toNumber()
  170. }).reduce((size, entity) => {
  171. entity.views[entity.view].height = math.unit(100 * Math.sqrt(size) * (entity.name == "Ilisha Devya" ? 2 : 1), "meters");
  172. displayEntity(entity, entity.view, 0, 1);
  173. return size + 1;
  174. }, 1)
  175. arrangeEntities(getSortedEntities());
  176. fitWorld(true);
  177. }
  178. scenes["Fidverse"] = () => {
  179. makeOwnerSceneViews(["fidchell", "cam"])();
  180. document.querySelector("#entity-" + (entityIndex - 1)).dataset.x = 0.5;
  181. document.querySelector("#entity-" + (entityIndex - 2)).dataset.x = 0.25;
  182. document.querySelector("#entity-" + (entityIndex - 3)).dataset.x = 0.75;
  183. updateSizes();
  184. fitWorld(true, 1);
  185. }