rw-parser-ng 2.0.1 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/lib/{src/index.d.ts → index.d.ts} +1 -0
  2. package/lib/{src/index.js → index.js} +1 -0
  3. package/package.json +2 -3
  4. package/src/index.ts +1 -0
  5. package/tsconfig.json +3 -4
  6. package/lib/scripts/sort_models.d.ts +0 -1
  7. package/lib/scripts/sort_models.js +0 -185
  8. package/lib/scripts/sort_worker.d.ts +0 -1
  9. package/lib/scripts/sort_worker.js +0 -140
  10. /package/lib/{src/renderware → renderware}/RwFile.d.ts +0 -0
  11. /package/lib/{src/renderware → renderware}/RwFile.js +0 -0
  12. /package/lib/{src/renderware → renderware}/RwSections.d.ts +0 -0
  13. /package/lib/{src/renderware → renderware}/RwSections.js +0 -0
  14. /package/lib/{src/renderware → renderware}/common/types.d.ts +0 -0
  15. /package/lib/{src/renderware → renderware}/common/types.js +0 -0
  16. /package/lib/{src/renderware → renderware}/dff/DffModelType.d.ts +0 -0
  17. /package/lib/{src/renderware → renderware}/dff/DffModelType.js +0 -0
  18. /package/lib/{src/renderware → renderware}/dff/DffParser.d.ts +0 -0
  19. /package/lib/{src/renderware → renderware}/dff/DffParser.js +0 -0
  20. /package/lib/{src/renderware → renderware}/errors/RwParseError.d.ts +0 -0
  21. /package/lib/{src/renderware → renderware}/errors/RwParseError.js +0 -0
  22. /package/lib/{src/renderware → renderware}/ifp/IfpData.d.ts +0 -0
  23. /package/lib/{src/renderware → renderware}/ifp/IfpData.js +0 -0
  24. /package/lib/{src/renderware → renderware}/ifp/IfpParser.d.ts +0 -0
  25. /package/lib/{src/renderware → renderware}/ifp/IfpParser.js +0 -0
  26. /package/lib/{src/renderware → renderware}/txd/TxdParser.d.ts +0 -0
  27. /package/lib/{src/renderware → renderware}/txd/TxdParser.js +0 -0
  28. /package/lib/{src/renderware → renderware}/utils/ImageDecoder.d.ts +0 -0
  29. /package/lib/{src/renderware → renderware}/utils/ImageDecoder.js +0 -0
  30. /package/lib/{src/renderware → renderware}/utils/ImageFormatEnums.d.ts +0 -0
  31. /package/lib/{src/renderware → renderware}/utils/ImageFormatEnums.js +0 -0
  32. /package/lib/{src/renderware → renderware}/utils/RwVersion.d.ts +0 -0
  33. /package/lib/{src/renderware → renderware}/utils/RwVersion.js +0 -0
  34. /package/lib/{src/utils → utils}/ByteStream.d.ts +0 -0
  35. /package/lib/{src/utils → utils}/ByteStream.js +0 -0
@@ -6,3 +6,4 @@ export * from './renderware/txd/TxdParser';
6
6
  export * from './renderware/ifp/IfpParser';
7
7
  export * from './renderware/dff/DffModelType';
8
8
  export * from './renderware/ifp/IfpData';
9
+ export * from './renderware/common/types';
@@ -26,3 +26,4 @@ __exportStar(require("./renderware/txd/TxdParser"), exports);
26
26
  __exportStar(require("./renderware/ifp/IfpParser"), exports);
27
27
  __exportStar(require("./renderware/dff/DffModelType"), exports);
28
28
  __exportStar(require("./renderware/ifp/IfpData"), exports);
29
+ __exportStar(require("./renderware/common/types"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rw-parser-ng",
3
- "version": "2.0.1",
3
+ "version": "2.0.3",
4
4
  "description": "Parses RenderWare DFF, TXD and IFP files into usable format!",
5
5
  "author": {
6
6
  "name": "DepsCian",
@@ -50,8 +50,7 @@
50
50
  "build": "tsc -p tsconfig.json",
51
51
  "dev": "tsc -p tsconfig.json --watch",
52
52
  "prepare": "npm run build",
53
- "test": "jest",
54
- "sort:models": "tsc && node lib/scripts/sort_models.js"
53
+ "test": "jest"
55
54
  },
56
55
  "files": [
57
56
  "lib",
package/src/index.ts CHANGED
@@ -8,3 +8,4 @@ export * from './renderware/ifp/IfpParser';
8
8
 
9
9
  export * from './renderware/dff/DffModelType';
10
10
  export * from './renderware/ifp/IfpData';
11
+ export * from './renderware/common/types';
package/tsconfig.json CHANGED
@@ -11,8 +11,8 @@
11
11
  // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
12
12
  // "sourceMap": true, /* Generates corresponding '.map' file. */
13
13
  // "outFile": "./", /* Concatenate and emit output to single file. */
14
- "outDir": "./lib/", /* Redirect output structure to the directory. */
15
- // "rootDir": "./src/", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
14
+ "outDir": "./lib", /* Redirect output structure to the directory. */
15
+ "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
16
16
  // "composite": true, /* Enable project compilation */
17
17
  // "removeComments": true, /* Do not emit comments to output. */
18
18
  // "noEmit": true, /* Do not emit outputs. */
@@ -58,8 +58,7 @@
58
58
  // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
59
59
  },
60
60
  "include": [
61
- "src/**/*",
62
- "scripts/**/*"
61
+ "src/**/*"
63
62
  ],
64
63
  "exclude": [
65
64
  "node_modules",
@@ -1 +0,0 @@
1
- export {};
@@ -1,185 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
- return new (P || (P = Promise))(function (resolve, reject) {
38
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
- step((generator = generator.apply(thisArg, _arguments || [])).next());
42
- });
43
- };
44
- var __generator = (this && this.__generator) || function (thisArg, body) {
45
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
46
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
47
- function verb(n) { return function (v) { return step([n, v]); }; }
48
- function step(op) {
49
- if (f) throw new TypeError("Generator is already executing.");
50
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
51
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
52
- if (y = 0, t) op = [op[0] & 2, t.value];
53
- switch (op[0]) {
54
- case 0: case 1: t = op; break;
55
- case 4: _.label++; return { value: op[1], done: false };
56
- case 5: _.label++; y = op[1]; op = [0]; continue;
57
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
58
- default:
59
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
60
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
61
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
62
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
63
- if (t[2]) _.ops.pop();
64
- _.trys.pop(); continue;
65
- }
66
- op = body.call(thisArg, _);
67
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
68
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
69
- }
70
- };
71
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
72
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
73
- if (ar || !(i in from)) {
74
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
75
- ar[i] = from[i];
76
- }
77
- }
78
- return to.concat(ar || Array.prototype.slice.call(from));
79
- };
80
- var _a;
81
- Object.defineProperty(exports, "__esModule", { value: true });
82
- var worker_threads_1 = require("worker_threads");
83
- var index_1 = require("../src/index");
84
- var fs_1 = require("fs");
85
- var path = __importStar(require("path"));
86
- var os = __importStar(require("os"));
87
- var sourceDir = 'C:\\Users\\Administrator\\Documents\\Code\\playground-render\\assets\\source_skins';
88
- var outputDir = 'C:\\Users\\Administrator\\Documents\\Code\\playground-render\\assets\\sorted_skins';
89
- var modelTypeToDir = (_a = {},
90
- _a[index_1.DffModelType.GENERIC] = 'objects',
91
- _a[index_1.DffModelType.SKIN] = 'skins',
92
- _a[index_1.DffModelType.VEHICLE] = 'vehicles',
93
- _a);
94
- function createDirectory(dir) {
95
- return __awaiter(this, void 0, void 0, function () {
96
- return __generator(this, function (_a) {
97
- switch (_a.label) {
98
- case 0: return [4 /*yield*/, fs_1.promises.mkdir(dir, { recursive: true })];
99
- case 1:
100
- _a.sent();
101
- return [2 /*return*/];
102
- }
103
- });
104
- });
105
- }
106
- function sortAndIndexAssets() {
107
- return __awaiter(this, void 0, void 0, function () {
108
- var texturesDir, modelDirs, allFiles, filesQueue, numWorkers, modelIndex, textureIndex, processedFiles, runWorker, workerPromises, i;
109
- return __generator(this, function (_a) {
110
- switch (_a.label) {
111
- case 0:
112
- console.time('Total execution time');
113
- texturesDir = path.join(outputDir, 'textures');
114
- modelDirs = Object.values(modelTypeToDir).map(function (dir) { return path.join(outputDir, dir); });
115
- return [4 /*yield*/, Promise.all(__spreadArray([createDirectory(texturesDir)], modelDirs.map(createDirectory), true))];
116
- case 1:
117
- _a.sent();
118
- return [4 /*yield*/, fs_1.promises.readdir(sourceDir)];
119
- case 2:
120
- allFiles = (_a.sent()).filter(function (f) { return ['.dff', '.txd'].includes(path.extname(f).toLowerCase()); });
121
- filesQueue = __spreadArray([], allFiles, true);
122
- numWorkers = os.cpus().length;
123
- console.log("Starting processing with ".concat(numWorkers, " workers for ").concat(allFiles.length, " files."));
124
- modelIndex = { skins: [], objects: [], vehicles: [] };
125
- textureIndex = {};
126
- processedFiles = 0;
127
- runWorker = function (workerId) { return new Promise(function (resolve, reject) {
128
- var worker = new worker_threads_1.Worker(path.join(__dirname, 'sort_worker.js'));
129
- worker.on('message', function (result) {
130
- processedFiles++;
131
- process.stdout.write("\rProcessing: ".concat(processedFiles, "/").concat(allFiles.length));
132
- if (result.type === 'dff') {
133
- modelIndex[result.category].push(result.file);
134
- }
135
- else if (result.type === 'txd') {
136
- textureIndex[result.file] = result.textures;
137
- }
138
- else if (result.type === 'error') {
139
- console.error("\n[Worker ".concat(workerId, "] Error processing ").concat(result.file, ": ").concat(result.message));
140
- }
141
- if (filesQueue.length > 0) {
142
- worker.postMessage({ file: filesQueue.pop(), sourceDir: sourceDir, outputDir: outputDir, texturesDir: texturesDir, modelTypeToDir: modelTypeToDir });
143
- }
144
- else {
145
- worker.postMessage(null);
146
- }
147
- });
148
- worker.on('error', reject);
149
- worker.on('exit', function (code) {
150
- if (code === 0) {
151
- resolve();
152
- }
153
- else {
154
- reject(new Error("Worker ".concat(workerId, " stopped with exit code ").concat(code)));
155
- }
156
- });
157
- if (filesQueue.length > 0) {
158
- worker.postMessage({ file: filesQueue.pop(), sourceDir: sourceDir, outputDir: outputDir, texturesDir: texturesDir, modelTypeToDir: modelTypeToDir });
159
- }
160
- else {
161
- worker.postMessage(null);
162
- }
163
- }); };
164
- workerPromises = [];
165
- for (i = 0; i < numWorkers; i++) {
166
- workerPromises.push(runWorker(i + 1));
167
- }
168
- return [4 /*yield*/, Promise.all(workerPromises)];
169
- case 3:
170
- _a.sent();
171
- console.log('\nWriting index files...');
172
- return [4 /*yield*/, Promise.all([
173
- fs_1.promises.writeFile(path.join(outputDir, 'index.json'), JSON.stringify(modelIndex, null, 2)),
174
- fs_1.promises.writeFile(path.join(texturesDir, 'index.json'), JSON.stringify(textureIndex, null, 2))
175
- ])];
176
- case 4:
177
- _a.sent();
178
- console.log('Sorting and indexing complete!');
179
- console.timeEnd('Total execution time');
180
- return [2 /*return*/];
181
- }
182
- });
183
- });
184
- }
185
- sortAndIndexAssets().catch(console.error);
@@ -1 +0,0 @@
1
- export {};
@@ -1,140 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
- return new (P || (P = Promise))(function (resolve, reject) {
38
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
- step((generator = generator.apply(thisArg, _arguments || [])).next());
42
- });
43
- };
44
- var __generator = (this && this.__generator) || function (thisArg, body) {
45
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
46
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
47
- function verb(n) { return function (v) { return step([n, v]); }; }
48
- function step(op) {
49
- if (f) throw new TypeError("Generator is already executing.");
50
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
51
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
52
- if (y = 0, t) op = [op[0] & 2, t.value];
53
- switch (op[0]) {
54
- case 0: case 1: t = op; break;
55
- case 4: _.label++; return { value: op[1], done: false };
56
- case 5: _.label++; y = op[1]; op = [0]; continue;
57
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
58
- default:
59
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
60
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
61
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
62
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
63
- if (t[2]) _.ops.pop();
64
- _.trys.pop(); continue;
65
- }
66
- op = body.call(thisArg, _);
67
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
68
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
69
- }
70
- };
71
- Object.defineProperty(exports, "__esModule", { value: true });
72
- var worker_threads_1 = require("worker_threads");
73
- var index_1 = require("../src/index");
74
- var fs_1 = require("fs");
75
- var path = __importStar(require("path"));
76
- if (!worker_threads_1.parentPort) {
77
- throw new Error('This script must be run as a worker thread.');
78
- }
79
- function processFile(task) {
80
- return __awaiter(this, void 0, void 0, function () {
81
- var file, sourceDir, outputDir, texturesDir, modelTypeToDir, sourcePath, ext, dffBuffer, modelType, targetDirName, destPath, destPath, txdBuffer, textureDictionary, textureNames, error_1;
82
- return __generator(this, function (_a) {
83
- switch (_a.label) {
84
- case 0:
85
- file = task.file, sourceDir = task.sourceDir, outputDir = task.outputDir, texturesDir = task.texturesDir, modelTypeToDir = task.modelTypeToDir;
86
- sourcePath = path.join(sourceDir, file);
87
- ext = path.extname(file).toLowerCase();
88
- _a.label = 1;
89
- case 1:
90
- _a.trys.push([1, 8, , 9]);
91
- if (!(ext === '.dff')) return [3 /*break*/, 4];
92
- return [4 /*yield*/, fs_1.promises.readFile(sourcePath)];
93
- case 2:
94
- dffBuffer = _a.sent();
95
- modelType = new index_1.DffParser(dffBuffer).parse().modelType;
96
- targetDirName = modelTypeToDir[modelType];
97
- destPath = path.join(outputDir, targetDirName, file);
98
- return [4 /*yield*/, fs_1.promises.copyFile(sourcePath, destPath)];
99
- case 3:
100
- _a.sent();
101
- return [2 /*return*/, { type: 'dff', file: file, category: targetDirName }];
102
- case 4:
103
- if (!(ext === '.txd')) return [3 /*break*/, 7];
104
- destPath = path.join(texturesDir, file);
105
- return [4 /*yield*/, fs_1.promises.copyFile(sourcePath, destPath)];
106
- case 5:
107
- _a.sent();
108
- return [4 /*yield*/, fs_1.promises.readFile(sourcePath)];
109
- case 6:
110
- txdBuffer = _a.sent();
111
- textureDictionary = new index_1.TxdParser(txdBuffer).parse().textureDictionary;
112
- textureNames = textureDictionary.textureNatives.map(function (t) { return t.textureName; });
113
- return [2 /*return*/, { type: 'txd', file: file, textures: textureNames }];
114
- case 7: return [3 /*break*/, 9];
115
- case 8:
116
- error_1 = _a.sent();
117
- return [2 /*return*/, { type: 'error', file: file, message: error_1.message }];
118
- case 9: return [2 /*return*/];
119
- }
120
- });
121
- });
122
- }
123
- worker_threads_1.parentPort.on('message', function (task) { return __awaiter(void 0, void 0, void 0, function () {
124
- var result;
125
- return __generator(this, function (_a) {
126
- switch (_a.label) {
127
- case 0:
128
- if (task === null) {
129
- process.exit(0);
130
- }
131
- return [4 /*yield*/, processFile(task)];
132
- case 1:
133
- result = _a.sent();
134
- if (result) {
135
- worker_threads_1.parentPort === null || worker_threads_1.parentPort === void 0 ? void 0 : worker_threads_1.parentPort.postMessage(result);
136
- }
137
- return [2 /*return*/];
138
- }
139
- });
140
- }); });
File without changes
File without changes
File without changes
File without changes