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.
 
 
 

185 lines
6.8 KiB

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