forked from UL-FRI-LGM/RenderCore
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRAWLoader.js
98 lines (79 loc) · 2.55 KB
/
RAWLoader.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import {LoadingManager} from './LoadingManager.js';
import {XHRLoader} from './XHRLoader.js';
export class RAWLoader {
constructor (manager = new LoadingManager()) {
this._manager = (manager !== undefined) ? manager : new LoadingManager();
this._url = undefined;
}
load (url, onLoad, onProgress, onError) {
let loader = new XHRLoader(this._manager, "arraybuffer");
let scope = this;
//loader.setPath(this._path);
loader.load(
url,
function (data) { //XHR poslje ze tak stream v spremenljivki data
scope._url = url;
//console.log(data);
//console.log(data.length);
//let parsedData = scope.parse(data); //slow
let parsedData = scope.parse2(data); //changed XHRLoader to binary (arraybuffer)
onLoad(parsedData);
},
onProgress,
onError
);
}
//FUNC
parse(data){
let dataBuffer = this._stringToBuffer(data); //string
let parsedData;
let urlLowerCase = this._url.toLowerCase();
if(urlLowerCase.includes("uint8")) {
parsedData = new Uint8Array(dataBuffer);
}else if(urlLowerCase.includes("uint16")){
parsedData = new Uint16Array(dataBuffer);
}else if(urlLowerCase.includes("int8")){
parsedData = new Int8Array(dataBuffer);
}else if(urlLowerCase.includes("int16")){
parsedData = new Int16Array(dataBuffer);
}else if(urlLowerCase.includes("float32")){
parsedData = new Float32Array(dataBuffer);
}else if(urlLowerCase.includes("float64")){
parsedData = new Float64Array(dataBuffer);
}else{
parsedData = null;
}
return parsedData;
}
parse2(data){
let dataBuffer = data; //arraybuffer
let parsedData;
let urlLowerCase = this._url.toLowerCase();
if(urlLowerCase.includes("uint8")) {
parsedData = new Uint8Array(dataBuffer);
}else if(urlLowerCase.includes("uint16")){
parsedData = new Uint16Array(dataBuffer);
}else if(urlLowerCase.includes("int8")){
parsedData = new Int8Array(dataBuffer);
}else if(urlLowerCase.includes("int16")){
parsedData = new Int16Array(dataBuffer);
}else if(urlLowerCase.includes("float32")){
parsedData = new Float32Array(dataBuffer);
}else if(urlLowerCase.includes("float64")){
parsedData = new Float64Array(dataBuffer);
}else{
parsedData = null;
}
return parsedData;
}
_stringToBuffer(dataString) {
//let dataSplit = dataString.split("");
//console.log(dataSplit);
let buffer = new ArrayBuffer(dataString.length);
for (let i = 0; i < dataString.length; i++){
//dataSplit[i] = dataSplit[i].charCodeAt(0);
buffer[i] = dataString.charCodeAt(i); //same as: buffer[i] = data[i].charCodeAt(0);
}
return buffer;
}
};