“初始化俯视角工程,带puerts,未编过”
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
/*
|
||||
* Tencent is pleased to support the open source community by making Puerts available.
|
||||
* Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
|
||||
* Puerts is licensed under the BSD 3-Clause License, except for the third-party components listed in the file 'LICENSE' which may be subject to their corresponding license terms.
|
||||
* This file is subject to the terms and conditions defined in file 'LICENSE', which is part of this source code package.
|
||||
*/
|
||||
|
||||
var global = global || (function () { return this; }());
|
||||
(function (global) {
|
||||
"use strict";
|
||||
const Wasm3 = {}
|
||||
|
||||
const Wasm_NewMemory = global.__tgjsWasm_NewMemory
|
||||
global.__tgjsWasm_NewMemory = undefined
|
||||
const Wasm_MemoryGrowth = global.__tgjsWasm_MemoryGrowth
|
||||
global.__tgjsWasm_MemoryGrowth = undefined
|
||||
const Wasm_MemoryBuffer = global.__tgjsWasm_MemoryBuffer
|
||||
global.__tgjsWasm_MemoryBuffer = undefined
|
||||
class Wasm3Memory{
|
||||
constructor({initial, maximum, _Seq}){
|
||||
if(_Seq) {
|
||||
this._Seq = _Seq
|
||||
}else{
|
||||
this._Seq = Wasm_NewMemory(initial, maximum)
|
||||
}
|
||||
}
|
||||
grow(n){
|
||||
Wasm_MemoryGrowth(this._Seq, n)
|
||||
}
|
||||
get buffer(){
|
||||
return Wasm_MemoryBuffer(this._Seq)
|
||||
}
|
||||
}
|
||||
Wasm3.Memory = Wasm3Memory;
|
||||
|
||||
const Wasm_TableGrow = global.__tgjsWasm_TableGrow;
|
||||
global.__tgjsWasm_TableGrow = undefined;
|
||||
const Wasm_TableSet = global.__tgjsWasm_TableSet;
|
||||
global.__tgjsWasm_TableSet = undefined;
|
||||
const Wasm_TableLen = global.__tgjsWasm_TableLen;
|
||||
global.__tgjsWasm_TableLen = undefined;
|
||||
|
||||
class Wasm3Table {
|
||||
grow(n) {
|
||||
if (this._runtimeSeq && typeof this._moduleIndex === 'number') {
|
||||
return Wasm_TableGrow(this._runtimeSeq, this._moduleIndex, n);
|
||||
} else {
|
||||
throw new Error("invalid table");
|
||||
}
|
||||
}
|
||||
|
||||
set(index, fn) {
|
||||
if (this._runtimeSeq && typeof this._moduleIndex === 'number') {
|
||||
return Wasm_TableSet(this._runtimeSeq, this._moduleIndex, index, fn);
|
||||
} else {
|
||||
throw new Error("invalid table");
|
||||
}
|
||||
}
|
||||
|
||||
get(index) {
|
||||
throw new Error("not implemented in wasm3 version");
|
||||
}
|
||||
|
||||
get length() {
|
||||
if (this._runtimeSeq && typeof this._moduleIndex === 'number') {
|
||||
return Wasm_TableLen(this._runtimeSeq, this._moduleIndex);
|
||||
} else {
|
||||
throw new Error("invalid table");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Wasm3.Table = Wasm3Table;
|
||||
|
||||
class Wasm3Module{
|
||||
constructor(bufferSource){
|
||||
this._bufferSouce = bufferSource;//bufferSource is arraybuffer or typedarray
|
||||
}
|
||||
}
|
||||
Wasm3.Module = Wasm3Module
|
||||
|
||||
const Wasm_Instance = global.__tgjsWasm_Instance
|
||||
global.__tgjsWasm_Instance = undefined
|
||||
class Wasm3ModuleInstance{
|
||||
constructor(InWasm3Module, importObject){
|
||||
this.exports = {}
|
||||
this._Seq = Wasm_Instance(InWasm3Module._bufferSouce, importObject, this.exports)
|
||||
if (this.exports.__memoryExport) {
|
||||
this.exports[this.exports.__memoryExport] = new Wasm3Memory({_Seq:this._Seq});
|
||||
this.exports.__memoryExport = undefined;
|
||||
}
|
||||
if (this.exports.__tableExport && typeof this.exports.__moduleIndex === 'number') {
|
||||
var tbl = new Wasm3Table();
|
||||
tbl._runtimeSeq = this._Seq;
|
||||
tbl._moduleIndex = this.exports.__moduleIndex;
|
||||
this.exports[this.exports.__tableExport] = tbl;
|
||||
this.exports.__tableExport = undefined;
|
||||
this.exports.__moduleIndex = undefined;
|
||||
} else {
|
||||
for(var k in importObject) {
|
||||
var tbl = importObject[k];
|
||||
if (tbl instanceof Wasm3Table) {
|
||||
tbl._runtimeSeq = this._Seq;
|
||||
tbl._moduleIndex = this.exports.__moduleIndex;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Wasm3.instantiate = function(bufferSource, importObject){
|
||||
return new Promise((resolve, reject)=>{
|
||||
const ins = new Wasm3ModuleInstance(new Wasm3Module(bufferSource), importObject)
|
||||
resolve(ins)
|
||||
})
|
||||
}
|
||||
Wasm3.Instance = Wasm3ModuleInstance;
|
||||
|
||||
const __tgjsWasm_OverrideWebAssembly = global.__tgjsWasm_OverrideWebAssembly
|
||||
global.__tgjsWasm_OverrideWebAssembly = undefined
|
||||
if(__tgjsWasm_OverrideWebAssembly()){
|
||||
global.WebAssembly = Wasm3
|
||||
}
|
||||
|
||||
/*setTimeout(()=>{
|
||||
const ProjDir = require('ue').BlueprintPathsLibrary.ProjectDir();
|
||||
global.WebAssembly.instantiate(require('ue').MHScriptIO.ReadFileAsArrayBuffer(`${ProjDir}/Content/JavaScript/wasm/test.wasm`), {
|
||||
env:
|
||||
{
|
||||
ImportFunction_Int : function(intValue, floatValue, doubleValue){
|
||||
console.log("ffffffffffffffffffffffffffffffffffffffffffff")
|
||||
console.log(typeof intValue, intValue)
|
||||
console.log(typeof floatValue, floatValue)
|
||||
console.log(typeof doubleValue, doubleValue)
|
||||
return 1
|
||||
},
|
||||
atan2 : function(x, y){
|
||||
return Math.atan2(x, y)
|
||||
}
|
||||
}
|
||||
}).then((inst)=>{
|
||||
const e = inst.exports
|
||||
console.log("kkkk", e.TestParam(1, 3, 4))
|
||||
{
|
||||
const a = new Date().getTime()
|
||||
for(let i = 0; i < 1000000; ++i){
|
||||
e.atan2_ue(0.1, 0.1)
|
||||
}
|
||||
const b = new Date().getTime()
|
||||
console.log("ffffffffffffffffffff ue", b - a)
|
||||
}
|
||||
|
||||
{
|
||||
const a = new Date().getTime()
|
||||
for(let i = 0; i < 1000000; ++i){
|
||||
e.atan2_js(0.1, 0.1)
|
||||
}
|
||||
const b = new Date().getTime()
|
||||
console.log("ffffffffffffffffffff ue", b - a)
|
||||
}
|
||||
})
|
||||
}, 1)*/
|
||||
}(global));
|
||||
Reference in New Issue
Block a user