less copy protection, more size visualization
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 

154 行
6.4 KiB

  1. const scenes = {};
  2. scenes["Demo"] = () => {
  3. 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"}})
  4. fitWorld(true);
  5. }
  6. scenes["Military"] = () => {
  7. removeAllEntities();
  8. let entity = availableEntitiesByName["Asana (Mech)"].constructor();
  9. displayEntity(entity, entity.defaultView, 0, 1);
  10. entity = availableEntitiesByName["Napalm"].constructor();
  11. displayEntity(entity, entity.defaultView, 0, 1);
  12. entity = availableEntitiesByName["Chez"].constructor();
  13. displayEntity(entity, entity.defaultView, 0, 1);
  14. entity = availableEntitiesByName["Leopard 2 Rev. 1"].constructor();
  15. displayEntity(entity, entity.defaultView, 0, 1);
  16. entity = availableEntitiesByName["Asana"].constructor();
  17. displayEntity(entity, entity.defaultView, 0, 1);
  18. entity = availableEntitiesByName["Ashtrek"].constructor();
  19. entity.views[entity.view].height = entity.sizes[0].height;
  20. displayEntity(entity, entity.defaultView, 0, 1);
  21. arrangeEntities(getSortedEntities());
  22. fitWorld(true);
  23. }
  24. function makeSlice(min, max) {
  25. return () => {
  26. const characters = availableEntities["characters"].filter(x => {
  27. const entity = x.constructor();
  28. return math.compare(entity.views[entity.view].height, min) == 1 && math.compare(entity.views[entity.view].height, max) != 1
  29. });
  30. characters.forEach(character => {
  31. const entity = character.constructor();
  32. displayEntity(entity, entity.view, 0, 1);
  33. });
  34. arrangeEntities(getSortedEntities());
  35. fitWorld(true);
  36. }
  37. }
  38. scenes["x < 10m"] = makeSlice(math.unit(0, "meters"), math.unit(10, "meters"));
  39. scenes["10m < x <= 100m"] = makeSlice(math.unit(10, "meters"), math.unit(100, "meters"));
  40. scenes["100m < x <= 1km"] = makeSlice(math.unit(100, "meters"), math.unit(1000, "meters"));
  41. scenes["1km < x <= 10km"] = makeSlice(math.unit(1000, "meters"), math.unit(10000, "meters"));
  42. scenes["10km < x <= 100km"] = makeSlice(math.unit(10000, "meters"), math.unit(100000, "meters"));
  43. scenes["100km < x <= 1000km"] = makeSlice(math.unit(100000, "meters"), math.unit(1000000, "meters"));
  44. scenes["Everyone"] = makeSlice(math.unit(0.000000000000000001, "meters"), math.unit(1000000e100, "meters"));
  45. function makeOwnerScene(owner) {
  46. return () => {
  47. availableEntities["characters"].filter(x => {
  48. const entity = x.constructor();
  49. const owners = ownersOf(entity.views[entity.view].image.source);
  50. if (owners)
  51. return owners.indexOf(owner) != -1;
  52. else
  53. return false;
  54. }).map(maker => {
  55. return maker.constructor();
  56. }).sort((e1, e2) => {
  57. return e1.sizes[e1.sizes.length - 1].height.toNumber() - e2.sizes[e2.sizes.length - 1].height.toNumber()
  58. }).forEach(entity => {
  59. displayEntity(entity, entity.view, 0, 1);
  60. });
  61. arrangeEntities(getSortedEntities());
  62. fitWorld(true);
  63. }
  64. }
  65. function makeOwnerSceneViews(owners) {
  66. return () => {
  67. owners.flatMap(owner => {
  68. return availableEntities["characters"].filter(x => {
  69. const entity = x.constructor();
  70. const owners = ownersOf(entity.views[entity.view].image.source);
  71. if (owners)
  72. return owners.indexOf(owner) != -1;
  73. else
  74. return false;
  75. })
  76. }).map(maker => {
  77. return maker.constructor();
  78. }).flatMap(entity => {
  79. return Object.keys(entity.views).map(view => {
  80. const newEnt = availableEntitiesByName[entity.identifier].constructor();
  81. newEnt.view = view;
  82. return newEnt;
  83. });
  84. }).sort((e1, e2) => {
  85. return e1.views[e1.view].height.toNumber() - e2.views[e2.view].height.toNumber()
  86. }).forEach(entity => {
  87. console.log(entity)
  88. displayEntity(entity, entity.view, 0, 1);
  89. });
  90. arrangeEntities(getSortedEntities());
  91. fitWorld(true);
  92. }
  93. }
  94. scenes["Kurri"] = () => {
  95. availableEntities["characters"].filter(x => {
  96. const entity = x.constructor();
  97. return entity.info.author == "Kurrikage";
  98. }).forEach(maker => {
  99. const entity = maker.constructor();
  100. displayEntity(entity, entity.view, 0, 1);
  101. });
  102. arrangeEntities(getSortedEntities());
  103. fitWorld(true);
  104. }
  105. scenes["Neopuc"] = () => {
  106. availableEntities["characters"].filter(x => {
  107. const entity = x.constructor();
  108. const owners = ownersOf(entity.views[entity.view].image.source);
  109. if (owners)
  110. return owners.indexOf("neopuc") != -1;
  111. else
  112. return false;
  113. }).map(maker => {
  114. return maker.constructor();
  115. }).sort((e1, e2) => {
  116. return e1.sizes[e1.sizes.length - 1].height.toNumber() - e2.sizes[e2.sizes.length - 1].height.toNumber()
  117. }).reduce((size, entity) => {
  118. entity.views[entity.view].height = math.unit(100 * Math.sqrt(size) * (entity.name == "Ilisha Devya" ? 2 : 1), "meters");
  119. displayEntity(entity, entity.view, 0, 1);
  120. return size+1;
  121. }, 1)
  122. arrangeEntities(getSortedEntities());
  123. fitWorld(true);
  124. }
  125. scenes["Fidverse"] = () => {
  126. makeOwnerSceneViews(["fidchell", "cam"])();
  127. document.querySelector("#entity-" + (entityIndex-1)).dataset.x = 0.5;
  128. document.querySelector("#entity-" + (entityIndex-2)).dataset.x = 0.25;
  129. document.querySelector("#entity-" + (entityIndex-3)).dataset.x = 0.75;
  130. updateSizes();
  131. fitWorld(true, 1);
  132. }