index.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. require('./custom.less')
  2. const tree = require('./tree')
  3. const walk = require('./walk')
  4. require('./ui')
  5. require('./stl-exporter')
  6. const THREE = require('./three')
  7. // if (window.scene) {
  8. // var i = -6
  9. // scene.traverse(o => {
  10. // o.name = o.type + i++
  11. // })
  12. // scene.getObjectByName('Bone3').rotation.z = 32
  13. // }
  14. window.bake = () => {
  15. const character = CK.character
  16. const baker = new THREE.Baker();
  17. baker.parse(character);
  18. console.log('Baked');
  19. }
  20. window.save = (filename) => {
  21. const character = CK.character
  22. const exporter = new THREE.GLTFExporter();
  23. exporter.parse(character, data => {
  24. window.data = data;
  25. console.log('done')
  26. if (filename) console.save(JSON.stringify(window.data), `${filename}.gltf`)
  27. })
  28. }
  29. window.console.save = function(data, filename){
  30. if(!data) {
  31. console.error('Console.save: No data')
  32. return;
  33. }
  34. if(!filename) filename = 'console.json'
  35. if(typeof data === "object"){
  36. data = JSON.stringify(data, undefined, 4)
  37. }
  38. var blob = new Blob([data], {type: 'text/json'}),
  39. e = document.createEvent('MouseEvents'),
  40. a = document.createElement('a')
  41. a.download = filename
  42. a.href = window.URL.createObjectURL(blob)
  43. a.dataset.downloadurl = ['text/json', a.download, a.href].join(':')
  44. e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null)
  45. a.dispatchEvent(e)
  46. }
  47. window.console.css = () => Array.from(document.styleSheets).map(ss => Array.from(ss.rules)).reduce((a, b) => a.concat(b), []).map(rule => rule.cssText).sort().join('\n')
  48. window.console.saveCss = (name) => window.console.save(window.console.css(), name || `${window.location.hostname}.css`)
  49. window.saveStl = (filename) => {
  50. var exporter = new THREE.STLExporter();
  51. var data = exporter.parse( CK.character, { binary: false } );
  52. console.save(data, `${filename || 'export'}.stl`)
  53. }
  54. const waitFor = fn => new Promise((resolve, reject) => {
  55. if (typeof fn === 'string') {
  56. const querySelector = fn
  57. fn = () => document.querySelector(querySelector)
  58. }
  59. const timer = setInterval(() => {
  60. try {
  61. const res = fn()
  62. if (res) {
  63. resolve(res)
  64. }
  65. } catch (err) {
  66. console.warn(err)
  67. }
  68. })
  69. })
  70. setInterval(() => {
  71. const links = Array.from(document.querySelectorAll('.shop-button'))
  72. links.forEach(link => {
  73. const a = document.createElement('a')
  74. a.className = 'shop-button clickable'
  75. a.innerText = 'Export STL'
  76. a.onclick = ev => {
  77. saveStl(CK.character.name || document.querySelector('.headerMenu-trigger-label').innerText.split('*').join('').trim())
  78. ev.preventDefault()
  79. setTimeout(() => document.querySelector('.tab-Pose').click())
  80. }
  81. link.replaceWith(a)
  82. })
  83. // const kick = Array.from(document.querySelectorAll('.corner-kickstarter'))
  84. // kick.forEach(kick => {
  85. // kick.remove()
  86. // })
  87. }, 1000)
  88. // // Your code here...
  89. // CK.Settings.rez = 'hiRez'
  90. // CK.Settings.forge = true
  91. // const CKBLoader = window.FuseBox.packages.creationkit.f["creationkit/resources/loaders/CKBLoader.js"].locals.exports.default
  92. // const oldLoad = CKBLoader.prototype.load
  93. // CKBLoader.prototype.load = function() {
  94. // const args = Array.from(arguments)
  95. // //args[0] = args[0].split('_loRez_').join('_').split('/static/').join('/forge/static/')
  96. // console.log(args)
  97. // return oldLoad.apply(this, args)
  98. // }
  99. window.Custom = {
  100. init() {}
  101. }