From 9cd2f93b8be2b84c06c8d00f13783b723b9d5ea4 Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Sun, 21 Jun 2020 21:54:07 +0800 Subject: [PATCH] fix something - use index to accelerate generate - fix auto suffix problem - improve progrssbar --- SuperScriptMaterializer/database.cpp | 19 +++++++++----- SuperScriptMaterializer/script_export.cpp | 4 +-- SuperScriptMaterializer/vt_menu.cpp | 3 ++- SuperScriptViewer/DecoratorCore.py | 19 ++++---------- SuperScriptViewer/Progressbar.py | 29 ++++++++++++++++++++++ SuperScriptViewer/SuperScriptViewer.pyproj | 3 +++ 6 files changed, 54 insertions(+), 23 deletions(-) create mode 100644 SuperScriptViewer/Progressbar.py diff --git a/SuperScriptMaterializer/database.cpp b/SuperScriptMaterializer/database.cpp index 08dc1f8..cf158cf 100644 --- a/SuperScriptMaterializer/database.cpp +++ b/SuperScriptMaterializer/database.cpp @@ -176,12 +176,19 @@ BOOL scriptDatabase::finalJob() { sqlite3_exec(db, "commit;", NULL, NULL, NULL); //create index for quick select in following app - /*sqlite3_exec(db, "begin;", NULL, NULL, NULL); - sqlite3_exec(db, "CREATE INDEX [quick_where1] ON bIn (thisobj)", NULL, NULL, NULL); - sqlite3_exec(db, "CREATE INDEX [quick_where2] ON bOut (thisobj)", NULL, NULL, NULL); - sqlite3_exec(db, "CREATE INDEX [quick_where3] ON pIn (thisobj)", NULL, NULL, NULL); - sqlite3_exec(db, "CREATE INDEX [quick_where4] ON pOut (thisobj)", NULL, NULL, NULL); - sqlite3_exec(db, "commit;", NULL, NULL, NULL);*/ + sqlite3_exec(db, "begin;", NULL, NULL, NULL); + sqlite3_exec(db, "CREATE INDEX [quick_where1] ON behavior ([parent])", NULL, NULL, NULL); + sqlite3_exec(db, "CREATE INDEX [quick_where2] ON pOper ([belong_to], [thisobj])", NULL, NULL, NULL); + sqlite3_exec(db, "CREATE INDEX [quick_where3] ON pTarget ([belong_to])", NULL, NULL, NULL); + sqlite3_exec(db, "CREATE INDEX [quick_where4] ON bIn ([belong_to])", NULL, NULL, NULL); + sqlite3_exec(db, "CREATE INDEX [quick_where5] ON bOut ([belong_to])", NULL, NULL, NULL); + sqlite3_exec(db, "CREATE INDEX [quick_where6] ON pIn ([belong_to], [thisobj])", NULL, NULL, NULL); + sqlite3_exec(db, "CREATE INDEX [quick_where7] ON pOut ([belong_to], [thisobj])", NULL, NULL, NULL); + sqlite3_exec(db, "CREATE INDEX [quick_where8] ON pLocal ([belong_to])", NULL, NULL, NULL); + sqlite3_exec(db, "CREATE INDEX [quick_where9] ON pLink ([belong_to])", NULL, NULL, NULL); + sqlite3_exec(db, "CREATE INDEX [quick_where10] ON bLink ([belong_to])", NULL, NULL, NULL); + sqlite3_exec(db, "CREATE INDEX [quick_where11] ON elink ([belong_to])", NULL, NULL, NULL); + sqlite3_exec(db, "commit;", NULL, NULL, NULL); return TRUE; } diff --git a/SuperScriptMaterializer/script_export.cpp b/SuperScriptMaterializer/script_export.cpp index 0221cc3..91dc759 100644 --- a/SuperScriptMaterializer/script_export.cpp +++ b/SuperScriptMaterializer/script_export.cpp @@ -484,14 +484,14 @@ void IteratepLocalData(CKParameterLocal* p, scriptDatabase* db, dbScriptDataStru if (unknowType || t == CKPGUID_VOIDBUF || t == CKPGUID_SHADER || t == CKPGUID_TECHNIQUE || t == CKPGUID_PASS) { //dump data unsigned char* cptr = (unsigned char*)p->GetReadDataPtr(false); - char temp[4]; + char temp[8]; int cc = 0, rcc = 0, pos = 0; rcc = cc = p->GetDataSize(); if (rcc > 1024) rcc = 1024; helper->_db_pLocalData->data.clear(); for (int i = 0; i < rcc; i++) { - sprintf(temp, "%02X", cptr[i]); + sprintf(temp, "0x%02X", cptr[i]); helper->_db_pLocalData->data += temp; if (i != rcc - 1) diff --git a/SuperScriptMaterializer/vt_menu.cpp b/SuperScriptMaterializer/vt_menu.cpp index ef35063..74e4d16 100644 --- a/SuperScriptMaterializer/vt_menu.cpp +++ b/SuperScriptMaterializer/vt_menu.cpp @@ -75,7 +75,8 @@ void PluginMenuCallback(int commandID) { ofn.lpstrFile = file; ofn.lpstrFile[0] = '\0'; ofn.nMaxFile = 1024; - ofn.lpstrFilter = "Database file(*.db)\0*.db\0All files(*.*)\0*.*\0"; + ofn.lpstrFilter = "Database file(*.db)\0*.db\0"; + ofn.lpstrDefExt = "db"; ofn.lpstrFileTitle = NULL; ofn.nMaxFileTitle = 0; ofn.lpstrInitialDir = NULL; diff --git a/SuperScriptViewer/DecoratorCore.py b/SuperScriptViewer/DecoratorCore.py index 5ada3bc..0512cef 100644 --- a/SuperScriptViewer/DecoratorCore.py +++ b/SuperScriptViewer/DecoratorCore.py @@ -2,7 +2,7 @@ import sqlite3 import DecoratorConstValue as dcv import json import CustomConfig -import sys +import Progressbar def run(): exportDb = sqlite3.connect(CustomConfig.export_db) @@ -22,25 +22,16 @@ def run(): # decorate each graph print('Generating graph...') currentGraphBlockCell = {} - percentageAll = len(graphList) - if percentageAll == 0: - percentageAll = 1 - percentageNow = 0 - percentageCache = 0 - #debug - # graphList=graphList[int(percentageAll*3/4):] + Progressbar.initProgressbar(len(graphList)) for i in graphList: - sys.stdout.write('\r[{}{}]{}%'.format(int(percentageCache / 5) * '#',(20 - int(percentageCache / 5)) * '=', percentageCache)) - sys.stdout.flush() - currentGraphBlockCell.clear() buildBlock(exportDb, decorateDb, i, currentGraphBlockCell) graphPIO = buildCell(exportDb, decorateDb, i, currentGraphBlockCell) buildLink(exportDb, decorateDb, i, currentGraphBlockCell, graphPIO) - percentageNow += 1 - percentageCache = int(100 * percentageNow / percentageAll) - + Progressbar.stepProgressbar() + Progressbar.finProgressbar() + # export information print('Generating info...') buildInfo(exportDb, decorateDb) diff --git a/SuperScriptViewer/Progressbar.py b/SuperScriptViewer/Progressbar.py new file mode 100644 index 0000000..b647777 --- /dev/null +++ b/SuperScriptViewer/Progressbar.py @@ -0,0 +1,29 @@ +import sys + +value_All = 0 +value_Now = 0 +progressbar_span = 2 +progressbar_count = int(100/progressbar_span) + +def initProgressbar(all): + global value_Now, value_All + value_All = all + value_Now = 0 + + sys.stdout.write('[{}] 0%'.format(progressbar_count * '=')) + sys.stdout.flush() + +def stepProgressbar(): + global value_Now, value_All + value_Now += 1 + if (value_Now > value_All): + value_Now = value_All + + percentage = int(value_Now / value_All * 100) + percentage_bar = int(value_Now / value_All * progressbar_count) + sys.stdout.write('\r[{}{}] {}%'.format(percentage_bar * '#',(progressbar_count - percentage_bar) * '=', percentage)) + sys.stdout.flush() + +def finProgressbar(): + sys.stdout.write('\r[{}] 100%\n'.format(progressbar_count * '#')) + sys.stdout.flush() \ No newline at end of file diff --git a/SuperScriptViewer/SuperScriptViewer.pyproj b/SuperScriptViewer/SuperScriptViewer.pyproj index f3dde01..ef75fd4 100644 --- a/SuperScriptViewer/SuperScriptViewer.pyproj +++ b/SuperScriptViewer/SuperScriptViewer.pyproj @@ -30,6 +30,9 @@ Code + + Code + Code