index.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. <link href="ccc-devtools/libs/css/materialdesignicons.min.css" rel="stylesheet"
  2. type="text/css">
  3. <link href="ccc-devtools/libs/css/vuetify.min.css" rel="stylesheet" type="text/css">
  4. <style>
  5. html {
  6. overflow-y: auto;
  7. }
  8. </style>
  9. <v-app id="app">
  10. <v-app-bar app clipped-left color="gray" dense v-if="isShowTop">
  11. <v-app-bar-nav-icon @click.stop="drawer = !drawer"></v-app-bar-nav-icon>
  12. <div id="recompiling"><span>Recompiling...</span></div>
  13. <v-spacer></v-spacer>
  14. <div class="toolbar">
  15. <div class="item">
  16. <select id="opts-device">
  17. <option value="0">Default</option>
  18. </select>
  19. </div>
  20. <div class="item">
  21. <v-btn id="btn-rotate" small height="25"><span style="color: #aaa;">Rotate</span></v-btn>
  22. </div>
  23. <span style="font-size: small;display: none;" class="item">Debug Mode:</span>
  24. <div class="item" style="display: none;">
  25. <select id="opts-debug-mode">
  26. <option value="0">None</option>
  27. <option value="1">Info</option>
  28. <option value="2">Warn</option>
  29. <option value="3">Error</option>
  30. <option value="4">Info For Web Page</option>
  31. <option value="5">Warn For Web Page</option>
  32. <option value="6">Error For Web Page</option>
  33. </select>
  34. </div>
  35. <div class="item">
  36. <v-btn id="btn-show-fps" small height="25"><span style="color: #aaa;">Show FPS</span></v-btn>
  37. </div>
  38. <div class="item">
  39. <span style="font-size: small;color: #aaa;" class="item">FPS:</span><input id="input-set-fps"
  40. type="number" />
  41. </div>
  42. <div style="margin-right: 0px;" class="item">
  43. <v-btn id="btn-pause" small height="25"><span style="color: #aaa;">Pause</span></v-btn>
  44. </div>
  45. <div class="item">
  46. <v-btn id="btn-step" style="display: none;" small height="25">
  47. <span style="color: #aaa;">Step</span>
  48. </v-btn>
  49. </div>
  50. <div class="item">
  51. <v-btn id="btn-recompile" small height="25"><span style="color: #aaa;">Recompile</span></v-btn>
  52. </div>
  53. <v-icon @click="openCocosDocs" small>mdi-cloud-search</v-icon>
  54. <v-icon @click="openCocosForum" small>mdi-forum</v-icon>
  55. <v-icon @click="openCacheDialog" small>mdi-table</v-icon>
  56. <v-icon @click="openGithub" small>mdi-home</v-icon>
  57. </div>
  58. </v-app-bar>
  59. <div v-if="!isShowTop">
  60. <div id="recompiling"><span>Recompiling...</span></div>
  61. <div class="toolbar">
  62. <div class="item">
  63. <select id="opts-device">
  64. <option value="0">Default</option>
  65. </select>
  66. </div>
  67. <div class="item">
  68. <v-btn id="btn-rotate" small height="25"><span style="color: #aaa;">Rotate</span></v-btn>
  69. </div>
  70. <span style="font-size: small;display: none;" class="item">Debug Mode:</span>
  71. <div class="item" style="display: none;">
  72. <select id="opts-debug-mode">
  73. <option value="0">None</option>
  74. <option value="1">Info</option>
  75. <option value="2">Warn</option>
  76. <option value="3">Error</option>
  77. <option value="4">Info For Web Page</option>
  78. <option value="5">Warn For Web Page</option>
  79. <option value="6">Error For Web Page</option>
  80. </select>
  81. </div>
  82. <div class="item">
  83. <v-btn id="btn-show-fps" small height="25"><span style="color: #aaa;">Show FPS</span></v-btn>
  84. </div>
  85. <div class="item">
  86. <span style="font-size: small;color: #aaa;" class="item">FPS:</span><input id="input-set-fps"
  87. type="number" />
  88. </div>
  89. <div style="margin-right: 0px;" class="item">
  90. <v-btn id="btn-pause" small height="25"><span style="color: #aaa;">Pause</span></v-btn>
  91. </div>
  92. <div class="item">
  93. <v-btn id="btn-step" style="display: none;" small height="25">
  94. <span style="color: #aaa;">Step</span>
  95. </v-btn>
  96. </div>
  97. <div class="item">
  98. <v-btn id="btn-recompile" small height="25"><span style="color: #aaa;">Recompile</span></v-btn>
  99. </div>
  100. </div>
  101. </div>
  102. <v-navigation-drawer v-model="drawer" app clipped fixed width="512" v-if="isShowTop">
  103. <v-container style="height: 50%;overflow: auto;">
  104. <v-text-field v-model="treeSearchText" dense label="Search Node or Component" dark flat solo-inverted
  105. hide-details clearable clear-icon="mdi-close-circle-outline"></v-text-field>
  106. <v-treeview :items="treeData" item-key="id" dense activatable :search="treeSearchText"
  107. :active.sync="selectedNodes">
  108. <template v-slot:label="{ item, active }">
  109. <label v-if="item.active" style="color: white;">{{ item.name }}</label>
  110. <label v-else style="color: gray;">{{ item.name }}</label>
  111. </template>
  112. </v-treeview>
  113. </v-container>
  114. <v-container style="border-top: 2px solid darkgray;height: 50%;overflow-y: auto;">
  115. <template v-if="selectedNode">
  116. <!-- Node -->
  117. <table style="width: 100%;color: white;" border="1">
  118. <thead>
  119. <tr>
  120. <th colspan="2" style="text-align: left; padding: 10px;">
  121. <div class="float-left" style="display:inline-flex;">
  122. <v-simple-checkbox v-model="selectedNode.active"></v-simple-checkbox>
  123. <span style="margin-left: 10px;">{{ nodeSchema.title }}</span>
  124. </div>
  125. <div class="float-right">
  126. <v-icon style="margin-left: 10px;margin-right: 10px;" @click="drawNodeRect()">
  127. mdi-adjust</v-icon>
  128. <v-icon @click="outputNodeHandler()">mdi-send</v-icon>
  129. </div>
  130. </th>
  131. </tr>
  132. </thead>
  133. <tbody>
  134. <tr v-for="row in nodeSchema.rows" :key="row.key">
  135. <td style="padding: 10px;width: 40%;">{{ row.name }}</td>
  136. <td style="width: 60%;">
  137. <v-color-picker v-if="row.type == 'color'" class="ma-2" canvas-height="80" width="259"
  138. v-model="selectedNode[row.key]"></v-color-picker>
  139. <v-simple-checkbox v-else-if="row.type == 'bool'" v-model="selectedNode[row.key]"
  140. style="padding: 10px;width: 100%;"></v-simple-checkbox>
  141. <input v-else :type="row.type" v-model="selectedNode[row.key]"
  142. style="padding: 10px;width: 100%;"></input>
  143. </td>
  144. </tr>
  145. </tbody>
  146. </table>
  147. <!-- Components -->
  148. <table v-for="component in componentsSchema" style="width: 100%;color: white;" border="1">
  149. <thead>
  150. <tr>
  151. <th colspan="2" style="text-align: left; padding: 10px;">
  152. <div class="float-left" style="display:inline-flex;">
  153. <v-simple-checkbox v-model="selectedNode[component.key].enabled">
  154. </v-simple-checkbox>
  155. <span style="margin-left: 10px;">{{ component.title }}</span>
  156. </div>
  157. <div class="float-right">
  158. <v-icon @click="outputComponentHandler(component.key)">mdi-send</v-icon>
  159. </div>
  160. </th>
  161. </tr>
  162. </thead>
  163. <tbody>
  164. <tr v-for="row in component.rows" :key="row.key">
  165. <td style="padding: 10px;width: 40%;">{{ row.name }}</td>
  166. <td style="width: 60%;">
  167. <v-color-picker v-if="row.type == 'color'" class="ma-2" canvas-height="80" width="259"
  168. v-model="selectedNode[component.key][row.key]"></v-color-picker>
  169. <textarea v-else-if="row.type == 'textarea'" rows="1"
  170. v-model="selectedNode[component.key][row.key]" style="padding: 10px;width: 100%;">
  171. </textarea>
  172. <v-simple-checkbox v-else-if="row.type == 'bool'"
  173. v-model="selectedNode[component.key][row.key]" style="padding: 10px;width: 100%;">
  174. </v-simple-checkbox>
  175. <input v-else :type="row.type" v-model="selectedNode[component.key][row.key]"
  176. style="padding: 10px;width: 100%;"></input>
  177. </td>
  178. </tr>
  179. </tbody>
  180. </table>
  181. </template>
  182. </v-container>
  183. </v-navigation-drawer>
  184. <v-content>
  185. <v-container fill-height>
  186. <div id="content" class="content">
  187. <div class="contentWrap">
  188. <div id="GameDiv" class="wrapper"><canvas id="GameCanvas"></canvas>
  189. <div id="splash">
  190. <div class="progress-bar stripes"><span></span></div>
  191. </div>
  192. <div id="bulletin">
  193. <div id="sceneIsEmpty" class="inner">预览场景中啥都没有,加点什么,或在编辑器中打开其它场景吧</div>
  194. </div>
  195. </div>
  196. </div>
  197. </div>
  198. </v-container>
  199. </v-content>
  200. <v-dialog v-model="cacheDialog" persistent scrollable>
  201. <v-card>
  202. <v-card-title>
  203. {{ cacheTitle }}
  204. <v-spacer></v-spacer>
  205. <v-text-field v-model="cacheSearchText" append-icon="mdi-magnify" label="Search" single-line
  206. hide-details>
  207. </v-text-field>
  208. </v-card-title>
  209. <v-divider></v-divider>
  210. <v-card-text>
  211. <v-data-table :headers="cacheHeaders" :items="cacheData" :search="cacheSearchText" :sort-by="['size']"
  212. :sort-desc="[true]" :footer-props="{
  213. showFirstLastPage: true,
  214. firstIcon: 'mdi-chevron-double-left',
  215. lastIcon: 'mdi-chevron-double-right',
  216. }">
  217. <template v-slot:item.size="{ item }">
  218. {{ item.size == -1 ? '_' : (item.size +'MB') }}
  219. </template>
  220. <template v-slot:item.preview="{ item }">
  221. <div style="height: 60px;display: flex;align-items: center;">
  222. <img :src="window.location.protocol + '//' + window.location.host + '/' + item.preview"
  223. style="max-height: 60px;max-width: 120px;" v-if="item.preview">
  224. <template v-else>_</template>
  225. </div>
  226. </template>
  227. </v-data-table>
  228. </v-card-text>
  229. <v-divider></v-divider>
  230. <v-card-actions>
  231. <v-btn color="blue darken-1" text @click="cacheDialog = false">Close</v-btn>
  232. <v-spacer></v-spacer>
  233. <v-switch v-model="cacheOnlyTexture" label="只显示纹理"></v-switch>
  234. </v-card-actions>
  235. </v-card>
  236. </v-dialog>
  237. </v-app>
  238. <script src="ccc-devtools/libs/js/vue.min.js"></script>
  239. <script src="ccc-devtools/libs/js/vuetify.js"></script>
  240. <script src="ccc-devtools/config.js"></script>
  241. <script src="ccc-devtools/libs/js/cc-console-utils.js"></script>
  242. <script src="ccc-devtools/preview.js"></script>