CriticalError

bst_const.js

Jun 26th, 2020
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.97 KB | None | 0 0
  1. "use strict";
  2.  
  3. var path = require('path');
  4.  
  5. var BstConst = function() {};
  6.  
  7. //------------------------------------------------------------------------
  8. //- GLOBAL
  9. //------------------------------------------------------------------------
  10. BstConst.PART_BODY = 'body';
  11. BstConst.PART_FACE = 'face';
  12. BstConst.PART_HAIR = 'hair';
  13.  
  14. BstConst.BACKUP_TAIL = '.bst_bak';
  15.  
  16. BstConst.PATH_DATABASE = path.join(process.cwd(), 'database');
  17.  
  18. BstConst.PART_TYPES = ['costume', 'attach', 'weapon'];
  19. BstConst.PART_TYPE_COSTUME = 'costume';
  20. BstConst.PART_TYPE_ATTACH = 'attach';
  21. BstConst.PART_TYPE_WEAPON = 'weapon';
  22. BstConst.PART_TYPE_UNRECOGNIZED = 'unrecognized';
  23.  
  24. BstConst.PATH_PNG_CPS_FAILURE = path.join(process.cwd(), 'database', 'png_cps_failure.json');
  25.  
  26. BstConst.PATH_TENCENT_SUB_DIR = 'mod';
  27.  
  28. //------------------------------------------------------------------------
  29. //- MESH XML
  30. //------------------------------------------------------------------------
  31. BstConst.PATH_MESH_XML = path.join(process.cwd(), 'resources/dedat/output/engine/charactertoolappearance_mesh.xml');
  32. BstConst.RACE_VALID = ['곤', '건', '진', '린'];
  33.  
  34. //------------------------------------------------------------------------
  35. //- UPK
  36. //------------------------------------------------------------------------
  37. BstConst.UPK_NO_OBJ_ERROR = 'Specified package(s) has no supported objects';
  38. BstConst.UPK_UNKNOWN_MEMBER_ERROR = '*** unknown member';
  39.  
  40. BstConst.UPK_ENTRANCE_LINE_NO = 2; // 一般来说,log的第三行里的内容是关键信息
  41. BstConst.UPK_TYPE_SKELETON = 'SkeletalMesh3';
  42. BstConst.UPK_TYPE_TEXTURE = 'Texture2D';
  43. BstConst.UPK_TYPE_MATERIAL = 'MaterialInstanceConstant';
  44.  
  45. BstConst.PATH_UPK_BASE = 'database/upk';
  46. BstConst.PATH_UPK_LOG = path.join(process.cwd(), BstConst.PATH_UPK_BASE, 'log');
  47. BstConst.PATH_UPK_DATA_LIST = path.join(process.cwd(), BstConst.PATH_UPK_BASE, 'data/list');
  48. BstConst.PATH_UPK_DATA_RAW = path.join(process.cwd(), BstConst.PATH_UPK_BASE, 'data/raw');
  49.  
  50. BstConst.LIST_FILE_SKELETON_COSTUME = 'list_skeleton_costume.json';
  51. BstConst.LIST_FILE_SKELETON_ATTACH = 'list_skeleton_attach.json';
  52. BstConst.LIST_FILE_SKELETON_WEAPON = 'list_skeleton_weapon.json';
  53. BstConst.LIST_FILE_SKELETON_HAIR = 'list_skeleton_hair.json';
  54. BstConst.LIST_FILE_SKELETON_UNRECOGNIZED = 'list_skeleton_unrecognized.json';
  55. BstConst.LIST_FILE_TEXTURE = 'list_texture.json';
  56. BstConst.LIST_FILE_MATERIAL = 'list_material.json';
  57. BstConst.LIST_FILE_UNRECOGNIZED = 'list_unrecognized.json';
  58.  
  59. BstConst.RAW_FILE_ICON = 'raw_icon.json';
  60. BstConst.RAW_FILE_ICON_INVALID = 'raw_icon_invalid.json';
  61. BstConst.RAW_FILE_SKELETON = 'raw_skeleton.json';
  62. BstConst.RAW_FILE_SKELETON_INVALID = 'raw_skeleton_invalid.json';
  63. BstConst.RAW_FILE_TEXTURE = 'raw_texture.json';
  64. BstConst.RAW_FILE_MATERIAL = 'raw_material.json';
  65. BstConst.RAW_FILE_MATERIAL_INVALID = 'raw_material_invalid.json';
  66.  
  67. BstConst.HAIR_UPK_SPECIAL_CORES = [
  68. 'JinM_029', 'JinF_023', 'JinF_020', 'GonF_010', 'KunN_014'
  69. ];
  70. BstConst.HAIR_UPK_CORE_PREFIX = 'Hair_';
  71. BstConst.UPK_REPLACE_SHORT_TO_LONG_LIMIT = 8; // upk内容短改长的极限长度,因为是使用当前upk文件名进行短改长的补足,所以最多就8位长度
  72. BstConst.UPK_CORE_PHYSICS_SUFFIX = '_Physics';
  73. BstConst.UPK_HEX_STR_NULL = '00';
  74.  
  75. BstConst.UPK_INVALID_TEXTURE_UPK_IDS = [
  76. '00002620', // Material3:常见于costume类型数据中:core:Material3 Basic
  77. '00002640', // Texture2D:大量材质相关obj
  78. '00002665', // MaterialInstanceConstant:材质upk
  79. '00002700', // MaterialInstanceConstant:材质upk
  80. '00005708', // Texture2D:常见于attach类型数据中特别是眼镜上的glasses obj:obj:D, S, glasses3_m
  81. '00007428', // MaterialInstanceConstant:材质upk
  82. '00008124', // MaterialInstanceConstant:材质upk
  83. '00008613', // MaterialInstanceConstant:常见于attach, weapon类型数据中:core:NothingMAT
  84. '00009220', // MaterialInstanceConstant:材质upk
  85. '00012963', // Texture2D:大量无用obj
  86. '00016228', // MaterialInstanceConstant:材质upk
  87. '00016234', // MaterialInstanceConstant:材质upk
  88. '00016237', // MaterialInstanceConstant:材质upk
  89. '00016885', // MaterialInstanceConstant:材质upk
  90. '00017459', // MaterialInstanceConstant:材质upk
  91. '00018859', // MaterialInstanceConstant:材质upk
  92. '00021199', // MaterialInstanceConstant:材质upk
  93. '00021666', // MaterialInstanceConstant:材质upk
  94. '00021668', // MaterialInstanceConstant:材质upk
  95. '00021674' // MaterialInstanceConstant:材质upk
  96. ];
  97.  
  98. /**
  99. * 某些特殊的材质upk文件,里面引用了多个贴图upk文件,
  100. * 且,最主要的贴图upk文件可能还放在某些不是很重要的贴图upk文件的下面,
  101. * 解析的时候是取第一个出现的贴图upk文件,所以就会出现某些材质upk和贴图upk文件关联错误的情况,
  102. * 在raw_texture.json里的部分贴图可能多出一些材质,而部分贴图可能完全没有材质,
  103. * 这个配置就是进行特例描述,将部分特例进行预配置
  104. * 具体例子参考:骨骼:00022166,贴图:00022167,材质:00022168
  105. * 该配置的结构基本上和 raw_material.json 里相同:
  106. * {
  107. * "00022168": {
  108. * "col": "col1",
  109. * "texture": "00022167",
  110. * "objs": [
  111. * "060012_JinF_col1_D",
  112. * "060012_JinF_col1_E",
  113. * "060012_JinF_col1_M",
  114. * "060012_JinF_col1_N",
  115. * "060012_JinF_col1_S"
  116. * ]
  117. * }
  118. * }
  119. */
  120. BstConst.UPK_PRE_DEFINED_MATERIAL_INFO = {
  121. "00022168": {
  122. "col": "col1",
  123. "texture": "00022167",
  124. "objs": [
  125. "060012_JinF_col1_D",
  126. "060012_JinF_col1_E",
  127. "060012_JinF_col1_M",
  128. "060012_JinF_col1_N",
  129. "060012_JinF_col1_S"
  130. ]
  131. },
  132. "00022176": {
  133. "col": "col1",
  134. "texture": "00022174",
  135. "objs": [
  136. "060011_JinF_col1_D",
  137. "060011_JinF_col1_E",
  138. "060011_JinF_col1_M",
  139. "060011_JinF_col1_N",
  140. "060011_JinF_col1_S"
  141. ]
  142. },
  143. "00022181": {
  144. "col": "col1",
  145. "texture": "00022179",
  146. "objs": [
  147. "060008_JinF_col1_D",
  148. "060008_JinF_col1_M",
  149. "060008_JinF_col1_N",
  150. "060008_JinF_col1_S"
  151. ]
  152. }
  153. };
  154.  
  155. /**
  156. * 某些特殊的贴图upk文件,其文件描述可能是贴图(MaterialInstanceConstant),
  157. * 但其实其职责是贴图,遇到这样的情况,在一开始骨骼分类的时候这个upk文件就已经被分到材质部分去了,
  158. * 于是模型解析的时候就会找不到贴图,这个配置就是进行特例描述,将部分特例进行预配置
  159. * 具体例子参考:骨骼:00013151,贴图:00013149,材质:00013150
  160. * 该配置的结构基本上和 raw_texture.json 里相同:
  161. * {
  162. * "00013149": {
  163. * "objs": [
  164. * "00001_KunN_d",
  165. * "00001_KunN_m",
  166. * "00001_KunN_n",
  167. * "00001_KunN_s"
  168. * ],
  169. * "materials": {}
  170. * }
  171. * }
  172. */
  173. BstConst.UPK_PRE_DEFINED_TEXTURE_INFO = {
  174. "00013149": {
  175. "objs": [
  176. "00001_KunN_d",
  177. "00001_KunN_m",
  178. "00001_KunN_n",
  179. "00001_KunN_s"
  180. ],
  181. "materials": {}
  182. }
  183. };
  184.  
  185. //------------------------------------------------------------------------
  186. //- ICON
  187. //------------------------------------------------------------------------
  188. BstConst.ICON_UPK_ID = '00008758';
  189. BstConst.PATH_ICON_BASE = 'database/icon';
  190. BstConst.PATH_ICON_TGA = path.join(process.cwd(), BstConst.PATH_ICON_BASE, 'tga');
  191. BstConst.PATH_ICON_PNG = path.join(process.cwd(), BstConst.PATH_ICON_BASE, 'png');
  192. BstConst.PATH_ICON_PNG_CPS = path.join(process.cwd(), BstConst.PATH_ICON_BASE, 'png-cps');
  193. BstConst.PATH_ICON_CONVERSION_FAILURE = path.join(process.cwd(), BstConst.PATH_ICON_BASE, 'conversion_failure.json');
  194.  
  195. module.exports = BstConst;
Advertisement
Add Comment
Please, Sign In to add comment