less copy protection, more size visualization
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

200 line
8.3 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": 13.37613697164259, "view": "back", "x": "0.4739888072901602", "y": "1" }, { "name": "Cars", "scale": 1, "view": "Toyota Prius C (Side)", "x": "0.5446325587240624", "y": "1" }, { "name": "Flagpole", "scale": 1, "view": "medium", "x": "0.6884494749664603", "y": "1" }, { "name": "Aircraft", "scale": 1, "view": "Cessena 172 (Side)", "x": "0.5554263161666061", "y": "0.22135128477620036" }, { "name": "Bus", "scale": 1, "view": "side", "x": "0.3384726446176792", "y": "1" }, { "name": "Leopard 2 Rev. 1", "scale": 1, "view": "side", "x": "0.6168929701770606", "y": "1" }, { "name": "Trees", "scale": 1, "view": "sycamore", "x": "0.19678198200160846", "y": "1" }, { "name": "18-Wheeler", "scale": 1, "view": "side", "x": "0.7563502890715608", "y": "1" }, { "name": "Cars", "scale": 1, "view": "Toyota Prius C (Top)", "x": "0.5363900938385269", "y": "0.7215473541048467" }, { "name": "Human", "scale": 1, "view": "woman1", "x": "0.4756975717747481", "y": "1" }, { "name": "Human", "scale": 1, "view": "man1", "x": "0.47400075247875356", "y": "0.2538019287833828" }], "world": { "height": 38.5, "unit": "meters" } })
  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. availableEntities.characters.map(maker => {
  51. return maker.constructor();
  52. }).reduce((counter, entity) => {
  53. entity.views[entity.view].height = math.unit(1, "meter");
  54. const count = availableEntities.characters.length;
  55. const x = 0.05 + math.floor(counter / 10) / math.ceil(count / 10);
  56. const y = (counter % 10) / 10 + 0.1;
  57. displayEntity(entity, entity.view, x, y);
  58. return counter + 1;
  59. }, 0);
  60. updateSizes(true);
  61. }
  62. scenes["EVERYTHING"] = () => {
  63. config.height = math.unit(11, "meters");
  64. Object.values(availableEntitiesByName).map(maker => {
  65. return maker.constructor();
  66. }).reduce((counter, entity) => {
  67. entity.views[entity.view].height = math.unit(1, "meter");
  68. const count = Object.values(availableEntitiesByName).length;
  69. const x = 0.05 + math.floor(counter / 10) / math.ceil(count / 10);
  70. const y = (counter % 10) / 10 + 0.1;
  71. displayEntity(entity, entity.view, x, y);
  72. return counter + 1;
  73. }, 0);
  74. updateSizes(true);
  75. }
  76. scenes["EVERY VIEW AAAAA"] = () => {
  77. config.height = math.unit(11, "meters");
  78. Object.values(availableEntitiesByName).map(maker => {
  79. return maker.constructor();
  80. }).flatMap(entity => {
  81. return Object.keys(entity.views).map(view => {
  82. const newEntity = availableEntitiesByName[entity.identifier].constructor();
  83. newEntity.view = view;
  84. return newEntity;
  85. });
  86. }).reduce((counter, entity) => {
  87. entity.views[entity.view].height = math.unit(1, "meter");
  88. const count = Object.values(availableEntitiesByName).length;
  89. const x = 0.05 + math.floor(counter / 10) / math.ceil(count / 10);
  90. const y = (counter % 10) / 10 + 0.1;
  91. displayEntity(entity, entity.view, x, y);
  92. return counter + 1;
  93. }, 0);
  94. updateSizes(true);
  95. }
  96. function makeOwnerScene(owners) {
  97. return () => {
  98. owners.flatMap(owner => {
  99. return availableEntities["characters"].filter(x => {
  100. const entity = x.constructor();
  101. const owners = ownersOf(entity.views[entity.view].image.source);
  102. if (owners)
  103. return owners.indexOf(owner) != -1;
  104. else
  105. return false;
  106. })
  107. }).map(maker => {
  108. return maker.constructor();
  109. }).sort((e1, e2) => {
  110. return e1.views[e1.view].height.toNumber() - e2.views[e2.view].height.toNumber()
  111. }).forEach(entity => {
  112. console.log(entity)
  113. displayEntity(entity, entity.view, 0, 1);
  114. });
  115. arrangeEntities(getSortedEntities());
  116. fitWorld(true);
  117. }
  118. }
  119. function makeOwnerSceneViews(owners) {
  120. return () => {
  121. owners.flatMap(owner => {
  122. return availableEntities["characters"].filter(x => {
  123. const entity = x.constructor();
  124. const owners = ownersOf(entity.views[entity.view].image.source);
  125. if (owners)
  126. return owners.indexOf(owner) != -1;
  127. else
  128. return false;
  129. })
  130. }).map(maker => {
  131. return maker.constructor();
  132. }).flatMap(entity => {
  133. return Object.keys(entity.views).map(view => {
  134. const newEnt = availableEntitiesByName[entity.identifier].constructor();
  135. newEnt.view = view;
  136. return newEnt;
  137. });
  138. }).sort((e1, e2) => {
  139. return e1.views[e1.view].height.toNumber() - e2.views[e2.view].height.toNumber()
  140. }).forEach(entity => {
  141. console.log(entity)
  142. displayEntity(entity, entity.view, 0, 1);
  143. });
  144. arrangeEntities(getSortedEntities());
  145. fitWorld(true);
  146. }
  147. }
  148. scenes["Kurri"] = makeOwnerScene(["kurrikage"]);
  149. scenes["Neopuc"] = () => {
  150. availableEntities["characters"].filter(x => {
  151. const entity = x.constructor();
  152. const owners = ownersOf(entity.views[entity.view].image.source);
  153. if (owners)
  154. return owners.indexOf("neopuc") != -1;
  155. else
  156. return false;
  157. }).map(maker => {
  158. return maker.constructor();
  159. }).sort((e1, e2) => {
  160. return e1.sizes[e1.sizes.length - 1].height.toNumber() - e2.sizes[e2.sizes.length - 1].height.toNumber()
  161. }).reduce((size, entity) => {
  162. entity.views[entity.view].height = math.unit(100 * Math.sqrt(size) * (entity.name == "Ilisha Devya" ? 2 : 1), "meters");
  163. displayEntity(entity, entity.view, 0, 1);
  164. return size + 1;
  165. }, 1)
  166. arrangeEntities(getSortedEntities());
  167. fitWorld(true);
  168. }
  169. scenes["Fidverse"] = () => {
  170. makeOwnerSceneViews(["fidchell", "cam"])();
  171. document.querySelector("#entity-" + (entityIndex - 1)).dataset.x = 0.5;
  172. document.querySelector("#entity-" + (entityIndex - 2)).dataset.x = 0.25;
  173. document.querySelector("#entity-" + (entityIndex - 3)).dataset.x = 0.75;
  174. updateSizes();
  175. fitWorld(true, 1);
  176. }