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

166 行
6.9 KiB

  1. const scenes = {};
  2. scenes["Example"] = () => {
  3. importScene({"entities":[{"name":"Fen","customName":"Fen","scale":5.436062065275549,"rotation":0,"view":"front","x":"4.665848709260061","y":"0","priority":1,"brightness":1},{"name":"Houses","customName":"Houses","scale":1,"rotation":0,"view":"Two-Story House (Front)","x":"5.288189964330951","y":"0","priority":0,"brightness":1},{"name":"Cars","customName":"Cars","scale":1,"rotation":0,"view":"Toyota Prius C (Front)","x":"9.852420385132847","y":"0","priority":0,"brightness":1},{"name":"Human","customName":"Human","scale":1,"rotation":0,"view":"female","x":"0.5047986924482672","y":"0","priority":0,"brightness":1},{"name":"Bus Stop","customName":"Bus Stop","scale":1,"rotation":0,"view":"building","x":"-6.340563816462594","y":"0","priority":0,"brightness":1},{"name":"Buses","customName":"Buses","scale":1,"rotation":0,"view":"City Bus (Front)","x":"-3.9150839992681856","y":"0","priority":0,"brightness":1}],"world":{"height":15.64105944367194,"unit":"meters","x":2.331469191670777,"y":-1.303421620305995},"version":4})
  4. }
  5. scenes["Empty"] = () => {
  6. importScene({ "entities": [], "world": { "height": 3, "unit": "meters" }, "version": 0 });
  7. }
  8. function makeSlice(min, max) {
  9. return () => {
  10. const characters = availableEntities["characters"].filter(x => {
  11. const entity = x.constructor();
  12. return math.compare(entity.views[entity.view].height, min) == 1 && math.compare(entity.views[entity.view].height, max) != 1
  13. });
  14. characters.forEach(character => {
  15. const entity = character.constructor();
  16. displayEntity(entity, entity.view, 0, 0);
  17. });
  18. arrangeEntities(getSortedEntities());
  19. fitWorld(true);
  20. }
  21. }
  22. scenes["<10m"] = makeSlice(math.unit(0, "meters"), math.unit(10, "meters"));
  23. scenes["10m-100m"] = makeSlice(math.unit(10, "meters"), math.unit(100, "meters"));
  24. scenes["100m-1km"] = makeSlice(math.unit(100, "meters"), math.unit(1000, "meters"));
  25. scenes["1km-10km"] = makeSlice(math.unit(1000, "meters"), math.unit(10000, "meters"));
  26. scenes["10km-100km"] = makeSlice(math.unit(10000, "meters"), math.unit(100000, "meters"));
  27. scenes["100km-1000km"] = makeSlice(math.unit(100000, "meters"), math.unit(1000000, "meters"));
  28. scenes["Everyone"] = () => {
  29. config.height = math.unit(11, "meters");
  30. let entities = availableEntities.characters.map(maker => {
  31. return maker.constructor();
  32. })
  33. if (confirm("This scene will load " + entities.length + " entities -- are you sure?")) {
  34. entities.reduce((counter, entity) => {
  35. entity.views[entity.view].height = math.unit(1, "meter");
  36. const count = availableEntities.characters.length;
  37. const x = 0.05 + math.floor(counter / 10) / math.ceil(count / 10);
  38. const y = (counter % 10) / 10 + 0.1;
  39. displayEntity(entity, entity.view, x, y);
  40. return counter + 1;
  41. }, 0);
  42. updateSizes(true);
  43. }
  44. }
  45. scenes["EVERYTHING"] = () => {
  46. config.height = math.unit(11, "meters");
  47. let entities = Object.values(availableEntitiesByName).map(maker => {
  48. return maker.constructor();
  49. })
  50. if (confirm("This scene will load " + entities.length + " entities -- are you sure?")) {
  51. entities.reduce((counter, entity) => {
  52. entity.views[entity.view].height = math.unit(1, "meter");
  53. const count = Object.values(availableEntitiesByName).length;
  54. const x = 0.05 + math.floor(counter / 10) / math.ceil(count / 10);
  55. const y = (counter % 10) / 10 + 0.1;
  56. displayEntity(entity, entity.view, x, y);
  57. return counter + 1;
  58. }, 0);
  59. updateSizes(true);
  60. }
  61. }
  62. scenes["EVERY VIEW AAAAA"] = () => {
  63. config.height = math.unit(11, "meters");
  64. let entities = Object.values(availableEntitiesByName).map(maker => {
  65. return maker.constructor();
  66. }).flatMap(entity => {
  67. return Object.keys(entity.views).map(view => {
  68. const newEntity = availableEntitiesByName[entity.identifier].constructor();
  69. newEntity.view = view;
  70. return newEntity;
  71. });
  72. })
  73. if (confirm("This scene will load " + entities.length + " entities -- are you sure?")) {
  74. entities.reduce((counter, entity) => {
  75. entity.views[entity.view].height = math.unit(1, "meter");
  76. const count = Object.values(availableEntitiesByName).length;
  77. const x = 0.05 + math.floor(counter / 10) / math.ceil(count / 10);
  78. const y = (counter % 10) / 10 + 0.1;
  79. displayEntity(entity, entity.view, x, y);
  80. return counter + 1;
  81. }, 0);
  82. updateSizes(true);
  83. }
  84. }
  85. function makeViewsScene(constructor, viewChoice) {
  86. return () => {
  87. Object.keys(constructor.constructor().views).forEach(view => {
  88. if (viewChoice === undefined || view.indexOf(viewChoice) >= 0) {
  89. const entity = constructor.constructor()
  90. displayEntity(entity, view, 0, 1)
  91. }
  92. })
  93. arrangeEntities(getSortedEntities());
  94. }
  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. }
  117. }
  118. function makeOwnerSceneViews(owners) {
  119. return () => {
  120. owners.flatMap(owner => {
  121. return availableEntities["characters"].filter(x => {
  122. const entity = x.constructor();
  123. const owners = ownersOf(entity.views[entity.view].image.source);
  124. if (owners)
  125. return owners.indexOf(owner) != -1;
  126. else
  127. return false;
  128. })
  129. }).map(maker => {
  130. return maker.constructor();
  131. }).flatMap(entity => {
  132. return Object.keys(entity.views).map(view => {
  133. const newEnt = availableEntitiesByName[entity.identifier].constructor();
  134. newEnt.view = view;
  135. return newEnt;
  136. });
  137. }).sort((e1, e2) => {
  138. return e1.views[e1.view].height.toNumber() - e2.views[e2.view].height.toNumber()
  139. }).forEach(entity => {
  140. console.log(entity)
  141. displayEntity(entity, entity.view, 0, 1);
  142. });
  143. arrangeEntities(getSortedEntities());
  144. fitWorld(true);
  145. }
  146. }