mirror of
https://github.com/wechat-miniprogram/minigame-tuanjie-transform-sdk.git
synced 2025-11-13 03:35:55 +08:00
Auto-publish.
This commit is contained in:
parent
8b0fd4f7e3
commit
2fc94b5ff1
@ -119,6 +119,7 @@ namespace WeChatWASM
|
||||
CheckBuildTarget();
|
||||
Init();
|
||||
ProcessWxPerfBinaries();
|
||||
MakeEnvForLuaAdaptor();
|
||||
// JSLib
|
||||
SettingWXTextureMinJSLib();
|
||||
UpdateGraphicAPI();
|
||||
@ -242,7 +243,7 @@ namespace WeChatWASM
|
||||
try
|
||||
{
|
||||
string metaPath = AssetDatabase.GetTextMetaFilePathFromAssetPath(inAssetPath); // 获取.meta文件的路径
|
||||
string enableFlagStr = inEnabled ? "1" : "0";
|
||||
string enableFlagStr = inEnabled? "1" : "0";
|
||||
|
||||
// 读取.meta文件
|
||||
// 处理WebGL
|
||||
@ -313,7 +314,7 @@ namespace WeChatWASM
|
||||
#else
|
||||
wxPerf2022Importer.SetCompatibleWithPlatform(BuildTarget.WebGL, bShouldEnablePerf2022Plugin);
|
||||
#endif
|
||||
SetPluginCompatibilityByModifyingMetadataFile(wxPerfPlugins[1], bShouldEnablePerf2022Plugin);
|
||||
SetPluginCompatibilityByModifyingMetadataFile(wxPerfPlugins[1], bShouldEnablePerf2022Plugin);
|
||||
}
|
||||
|
||||
{
|
||||
@ -331,6 +332,127 @@ namespace WeChatWASM
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
|
||||
/**
|
||||
* Lua Adaptor Settings.
|
||||
*/
|
||||
|
||||
private static bool GetRequiredLuaHeaderFiles(out Dictionary<string, string> luaPaths)
|
||||
{
|
||||
luaPaths = new Dictionary<string, string>()
|
||||
{
|
||||
{"lua.h", null},
|
||||
{"lobject.h", null},
|
||||
{"lstate.h", null},
|
||||
{"lfunc.h", null},
|
||||
{"lapi.h", null},
|
||||
{"lstring.h", null},
|
||||
{"ltable.h", null},
|
||||
{"lauxlib.h", null},
|
||||
};
|
||||
|
||||
string rootPath = Directory.GetParent(Application.dataPath).ToString();
|
||||
string[] paths = Directory.GetFiles(rootPath, "*.h", SearchOption.AllDirectories);
|
||||
foreach (var path in paths)
|
||||
{
|
||||
string filename = Path.GetFileName(path);
|
||||
if (luaPaths.ContainsKey(Path.GetFileName(path)))
|
||||
{
|
||||
luaPaths[filename] = path;
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var expectFile in luaPaths)
|
||||
{
|
||||
if (expectFile.Value == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private static string GetLuaAdaptorPath(string filename)
|
||||
{
|
||||
string DS = WXAssetsTextTools.DS;
|
||||
if (UnityUtil.GetSDKMode() == UnityUtil.SDKMode.Package)
|
||||
{
|
||||
return $"Packages{DS}com.qq.weixin.minigame{DS}Runtime{DS}Plugins{DS}LuaAdaptor{DS}{filename}";
|
||||
}
|
||||
|
||||
return $"Assets{DS}WX-WASM-SDK-V2{DS}Runtime{DS}Plugins{DS}LuaAdaptor{DS}{filename}";
|
||||
}
|
||||
|
||||
private static void MakeLuaImport(Dictionary<string, string> luaPaths)
|
||||
{
|
||||
string luaAdaptorImportHeaderPath = GetLuaAdaptorPath("lua_adaptor_import.h");
|
||||
if (!File.Exists(luaAdaptorImportHeaderPath))
|
||||
{
|
||||
Debug.LogError("Lua Adaptor File Not Found: " + luaAdaptorImportHeaderPath);
|
||||
return;
|
||||
}
|
||||
|
||||
string includeLuaContent = "//EMSCRIPTEN_ENV_LUA_IMPORT_LOGIC_START";
|
||||
foreach (var luaPath in luaPaths)
|
||||
{
|
||||
includeLuaContent += $"\n#include \"{luaPath.Value.Replace("\\", "\\\\")}\"";
|
||||
}
|
||||
includeLuaContent += "\n//EMSCRIPTEN_ENV_LUA_IMPORT_LOGIC_END";
|
||||
|
||||
string importHeaderContent = File.ReadAllText(luaAdaptorImportHeaderPath);
|
||||
importHeaderContent = Regex.Replace(
|
||||
importHeaderContent,
|
||||
"//EMSCRIPTEN_ENV_LUA_IMPORT_LOGIC_START([\\s\\S]*?)//EMSCRIPTEN_ENV_LUA_IMPORT_LOGIC_END",
|
||||
includeLuaContent
|
||||
);
|
||||
|
||||
File.WriteAllText(luaAdaptorImportHeaderPath, importHeaderContent);
|
||||
}
|
||||
|
||||
private static void ManageLuaAdaptorBuildOptions(bool shouldBuild) {
|
||||
string[] maybeBuildFiles = new string[]
|
||||
{
|
||||
"lua_adaptor_501.c",
|
||||
"lua_adaptor_503.c",
|
||||
"lua_adaptor_comm.c",
|
||||
"lua_adaptor_import.h",
|
||||
};
|
||||
|
||||
foreach (var maybeBuildFile in maybeBuildFiles)
|
||||
{
|
||||
string path = GetLuaAdaptorPath(maybeBuildFile);
|
||||
if (!File.Exists(path) && shouldBuild)
|
||||
{
|
||||
Debug.LogError("Lua Adaptor File Not Found: " + maybeBuildFile);
|
||||
continue;
|
||||
}
|
||||
|
||||
var wxPerfJSBridgeImporter = AssetImporter.GetAtPath(path) as PluginImporter;
|
||||
if (wxPerfJSBridgeImporter == null)
|
||||
{
|
||||
Debug.LogError("Lua Adaptor Importer Not Found: " + maybeBuildFile);
|
||||
continue;
|
||||
}
|
||||
#if PLATFORM_WEIXINMINIGAME
|
||||
wxPerfJSBridgeImporter.SetCompatibleWithPlatform(BuildTarget.WeixinMiniGame, shouldBuild);
|
||||
#else
|
||||
wxPerfJSBridgeImporter.SetCompatibleWithPlatform(BuildTarget.WebGL, shouldBuild);
|
||||
#endif
|
||||
SetPluginCompatibilityByModifyingMetadataFile(path, shouldBuild);
|
||||
}
|
||||
}
|
||||
|
||||
private static void MakeEnvForLuaAdaptor()
|
||||
{
|
||||
bool hasLuaEnv = GetRequiredLuaHeaderFiles(out var luaPaths);
|
||||
if (hasLuaEnv)
|
||||
{
|
||||
MakeLuaImport(luaPaths);
|
||||
}
|
||||
|
||||
ManageLuaAdaptorBuildOptions(hasLuaEnv && config.CompileOptions.enablePerfAnalysis);
|
||||
}
|
||||
|
||||
private static bool IsCompatibleWithUnity202203OrNewer()
|
||||
{
|
||||
#if UNITY_2022_3_OR_NEWER
|
||||
@ -642,7 +764,7 @@ namespace WeChatWASM
|
||||
|
||||
var header = "var OriginalAudioContext = window.AudioContext || window.webkitAudioContext;window.AudioContext = function() {if (this instanceof window.AudioContext) {return wx.createWebAudioContext();} else {return new OriginalAudioContext();}};";
|
||||
|
||||
if (config.CompileOptions.DevelopBuild)
|
||||
if (config.CompileOptions.DevelopBuild && config.CompileOptions.enablePerfAnalysis)
|
||||
{
|
||||
header = header + RenderAnalysisRules.header;
|
||||
for (i = 0; i < RenderAnalysisRules.rules.Length; i++)
|
||||
@ -885,7 +1007,7 @@ namespace WeChatWASM
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 等brotli之后,统计下资源包加brotli压缩后代码包是否超过了20M(小游戏代码分包总大小限制)
|
||||
/// 等brotli之后,统计下资源包加brotli压缩后代码包是否超过了30M(小游戏代码分包总大小限制)
|
||||
/// </summary>
|
||||
private static void convertDataPackage(bool brotliError)
|
||||
{
|
||||
@ -956,8 +1078,8 @@ namespace WeChatWASM
|
||||
// 计算首资源包大小
|
||||
var tempDataInfo = new FileInfo(tempDataPath);
|
||||
var tempFileSize = tempDataInfo.Length.ToString();
|
||||
// 胶水层及sdk可能占一定大小,粗略按照1M来算,则剩余19M
|
||||
if (brcodeSize + int.Parse(tempFileSize) > (20 - 1) * 1024 * 1024)
|
||||
// 胶水层及sdk可能占一定大小,粗略按照1M来算,则剩余29M
|
||||
if (brcodeSize + int.Parse(tempFileSize) > (30 - 1) * 1024 * 1024)
|
||||
{
|
||||
config.ProjectConf.assetLoadType = 0;
|
||||
Debug.LogError("资源文件过大,不适宜用放小游戏包内加载,请上传资源文件到CDN");
|
||||
|
||||
@ -720,7 +720,20 @@ namespace WeChatWASM
|
||||
{
|
||||
const string MACRO_ENABLE_WX_PERF_FEATURE = "ENABLE_WX_PERF_FEATURE";
|
||||
string defineSymbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
|
||||
if (this.getDataCheckbox("enablePerfAnalysis") && this.getDataCheckbox("developBuild"))
|
||||
|
||||
bool shouldAddSymbol = this.getDataCheckbox("enablePerfAnalysis") && this.getDataCheckbox("developBuild");
|
||||
|
||||
#if !UNITY_2021_2_OR_NEWER || UNITY_2023_2_OR_NEWER
|
||||
if(shouldAddSymbol)
|
||||
{
|
||||
shouldAddSymbol = false;
|
||||
EditorUtility.DisplayDialog("警告", $"当前Unity版本({Application.unityVersion})不在性能分析工具适配范围内(2021.2-2023.1), 性能分析工具将被禁用。", "确定");
|
||||
config.CompileOptions.enablePerfAnalysis = false;
|
||||
this.setData("enablePerfAnalysis", false);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (shouldAddSymbol)
|
||||
{
|
||||
if (defineSymbols.IndexOf(MACRO_ENABLE_WX_PERF_FEATURE) == -1)
|
||||
{
|
||||
|
||||
@ -2,7 +2,7 @@ namespace WeChatWASM
|
||||
{
|
||||
public class WXPluginVersion
|
||||
{
|
||||
public static string pluginVersion = "202411191108"; // 这一行不要改他,导出的时候会自动替换
|
||||
public static string pluginVersion = "202411210636"; // 这一行不要改他,导出的时候会自动替换
|
||||
}
|
||||
|
||||
public class WXPluginConf
|
||||
|
||||
Binary file not shown.
8
Runtime/Plugins/LuaAdaptor.meta
Normal file
8
Runtime/Plugins/LuaAdaptor.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d3b689e5d408dbed9ed74e621b4a87bd
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
141
Runtime/Plugins/LuaAdaptor/lua_adaptor_501.c
Normal file
141
Runtime/Plugins/LuaAdaptor/lua_adaptor_501.c
Normal file
@ -0,0 +1,141 @@
|
||||
#include "lua_adaptor_import.h"
|
||||
|
||||
#if LUA_VERSION_NUM == 501
|
||||
static TValue* lua_index2addr(lua_State* L, int idx)
|
||||
{
|
||||
CallInfo* ci = L->ci;
|
||||
if (idx > 0)
|
||||
{
|
||||
TValue* o = ci->func + idx;
|
||||
// api_check(L, idx <= ci->top - (ci->func + 1), "unacceptable index");
|
||||
if (o >= L->top) return NONVALIDVALUE;
|
||||
else return o;
|
||||
}
|
||||
else if (!ispseudo(idx))
|
||||
{
|
||||
/* negative index */
|
||||
// api_check(L, idx != 0 && -idx <= L->top - (ci->func + 1), "invalid index");
|
||||
return L->top + idx;
|
||||
}
|
||||
else if (idx == LUA_REGISTRYINDEX)
|
||||
return &G(L)->l_registry;
|
||||
else
|
||||
{
|
||||
/* upvalues */
|
||||
idx = LUA_REGISTRYINDEX - idx;
|
||||
// api_check(L, idx <= MAXUPVAL + 1, "upvalue index too large");
|
||||
if (iscfunction(ci->func))
|
||||
return NONVALIDVALUE;
|
||||
else
|
||||
{
|
||||
CClosure* func = &ci->func->value.gc->cl.c;
|
||||
return (idx <= func->nupvalues) ? &func->upvalue[idx - 1] : NONVALIDVALUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
size_t lua_sizeof(lua_State* L, int idx){
|
||||
const char* tn = lua_typename(L, lua_type(L, -1));
|
||||
TValue* o = lua_index2addr(L, idx);
|
||||
if (!o)
|
||||
return 0;
|
||||
|
||||
switch (ttype(o))
|
||||
{
|
||||
|
||||
case LUA_TTABLE:
|
||||
{
|
||||
luaL_checkstack(L, LUA_MINSTACK, NULL);
|
||||
Table* h = hvalue(o);
|
||||
if (h == NULL) {
|
||||
return 0;
|
||||
}
|
||||
return (sizeof(Table) + sizeof(TValue) * h->sizearray +
|
||||
sizeof(Node) * (sizenode(h)));
|
||||
}
|
||||
case LUA_TFUNCTION:
|
||||
{
|
||||
if (iscfunction(o)) {
|
||||
return sizeCclosure(o->value.gc->cl.c.nupvalues);
|
||||
} else {
|
||||
return sizeLclosure(o->value.gc->cl.l.nupvalues);
|
||||
}
|
||||
}
|
||||
case LUA_TTHREAD:
|
||||
{
|
||||
lua_State* th = thvalue(o);
|
||||
|
||||
return (sizeof(lua_State) + sizeof(TValue) * th->stacksize +
|
||||
sizeof(CallInfo) * th->size_ci);
|
||||
}
|
||||
case LUA_TPROTO:
|
||||
{
|
||||
Proto* p = (Proto*)pvalue(o);
|
||||
return (sizeof(Proto) +
|
||||
sizeof(Instruction) * p->sizecode +
|
||||
sizeof(Proto*) * p->sizep +
|
||||
sizeof(TValue) * p->sizek +
|
||||
sizeof(int) * p->sizelineinfo +
|
||||
sizeof(LocVar) * p->sizelocvars +
|
||||
sizeof(TString*) * p->sizeupvalues);
|
||||
}
|
||||
|
||||
case LUA_TUSERDATA:
|
||||
{
|
||||
return sizeudata(uvalue(o));
|
||||
}
|
||||
case LUA_TSTRING:
|
||||
{
|
||||
TString* ts = &o->value.gc->ts;
|
||||
return sizeof(TString) + sizeof(char) * ts->tsv.len + 1;
|
||||
}
|
||||
case LUA_TNUMBER:
|
||||
{
|
||||
return sizeof(lua_Number);
|
||||
}
|
||||
case LUA_TBOOLEAN:
|
||||
{
|
||||
return sizeof(int);
|
||||
}
|
||||
case LUA_TLIGHTUSERDATA:
|
||||
{
|
||||
return sizeof(void*);
|
||||
}
|
||||
default: return (size_t)(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
uintptr_t lua_getaddr(lua_State* L, int idx) {
|
||||
TValue* o = lua_index2addr(L, idx);
|
||||
if (!o)
|
||||
return (uintptr_t)(lua_topointer(L, -1));
|
||||
|
||||
switch (ttype(o))
|
||||
{
|
||||
case LUA_TPROTO:
|
||||
{
|
||||
return (uintptr_t)(pvalue(o));
|
||||
}
|
||||
case LUA_TSTRING:
|
||||
{
|
||||
return (uintptr_t)(getstr(o));
|
||||
}
|
||||
case LUA_TTABLE:
|
||||
case LUA_TFUNCTION:
|
||||
case LUA_TTHREAD:
|
||||
case LUA_TUSERDATA:
|
||||
case LUA_TLIGHTUSERDATA:
|
||||
default: {
|
||||
return (uintptr_t)(lua_topointer(L, -1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int (lua_getuservalue) (lua_State *L, int idx) {
|
||||
lua_pushnil(L);
|
||||
}
|
||||
|
||||
#endif
|
||||
74
Runtime/Plugins/LuaAdaptor/lua_adaptor_501.c.meta
Normal file
74
Runtime/Plugins/LuaAdaptor/lua_adaptor_501.c.meta
Normal file
@ -0,0 +1,74 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 596142b9479e1ab4caaf44c77d5a7d8f
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 1
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
: Any
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
Exclude Editor: 1
|
||||
Exclude Linux64: 1
|
||||
Exclude OSXUniversal: 1
|
||||
Exclude WebGL: 1
|
||||
Exclude Win: 1
|
||||
Exclude Win64: 1
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
DefaultValueInitialized: true
|
||||
OS: AnyOS
|
||||
- first:
|
||||
Standalone: Linux64
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: OSXUniversal
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: Win
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: Win64
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
WebGL: WebGL
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
WeixinMiniGame: WeixinMiniGame
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
161
Runtime/Plugins/LuaAdaptor/lua_adaptor_503.c
Normal file
161
Runtime/Plugins/LuaAdaptor/lua_adaptor_503.c
Normal file
@ -0,0 +1,161 @@
|
||||
#include "lua_adaptor_import.h"
|
||||
|
||||
#if LUA_VERSION_NUM == 503
|
||||
|
||||
#define GETTVALUE(v) v
|
||||
#define tvtype(o) ttnov(o)
|
||||
#define LUA_PROTO LUA_TPROTO
|
||||
#define LUA_UPVAL LUA_TUPVAL
|
||||
#define LUA_TABLE LUA_TTABLE
|
||||
#define LUA_THREAD LUA_TTHREAD
|
||||
#define LUA_USERDATA LUA_TUSERDATA
|
||||
#define LUA_LIGHTUSERDATA LUA_TLIGHTUSERDATA
|
||||
#define LUA_SHRSTR LUA_TSHRSTR
|
||||
#define LUA_LNGSTR LUA_TLNGSTR
|
||||
#define LUA_LCL LUA_TLCL
|
||||
#define LUA_CCL LUA_TCCL
|
||||
#define LUA_LCF LUA_TLCF
|
||||
#define LUA_IS_LUA_C_FUNCTION(f) (ttislcf(f))
|
||||
#define LUA_C_CLUSTER_VALUE(f) (clCvalue(f))
|
||||
|
||||
static TValue* lua_index2addr(lua_State* L, int idx)
|
||||
{
|
||||
CallInfo* ci = L->ci;
|
||||
if (idx > 0)
|
||||
{
|
||||
TValue* o = GETTVALUE(ci->func + idx);
|
||||
api_check(L, idx <= ci->top - (ci->func + 1), "unacceptable index");
|
||||
if (o >= GETTVALUE(L->top)) return NONVALIDVALUE;
|
||||
else return o;
|
||||
}
|
||||
else if (!ispseudo(idx))
|
||||
{
|
||||
/* negative index */
|
||||
api_check(L, idx != 0 && -idx <= L->top - (ci->func + 1), "invalid index");
|
||||
return GETTVALUE(L->top + idx);
|
||||
}
|
||||
else if (idx == LUA_REGISTRYINDEX)
|
||||
return &G(L)->l_registry;
|
||||
else
|
||||
{
|
||||
/* upvalues */
|
||||
idx = LUA_REGISTRYINDEX - idx;
|
||||
api_check(L, idx <= MAXUPVAL + 1, "upvalue index too large");
|
||||
if (LUA_IS_LUA_C_FUNCTION(GETTVALUE(ci->func)))
|
||||
return NONVALIDVALUE;
|
||||
else
|
||||
{
|
||||
CClosure* func = LUA_C_CLUSTER_VALUE(GETTVALUE(ci->func));
|
||||
return (idx <= func->nupvalues) ? &func->upvalue[idx - 1] : NONVALIDVALUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uintptr_t lua_getaddr(lua_State* L, int idx) {
|
||||
TValue* o = lua_index2addr(L, idx);
|
||||
if (!o)
|
||||
return (uintptr_t)(lua_topointer(L, -1));
|
||||
|
||||
switch (tvtype(o))
|
||||
{
|
||||
case LUA_TPROTO:
|
||||
{
|
||||
return (uintptr_t)(pvalue(o));
|
||||
}
|
||||
case LUA_SHRSTR:
|
||||
case LUA_LNGSTR:
|
||||
{
|
||||
return (uintptr_t)(tsvalue(o));
|
||||
}
|
||||
case LUA_TTABLE:
|
||||
case LUA_LCL:
|
||||
case LUA_CCL:
|
||||
case LUA_LCF:
|
||||
case LUA_TTHREAD:
|
||||
case LUA_TUSERDATA:
|
||||
case LUA_TLIGHTUSERDATA:
|
||||
default: {
|
||||
return (uintptr_t)(lua_topointer(L, -1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
size_t lua_sizeof(lua_State* L, int idx){
|
||||
const char* tn = lua_typename(L, lua_type(L, -1));
|
||||
TValue* o = lua_index2addr(L, idx);
|
||||
if (!o)
|
||||
return 0;
|
||||
|
||||
switch (tvtype(o))
|
||||
{
|
||||
|
||||
case LUA_TABLE:
|
||||
{
|
||||
luaL_checkstack(L, LUA_MINSTACK, NULL);
|
||||
Table* h = hvalue(o);
|
||||
if (h == NULL) {
|
||||
return 0;
|
||||
}
|
||||
return (sizeof(Table) + sizeof(TValue) * h->sizearray +
|
||||
sizeof(Node) * (isdummy(h) ? 0 : sizenode(h)));
|
||||
}
|
||||
case LUA_LCL:
|
||||
{
|
||||
LClosure* cl = clLvalue(o);
|
||||
return sizeLclosure(cl->nupvalues);
|
||||
}
|
||||
case LUA_CCL:
|
||||
{
|
||||
CClosure* cl = clCvalue(o);
|
||||
return sizeCclosure(cl->nupvalues);
|
||||
}
|
||||
case LUA_TTHREAD:
|
||||
{
|
||||
lua_State* th = thvalue(o);
|
||||
|
||||
return (sizeof(lua_State) + sizeof(TValue) * th->stacksize +
|
||||
sizeof(CallInfo) * th->nci);
|
||||
}
|
||||
case LUA_PROTO:
|
||||
{
|
||||
Proto* p = (Proto*)pvalue(o);
|
||||
return (sizeof(Proto) +
|
||||
sizeof(Instruction) * p->sizecode +
|
||||
sizeof(Proto*) * p->sizep +
|
||||
sizeof(TValue) * p->sizek +
|
||||
sizeof(int) * p->sizelineinfo +
|
||||
sizeof(LocVar) * p->sizelocvars +
|
||||
sizeof(TString*) * p->sizeupvalues);
|
||||
}
|
||||
|
||||
case LUA_USERDATA:
|
||||
{
|
||||
return sizeudata(uvalue(o));
|
||||
}
|
||||
case LUA_SHRSTR:
|
||||
{
|
||||
TString* ts = gco2ts(o);
|
||||
return sizelstring(ts->shrlen);
|
||||
}
|
||||
case LUA_LNGSTR:
|
||||
{
|
||||
TString* ts = gco2ts(o);
|
||||
return sizelstring(ts->u.lnglen);
|
||||
}
|
||||
case LUA_TNUMBER:
|
||||
{
|
||||
return sizeof(lua_Number);
|
||||
}
|
||||
case LUA_TBOOLEAN:
|
||||
{
|
||||
return sizeof(int);
|
||||
}
|
||||
case LUA_LIGHTUSERDATA:
|
||||
{
|
||||
return sizeof(void*);
|
||||
}
|
||||
default: return (size_t)(0);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
74
Runtime/Plugins/LuaAdaptor/lua_adaptor_503.c.meta
Normal file
74
Runtime/Plugins/LuaAdaptor/lua_adaptor_503.c.meta
Normal file
@ -0,0 +1,74 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 798157947f88e004d938d2092163d6eb
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 1
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
: Any
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
Exclude Editor: 1
|
||||
Exclude Linux64: 1
|
||||
Exclude OSXUniversal: 1
|
||||
Exclude WebGL: 1
|
||||
Exclude Win: 1
|
||||
Exclude Win64: 1
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
DefaultValueInitialized: true
|
||||
OS: AnyOS
|
||||
- first:
|
||||
Standalone: Linux64
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: OSXUniversal
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: Win
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: Win64
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
WebGL: WebGL
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
WeixinMiniGame: WeixinMiniGame
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
20
Runtime/Plugins/LuaAdaptor/lua_adaptor_comm.c
Normal file
20
Runtime/Plugins/LuaAdaptor/lua_adaptor_comm.c
Normal file
@ -0,0 +1,20 @@
|
||||
#include "lua_adaptor_import.h"
|
||||
|
||||
lua_Debug* lua_newdebugar() { return malloc(sizeof(lua_Debug)); }
|
||||
void lua_deletedebugar(lua_Debug* ar) { return free(ar); }
|
||||
|
||||
const char* lua_Debug_getname(lua_Debug* ar) { return ar->name; }
|
||||
char* lua_Debug_getshortsrc(lua_Debug* ar) { return ar->short_src; }
|
||||
int lua_Debug_getevent(lua_Debug* ar) { return ar->event; }
|
||||
int lua_Debug_getlinedefined(lua_Debug* ar) { return ar->linedefined; }
|
||||
int lua_Debug_getlastlinedefined(lua_Debug* ar) { return ar->lastlinedefined; }
|
||||
|
||||
int lua_get_registry_index() { return LUA_REGISTRYINDEX; }
|
||||
double lua_todouble(lua_State *L, int idx) { return (double)lua_tonumber(L, idx); }
|
||||
|
||||
|
||||
lua_State* lua_State_getmainthread(lua_State* L) { return G(L)->mainthread; }
|
||||
|
||||
void (lua_do_sethook) (lua_State *L, lua_Hook func, int mask, int count) {
|
||||
lua_sethook(L, func, mask, count);
|
||||
}
|
||||
74
Runtime/Plugins/LuaAdaptor/lua_adaptor_comm.c.meta
Normal file
74
Runtime/Plugins/LuaAdaptor/lua_adaptor_comm.c.meta
Normal file
@ -0,0 +1,74 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2c61fe7994a261a48a95348a09bd839a
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 1
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
: Any
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
Exclude Editor: 1
|
||||
Exclude Linux64: 1
|
||||
Exclude OSXUniversal: 1
|
||||
Exclude WebGL: 1
|
||||
Exclude Win: 1
|
||||
Exclude Win64: 1
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
DefaultValueInitialized: true
|
||||
OS: AnyOS
|
||||
- first:
|
||||
Standalone: Linux64
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: OSXUniversal
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: Win
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: Win64
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
WebGL: WebGL
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
WeixinMiniGame: WeixinMiniGame
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
33
Runtime/Plugins/LuaAdaptor/lua_adaptor_import.h
Normal file
33
Runtime/Plugins/LuaAdaptor/lua_adaptor_import.h
Normal file
@ -0,0 +1,33 @@
|
||||
#pragma once
|
||||
|
||||
#include "stdint.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
/* value at a non-valid index */
|
||||
#define NONVALIDVALUE NULL//cast(TValue *, luaO_nilobject)
|
||||
|
||||
/* test for pseudo index */
|
||||
#define ispseudo(i) ((i) <= LUA_REGISTRYINDEX)
|
||||
|
||||
#if LOCAL_DEBUG_USE_LUA_VERSION == 503
|
||||
#include "lua53/lua.h"
|
||||
#include "lua53/lobject.h"
|
||||
#include "lua53/lstate.h"
|
||||
#include "lua53/lfunc.h"
|
||||
#include "lua53/lapi.h"
|
||||
#include "lua53/lstring.h"
|
||||
#include "lua53/ltable.h"
|
||||
#include "lua53/lauxlib.h"
|
||||
#elif LOCAL_DEBUG_USE_LUA_VERSION == 501
|
||||
#include "lua51/lua.h"
|
||||
#include "lua51/lobject.h"
|
||||
#include "lua51/lstate.h"
|
||||
#include "lua51/lfunc.h"
|
||||
#include "lua51/lapi.h"
|
||||
#include "lua51/lstring.h"
|
||||
#include "lua51/ltable.h"
|
||||
#include "lua51/lauxlib.h"
|
||||
#elif __EMSCRIPTEN__
|
||||
//EMSCRIPTEN_ENV_LUA_IMPORT_LOGIC_START
|
||||
//EMSCRIPTEN_ENV_LUA_IMPORT_LOGIC_END
|
||||
#endif
|
||||
74
Runtime/Plugins/LuaAdaptor/lua_adaptor_import.h.meta
Normal file
74
Runtime/Plugins/LuaAdaptor/lua_adaptor_import.h.meta
Normal file
@ -0,0 +1,74 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 169ebbbcd2d6ffd4180f421d0ae2bd33
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 1
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
: Any
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
Exclude Editor: 1
|
||||
Exclude Linux64: 1
|
||||
Exclude OSXUniversal: 1
|
||||
Exclude WebGL: 1
|
||||
Exclude Win: 1
|
||||
Exclude Win64: 1
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
DefaultValueInitialized: true
|
||||
OS: AnyOS
|
||||
- first:
|
||||
Standalone: Linux64
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: OSXUniversal
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: Win
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: Win64
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
WebGL: WebGL
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
WeixinMiniGame: WeixinMiniGame
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -81,5 +81,18 @@ mergeInto(LibraryManager.library, {
|
||||
const content = UTF8ToString(dataPtr);
|
||||
GameGlobal.manager.profiler.uploadStringWithDir({'str': content, 'len': bufSize, 'fileName': name, 'uploadDir': dir, 'cb': _JSProfilerUploadStringWithDirCallback});
|
||||
//}
|
||||
},
|
||||
|
||||
JSExportFromIDBFS: function(idbfsPath, targetPath, snapshotFileName, frameIdx) {
|
||||
const idbfsPathStr = UTF8ToString(idbfsPath);
|
||||
const targetPathStr = UTF8ToString(targetPath);
|
||||
const fileName = UTF8ToString(snapshotFileName);
|
||||
GameGlobal.manager.profiler.uploadSnapshotBuffer({
|
||||
'fileName': fileName,
|
||||
'uploadSnapshotPath': targetPathStr,
|
||||
'frameIdx': frameIdx,
|
||||
'idbfsPathStr': idbfsPathStr,
|
||||
'targetPathStr': targetPathStr
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
Binary file not shown.
@ -14,5 +14,27 @@
|
||||
If the provided annotation string is null or empty, an error message will be logged.
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="M:WXSDKPerf.WXPerfEngine_Implementation.DeclareCustomStatInfo(System.String,System.String,System.Int32)">
|
||||
<summary>
|
||||
声明自定义性能指标
|
||||
</summary>
|
||||
<param name="inStatName">性能指标名称</param>
|
||||
<param name="inStatCategory">性能指标类别</param>
|
||||
<param name="inStatInterpType">性能指标展示方式,1. 线性插值;2. Step插值;0. 只显示单一值</param>
|
||||
</member>
|
||||
<member name="M:WXSDKPerf.WXPerfEngine_Implementation.SetCustomStatInfo(System.String,System.Single)">
|
||||
<summary>
|
||||
设置自定义性能值,目前只支持浮点数
|
||||
</summary>
|
||||
<param name="inStatName">性能指标名称</param>
|
||||
<param name="inValue">性能指标数值</param>
|
||||
</member>
|
||||
<member name="M:WXSDKPerf.WXPerfEngine_Implementation.SetLuaState(System.IntPtr)">
|
||||
<summary>
|
||||
指定luaState
|
||||
</summary>
|
||||
<param name="L">luaState</param>
|
||||
</member>
|
||||
<!-- Badly formed XML comment ignored for member "M:WXSDKPerf.WXPerfEngine_Implementation.AddCustomStatInfoBy(System.String,System.Single)" -->
|
||||
</members>
|
||||
</doc>
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -16,12 +16,21 @@ PluginImporter:
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
Exclude Android: 1
|
||||
Exclude Editor: 1
|
||||
Exclude Linux64: 1
|
||||
Exclude OSXUniversal: 1
|
||||
Exclude WebGL: 1
|
||||
Exclude Win: 1
|
||||
Exclude Win64: 1
|
||||
Exclude WindowsStoreApps: 1
|
||||
- first:
|
||||
Android: Android
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
AndroidSharedLibraryType: Executable
|
||||
CPU: ARMv7
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
@ -69,6 +78,16 @@ PluginImporter:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Windows Store Apps: WindowsStoreApps
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
DontProcess: false
|
||||
PlaceholderPath:
|
||||
SDK: AnySDK
|
||||
ScriptingBackend: AnyScriptingBackend
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
||||
Binary file not shown.
@ -871,13 +871,10 @@ namespace WeChatWASM
|
||||
var abBytes = Unity.FontABTool.UnityFontABTool.PacKFontAB(inFontData, "WXFont", fSize * (Math.Abs(ascent) + Math.Abs(descent) + Math.Abs(lineGap)), fSize, fSize * ascent, fSize * descent);
|
||||
try
|
||||
{
|
||||
Debug.Log($"GetWXFont success, abBytes:{abBytes.Length}");
|
||||
var ab = AssetBundle.LoadFromMemory(abBytes);
|
||||
Debug.Log($"GetWXFont success, ab:{ab}");
|
||||
if (ab != null)
|
||||
{
|
||||
Font[] fonts = ab.LoadAllAssets<Font>();
|
||||
Debug.Log($"GetWXFont success, fonts:{fonts.Length}");
|
||||
if (fonts.Length != 0)
|
||||
{
|
||||
WriteLog($"Load font from ab. abBytes:{abBytes.Length}");
|
||||
|
||||
@ -6,6 +6,8 @@ using System.Runtime.InteropServices;
|
||||
using System.Xml;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Scripting;
|
||||
using System.IO;
|
||||
|
||||
|
||||
#if PLATFORM_WEIXINMINIGAME || PLATFORM_WEBGL || UNITY_EDITOR
|
||||
|
||||
@ -17,8 +19,10 @@ namespace WXSDKPerf
|
||||
[ComVisible(false)]
|
||||
public class WXPerfEngine
|
||||
{
|
||||
#if !UNITY_EDITOR
|
||||
static WXPerfEngine_Implementation m_PerfEngineImplementation = null;
|
||||
|
||||
#endif
|
||||
|
||||
[RuntimeInitializeOnLoadMethod]
|
||||
public static void StartWXPerfEngine()
|
||||
{
|
||||
@ -42,8 +46,49 @@ namespace WXSDKPerf
|
||||
return;
|
||||
}
|
||||
|
||||
if (InAnnotationString.Contains("CaptureUnityMemorySnapshot"))
|
||||
{
|
||||
TakeAndUploadUnityMemorySnapshot();
|
||||
}
|
||||
|
||||
m_PerfEngineImplementation.Annotation(InAnnotationString);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
private static void TakeAndUploadUnityMemorySnapshot()
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
return;
|
||||
#else
|
||||
DateTime timestamp = DateTime.Now;
|
||||
var dateString = timestamp.ToLocalTime().ToString("yyyy-MM-dd_HH-mm-ss", System.Globalization.CultureInfo.InvariantCulture);
|
||||
var snapshotFileName = $"{dateString}.snap";
|
||||
|
||||
#if UNITY_2018_3_OR_NEWER && !UNITY_2022_2_OR_NEWER
|
||||
UnityEngine.Profiling.Memory.Experimental.MemoryProfiler.TakeSnapshot(Path.Combine(Application.persistentDataPath, snapshotFileName),
|
||||
WXPerfEngine_Implementation.CaptureSnapshotCallback, (UnityEngine.Profiling.Memory.Experimental.CaptureFlags)31);
|
||||
|
||||
#elif UNITY_2022_2_OR_NEWER
|
||||
Unity.Profiling.Memory.MemoryProfiler.TakeSnapshot(Path.Combine(Application.persistentDataPath, snapshotFileName),
|
||||
WXPerfEngine_Implementation.CaptureSnapshotCallback, (Unity.Profiling.Memory.CaptureFlags)31);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
public static void SetLuaState(IntPtr L)
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
return;
|
||||
#else
|
||||
if (m_PerfEngineImplementation == null)
|
||||
{
|
||||
UnityEngine.Debug.LogError("SetLuaState: WXPerfEngine Not Started yet! Please Call WXSDKPerf.StartWXPerfEngine first! ");
|
||||
return;
|
||||
}
|
||||
|
||||
m_PerfEngineImplementation.SetLuaState(L);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -39,14 +39,12 @@ public class WXTouchInputOverride : BaseInput
|
||||
base.OnEnable();
|
||||
#if UNITY_WEBGL && !UNITY_EDITOR
|
||||
if (string.IsNullOrEmpty(WeChatWASM.WX.GetDeviceInfo().platform)) return;
|
||||
#else
|
||||
return;
|
||||
#endif
|
||||
InitWechatTouchEvents();
|
||||
if (_standaloneInputModule)
|
||||
{
|
||||
_standaloneInputModule.inputOverride = this;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
protected override void OnDisable()
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 97823f52a32b86a7499a3fa73c96afc9
|
||||
guid: ccf2a34266eb4502ef44475a2b00cf9c
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 219794af1ef977713f045cbe43ea9593
|
||||
guid: 29a949bdafbd9ceb488b5b2e1b624f7e
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 52fd4dfb2a4d4e613e8972f70f73c72c
|
||||
guid: 520a4e6bcddd4f1dae027c5222227218
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 61cd022452f0bd8c65af17e4b00743f4
|
||||
guid: 6da224d0ae358f9e6e630ddf0af13081
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
],
|
||||
"plugins": {
|
||||
"UnityPlugin": {
|
||||
"version": "1.2.62",
|
||||
"version": "1.2.63",
|
||||
"provider": "wxe5a48f1ed5f544b7",
|
||||
"contexts": [
|
||||
{
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e60bc789f0ab5bec85bf2e376f8284a3
|
||||
guid: 74a9e9163efc9424fdf886571ac5f1b1
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2f4438df33a0f0ebf2640b0649c8c5ea
|
||||
guid: 32f8fea4dc8e14ff7c61db874491cfc9
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6bf88ad8dc98251d2a199479bd560070
|
||||
guid: 4c4a187b480c0b28a1cd3d2e70faed45
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0ab674618c93194bf2aca66fb4388ae1
|
||||
guid: f9d72dd0c3a1f19008d1b6a1796c476a
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8499d1b79a6aa65c94b9c076e74a49e7
|
||||
guid: 51b4e4fb2d806e82ec1cd8c735a5ce53
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9ffb272160ce906f2f05f5e3435100d4
|
||||
guid: f3b45010071d3666730fe063e545911c
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 486caede6f8d78b35fbf7f8323743658
|
||||
guid: 9423febe00226796dc34e7f8946f8110
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 886bcd79f8ca3b16e32e3a92aeb7e015
|
||||
guid: 326bbe6f4c4f7358c909123d752eab20
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f91a6ab5d750ddf85375cc226cd6609c
|
||||
guid: b3a6a12ee2a967c7b5be6be37bff380f
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3635de83a92f9e44edfaddbd8e0d1c38
|
||||
guid: dbfc375a553975a30ea6572f46e95bae
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6af5b136967999c36fc5626d9a8bc5aa
|
||||
guid: eb57adf701b0fabd849d5ae79420a2a0
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2617b66f28a49076abb4ee352d19788d
|
||||
guid: 0c1f7661bca7eed95ee2c508b9c9dfcd
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 08a1316e269a4f458ee21e2791e53763
|
||||
guid: ecafbe8e790beeaaf7141ce6567d8876
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bc7482b754238d9f755f0bd25f8522bc
|
||||
guid: 4d5a1af925229550852290345ce26cd5
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1f2654155397d021638ab87fff9e85dc
|
||||
guid: d24e981f9a7d2d49b0a7c04a0593c214
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d416737ad97d4b413f04477b5e771bc2
|
||||
guid: aeeed2514ce16cc7f05345b3f9521f50
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cc2e5e24b6072b15ceb44361f296df90
|
||||
guid: ebba417eb8172e9bbe702a5735289827
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: df3778dddf38d6e2e70fb2230cc45337
|
||||
guid: f619d8dacfcbd1774cc722d200d804c1
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6d956d427d3023ad457023c42cfbfcf7
|
||||
guid: d809b1f4abf8f3cd24ec3447fd2cf92a
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b0e8dd4eb01db512c701e56c49e69cd9
|
||||
guid: e6cc37182ef4b8b179557f50e756ccc4
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e59b8cc81e26e2435d6e819b7e281543
|
||||
guid: d7ee084c53a963329d8c67624f29fe5c
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1476c97a5ae10ab844bfa36479cab3a7
|
||||
guid: b8381e41aa9efc402c4dae6cf4e55d80
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 68316adf01618a13f5cd11f7a9208233
|
||||
guid: 06eb6de4ab5c3d5361347ed7b95cc407
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8318550ddd214652cc70634265345c11
|
||||
guid: 285dd620c892b04fde8d53c7adee5f73
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9c9cfe00459e3d98d371faed64c6581b
|
||||
guid: 808925ecfe83882b930aa8915119119b
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b3ef44449b01a4fda7163361762d4410
|
||||
guid: 993d829f1b6e010ce3a13853aea82ab8
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8e37c5ca286f5bb52223a1f622320fa9
|
||||
guid: e361d234f157f54684a6255838f9bcec
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cabb7315277047b22b847b51e44c97ed
|
||||
guid: 03e6fe6cf161706be643e1644666d28f
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d5dd1c4f53a95256f92e02877fb24e5f
|
||||
guid: b5ef1647b5cd762f64d0ab13dfd99557
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 11c407e918b0152a3309161b9cd78113
|
||||
guid: 482b10da0b2706601681d38393db79f5
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 783aa54bb010ea4e001f4dbf62730c37
|
||||
guid: f628323fb9e0f732544f20cea7766f0b
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2cbbbdcb93344a7124311e42c55b5bb2
|
||||
guid: c68ccc85753a9faf1f0a6c5c2444273c
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 07a9cd0a2626f44595d7f29d733b89ee
|
||||
guid: bd7f20051384d5e4134b23c3cbe318b5
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4a066e7d32df024ce83516271c61ea19
|
||||
guid: c603185a4aa07af6f13c7216749b9fc6
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d5f05ca3bdc81cb9fce357c95ec873ae
|
||||
guid: 268ef4451a563ec6ae6450349b337d5f
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 42929f66945c40a1d6d27644eff5cdf8
|
||||
guid: 154e362b9229f75de20114cc74d343e7
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ed4b2cab639c630ca3ae91405b19f7a8
|
||||
guid: e7436d923afc2bcd7d010aa0b6c740ed
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ffd9799c3467460af171681de07ea8b3
|
||||
guid: 057ad3ebce73e566ef30009c9faf2e94
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b9c33b8412e5529abb99f494e90d195a
|
||||
guid: 402713fe2a94ff34e0f0c20f181c8985
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2e1346d6e21a1c9008083a29bf887f34
|
||||
guid: 465796cb21dc7d7dbe7ccaff2b905761
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3940f77c0d31f92afedf9024e7cfaf8a
|
||||
guid: 9b48a59242d255858967545db41b28cc
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 997eefbec821961e1c44cd531f677b89
|
||||
guid: 6acffcc315c1b9a749ebb5f885379d0b
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 93139bc3bc57742bb0e6bb28f79915be
|
||||
guid: 18ab124765c9532fec612a7aec44e188
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e552b83734628fe150e6f4213ddcc171
|
||||
guid: 020754010adb3defdf7df2a3ef8c8135
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 74e8a24aabc55f3f76d1650805e8d59f
|
||||
guid: fbee4e1f8c2a53f18567d81a2352aa85
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 591e3b86c2697b322b94b4b7e2fb5a33
|
||||
guid: 52ed6219a21188e1d534001a42aa2a26
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0c26688123b31a84bb28d4d8fd88cfa0
|
||||
guid: b8fd42dbfabaf2b897bde0fb402ba729
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ad25169a36e6869eaab6fcc60d72a89d
|
||||
guid: 06eb9b4dcbed2e072bc4ed281ac81e23
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -107,7 +107,8 @@ function handleGetFontData(config, forceFallback) {
|
||||
xhr.onload = () => {
|
||||
|
||||
if ((xhr.status === 200 || xhr.status === 0) && xhr.response) {
|
||||
fontDataCache = xhr.response;
|
||||
const notoFontData = xhr.response;
|
||||
fontDataCache = notoFontData;
|
||||
isReadFromCache = xhr.isReadFromCache;
|
||||
resolve();
|
||||
}
|
||||
@ -128,7 +129,6 @@ function handleGetFontData(config, forceFallback) {
|
||||
|
||||
GameGlobal.manager.font.getCommonFont({
|
||||
success(fontData) {
|
||||
console.warn('[font] get common font success', fontData);
|
||||
|
||||
if (isIOS) {
|
||||
fixCmapTable(fontData);
|
||||
@ -163,22 +163,19 @@ function WXGetFontRawData(conf, callbackId, forceFallback = false) {
|
||||
moduleHelper.send('GetFontRawDataCallback', JSON.stringify({ callbackId, type: 'success', res: JSON.stringify({ byteLength: fontDataCache.byteLength, ascent, descent, lineGap, unitsPerEm }) }));
|
||||
GameGlobal.manager.Logger.pluginLog(`[font] load font from ${forceFallback || loadFromRemote ? `network, url=${config.fallbackUrl}` : 'local'}`);
|
||||
|
||||
|
||||
fontDataCache = null;
|
||||
}
|
||||
else {
|
||||
|
||||
console.error('[font] load font error: empty content');
|
||||
GameGlobal.manager.Logger.pluginError('[font] load font error: empty content');
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
if (err.errmsg === 'no support font' && forceFallback === false) {
|
||||
|
||||
console.error('[font] load font error: ', err);
|
||||
WXGetFontRawData(conf, callbackId, true);
|
||||
}
|
||||
else {
|
||||
console.error('[font] load font error: ', err);
|
||||
|
||||
GameGlobal.manager.Logger.pluginError('[font] load font error: ', err);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d66e5b1dce633891a24391b45544ef3b
|
||||
guid: 8ce3d15f4337a2ce9a0fa12830260891
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5c4220407509f086556fd09d47523a80
|
||||
guid: fbb6c4303ddbb250be3efa99af42183f
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 93120f072ec0e97e9dbbaad83dd6264b
|
||||
guid: 22909590c123f56734bbd4c32d4035a1
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8a8f936056cc0a029bf95f9dce3191e0
|
||||
guid: fb3bd23ec4fed5fcb96cbcc156fc0b94
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d43b2048c15507ff952311dd4975a6f7
|
||||
guid: e9cfa9cb6d9c853ed585f971372bf4b6
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0629da08b9ed9bc78800b7707920904d
|
||||
guid: dbb0b1932d80f9ead1280ae79f5099e0
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3538b8cb04e79dcbd23932e665c49570
|
||||
guid: 5dbdd939e674d05bb3b7e8969d2ac4d4
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 510960ca7aeaf2d109e39d87f418bfd3
|
||||
guid: 654611af3f1fb71e128e428c78b93d9f
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 41651647986da622c2de3a6bf8abd589
|
||||
guid: 58d20e869065599ccfbfa15b2feee70f
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e386199736a704f9eb7dd8bf2d84cba7
|
||||
guid: 2bf9d8d424d64713fd3ea86d652688a2
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e4d1b5736fa31ad35b1cab6b4cb2bea9
|
||||
guid: 371db24bccd1ddcb49131c3c85c5ca53
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 852149f40d98494e395cb22681f1c701
|
||||
guid: 09d18db4b1cd06cdcc9fcc3e887f3c52
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a039e1b7d1c2b2a74bcd5924d927e798
|
||||
guid: e39c99aa4165395ea627f553172d0a94
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 635110f65389afaf552220dbe3b04127
|
||||
guid: 77a75894fdb83d708e67ed6e66e788d2
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d9d4fe654bf8d10368f7fb8698c5cf53
|
||||
guid: 5e7f5a53df74b1b85139c2137ccbdf71
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6a02e1786ff7bd64dcc1666431083fb2
|
||||
guid: 4ffbd4401b92b3e5fe16d24453dfa70f
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6b647c457a5d224d39f1791bfea7f147
|
||||
guid: 829de4c0605641a277acf2122dedabfe
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 232fef8a6fe6463c4a85091f365b1af0
|
||||
guid: 2dce980b099f541df69160d8ed5cff48
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e6ea56d507c644af15140723897ee925
|
||||
guid: 06d57b0529df1ce51d424c61e7ccc60f
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e9e1f535230be197e3c8cb9f0ee15afe
|
||||
guid: 4d753af1f72522971830337624b8eaca
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d6cf469ed6e1258294cbd05f2467202f
|
||||
guid: b44b4270d9ad55a3995dfea7ec29390e
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4ceadc2e9a3bfa49441e1922525a918f
|
||||
guid: 6d5d101559226a440dc532cf586c8fe4
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user