refactor database.cpp (1/2)

This commit is contained in:
yyc12345 2022-07-30 18:12:22 +08:00
parent c1fc832b88
commit 6b3f5d1364
18 changed files with 786 additions and 864 deletions

View File

@ -39,8 +39,7 @@
SuperScriptMaterializer处理流程里会涉及很多不同的数据库文件以下是这些数据库和其内表的格式。
其中这些是Materializer直接输出的基于文档的数据库
* script.db
* data.db
* doc.db
* env.db
这些数据库是上面数据库经过Decorator处理可以被Viewer接受的数据库
@ -50,9 +49,9 @@ SuperScriptMaterializer处理流程里会涉及很多不同的数据库文件
* query.db
* composition.db
## script.db 格式
## doc.db 格式
script.db导出的是当前Virtools文档内的脚本及其它重要数据。
doc.db导出的是当前Virtools文档内的脚本及其它重要数据。
表列表:

View File

@ -12,32 +12,24 @@ EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6D751BF5-87D6-4123-94B3-34721938CF04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6D751BF5-87D6-4123-94B3-34721938CF04}.Debug|x64.ActiveCfg = Debug|Any CPU
{6D751BF5-87D6-4123-94B3-34721938CF04}.Debug|x86.ActiveCfg = Debug|Any CPU
{6D751BF5-87D6-4123-94B3-34721938CF04}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6D751BF5-87D6-4123-94B3-34721938CF04}.Release|x64.ActiveCfg = Release|Any CPU
{6D751BF5-87D6-4123-94B3-34721938CF04}.Release|x86.ActiveCfg = Release|Any CPU
{4D941003-020F-47FD-9FA2-FFC989E306B8}.Debug|Any CPU.ActiveCfg = Debug|Win32
{4D941003-020F-47FD-9FA2-FFC989E306B8}.Debug|x64.ActiveCfg = Debug|Win32
{4D941003-020F-47FD-9FA2-FFC989E306B8}.Debug|x86.ActiveCfg = Debug|Win32
{4D941003-020F-47FD-9FA2-FFC989E306B8}.Debug|x86.Build.0 = Debug|Win32
{4D941003-020F-47FD-9FA2-FFC989E306B8}.Release|Any CPU.ActiveCfg = Release|Win32
{4D941003-020F-47FD-9FA2-FFC989E306B8}.Release|x64.ActiveCfg = Release|Win32
{4D941003-020F-47FD-9FA2-FFC989E306B8}.Release|x86.ActiveCfg = Release|Win32
{4D941003-020F-47FD-9FA2-FFC989E306B8}.Release|x86.Build.0 = Release|Win32
{0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Debug|x64.ActiveCfg = Debug|Any CPU
{0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Debug|x86.ActiveCfg = Debug|Any CPU
{0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Release|x64.ActiveCfg = Release|Any CPU
{0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution

View File

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?><Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@ -113,6 +114,7 @@
<ClInclude Include="resource.h" />
<ClInclude Include="script_export.h" />
<ClInclude Include="shared_export.h" />
<ClInclude Include="string_helper.hpp" />
<ClInclude Include="virtools_compatible.h" />
<ClInclude Include="vt_menu.h" />
<ClInclude Include="stdafx.h" />
@ -124,6 +126,7 @@
<ClCompile Include="main.cpp" />
<ClCompile Include="script_export.cpp" />
<ClCompile Include="shared_export.cpp" />
<ClCompile Include="string_helper.cpp" />
<ClCompile Include="virtools_compatible.cpp" />
<ClCompile Include="vt_menu.cpp" />
<ClCompile Include="vt_player.cpp" />

View File

@ -42,6 +42,9 @@
<ClInclude Include="data_export.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="string_helper.hpp">
<Filter>头文件</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="database.cpp">
@ -71,6 +74,9 @@
<ClCompile Include="data_export.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="string_helper.cpp">
<Filter>源文件</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="SuperScriptMaterializer.def">

View File

@ -4,6 +4,6 @@
#include "stdafx.h"
#include "database.h"
void DigCKObjectData(CKObject* cko, scriptDatabase* db, db_shared_dictData* helper, EXPAND_CK_ID parents);
void DigCKObjectData(CKObject* cko, DocumentDatabase* mDb, dbdoc_data* helper, EXPAND_CK_ID parents);
#endif

File diff suppressed because it is too large Load Diff

View File

@ -6,9 +6,6 @@
#include <string>
#include <vector>
#include <set>
#include "virtools_compatible.h"
#define STRINGCACHE_SIZE 25565
typedef long EXPAND_CK_ID;
enum bLinkInputOutputType {
@ -25,9 +22,16 @@ enum pLinkInputOutputType {
#pragma region data struct define
// =================== script db
// =================== doc mDb
typedef struct {
struct dbdoc_script {
EXPAND_CK_ID thisobj;
std::string host_name;
int index;
EXPAND_CK_ID behavior;
};
struct dbdoc_script_behavior {
EXPAND_CK_ID thisobj;
std::string name;
CK_BEHAVIOR_TYPE type;
@ -39,59 +43,52 @@ typedef struct {
//pTarget, pIn, pOut, bIn, bOut
std::string pin_count;
EXPAND_CK_ID parent;
}db_script_behavior;
};
typedef struct {
struct dbdoc_script_bIO {
EXPAND_CK_ID thisobj;
std::string host_name;
int index;
EXPAND_CK_ID behavior;
}db_script_script;
std::string name;
EXPAND_CK_ID parent;
};
typedef dbdoc_script_bIO dbdoc_script_bIn;
typedef dbdoc_script_bIO dbdoc_script_bOut;
typedef struct {
struct dbdoc_script_pTarget {
EXPAND_CK_ID thisobj;
std::string name;
std::string type;
std::string type_guid;
EXPAND_CK_ID belong_to;
EXPAND_CK_ID parent;
EXPAND_CK_ID direct_source;
EXPAND_CK_ID shared_source;
}db_script_pTarget;
};
typedef struct {
struct dbdoc_script_pIn {
EXPAND_CK_ID thisobj;
int index;
std::string name;
std::string type;
std::string type_guid;
EXPAND_CK_ID belong_to;
EXPAND_CK_ID parent;
EXPAND_CK_ID direct_source;
EXPAND_CK_ID shared_source;
}db_script_pIn;
};
typedef struct {
struct dbdoc_script_pOut {
EXPAND_CK_ID thisobj;
int index;
std::string name;
std::string type;
std::string type_guid;
EXPAND_CK_ID belong_to;
}db_script_pOut;
EXPAND_CK_ID parent;
};
typedef struct {
EXPAND_CK_ID thisobj;
int index;
std::string name;
EXPAND_CK_ID belong_to;
}db_shared_bIO;
typedef db_shared_bIO db_script_bIn;
typedef db_shared_bIO db_script_bOut;
typedef struct {
struct dbdoc_script_bLink {
EXPAND_CK_ID input;
EXPAND_CK_ID output;
int delay;
EXPAND_CK_ID belong_to;
EXPAND_CK_ID parent;
//additional field
EXPAND_CK_ID input_obj;
@ -100,35 +97,28 @@ typedef struct {
EXPAND_CK_ID output_obj;
bLinkInputOutputType output_type;
int output_index;
}db_script_bLink;
};
typedef struct {
struct dbdoc_script_pLocal {
EXPAND_CK_ID thisobj;
std::string name;
std::string type;
std::string type_guid;
BOOL is_setting;
EXPAND_CK_ID belong_to;
}db_script_pLocal;
EXPAND_CK_ID parent;
};
typedef struct {
struct dbdoc_script_pAttr {
EXPAND_CK_ID thisobj;
std::string name;
std::string type;
std::string type_guid;
}db_script_pAttr;
};
typedef struct {
std::string field;
std::string data;
EXPAND_CK_ID belong_to;
}db_shared_dictData;
typedef db_shared_dictData db_script_pData;
typedef struct {
struct dbdoc_script_pLink {
EXPAND_CK_ID input;
EXPAND_CK_ID output;
EXPAND_CK_ID belong_to;
EXPAND_CK_ID parent;
//additional field
EXPAND_CK_ID input_obj;
@ -139,64 +129,61 @@ typedef struct {
pLinkInputOutputType output_type;
BOOL output_is_bb;
int output_index;
}db_script_pLink;
};
typedef struct {
struct dbdoc_script_pOper {
EXPAND_CK_ID thisobj;
std::string op;
std::string op_guid;
EXPAND_CK_ID belong_to;
}db_script_pOper;
EXPAND_CK_ID parent;
};
typedef struct {
struct dbdoc_script_eLink {
EXPAND_CK_ID export_obj;
EXPAND_CK_ID internal_obj;
BOOL is_in;
int index;
EXPAND_CK_ID belong_to;
}db_script_eLink;
EXPAND_CK_ID parent;
};
struct dbdoc_msg {
CKMessageType index;
std::string name;
};
// =================== data db
typedef struct {
struct dbdoc_array {
EXPAND_CK_ID thisobj;
std::string name;
CK_CLASSID type_classid;
std::string type_guid;
std::string type_name;
int rows;
int columns;
}db_data_obj;
};
typedef struct {
struct dbdoc_array_header {
int index;
std::string name;
CK_ARRAYTYPE type;
std::string param_type;
std::string param_type_guid;
EXPAND_CK_ID belong_to;
}db_data_objHeader;
EXPAND_CK_ID parent;
};
typedef struct {
struct dbdoc_array_cell {
int row;
int column;
std::string showcase;
EXPAND_CK_ID inner_object;
EXPAND_CK_ID inner_param;
EXPAND_CK_ID belong_to;
}db_data_objBody;
EXPAND_CK_ID parent;
};
typedef db_shared_dictData db_data_objParam;
struct dbdoc_data {
std::string field;
std::string data;
EXPAND_CK_ID parent;
};
typedef struct {
CKMessageType index;
std::string name;
}db_data_msg;
// =================== env mDb
// =================== env db
typedef struct {
struct dbenv_op {
CK_PARAMETEROPERATION funcPtr;
std::string in1_guid;
std::string in2_guid;
@ -204,9 +191,9 @@ typedef struct {
std::string op_guid;
std::string op_name;
CKOperationType op_code;
}db_env_op;
};
typedef struct {
struct dbenv_param {
CKParameterType index;
std::string guid;
std::string derived_from;
@ -225,9 +212,9 @@ typedef struct {
CKDWORD dw_flags;
CKDWORD cid;
std::string saver_manager;
}db_env_param;
};
typedef struct {
struct dbenv_attr {
CKAttributeType index;
std::string name;
CKAttributeCategory category_index;
@ -236,15 +223,14 @@ typedef struct {
CKParameterType param_index;
CK_CLASSID compatible_classid;
std::string default_value;
}db_env_attr;
};
typedef struct {
struct dbenv_plugin {
int dll_index;
std::string dll_name;
int plugin_index;
std::string category;
CKBOOL active;
CKBOOL needed_by_file;
std::string guid;
std::string desc;
std::string author;
@ -252,136 +238,124 @@ typedef struct {
DWORD version;
CK_INITINSTANCEFCT func_init;
CK_EXITINSTANCEFCT func_exit;
}db_env_plugin;
};
typedef struct {
struct dbenv_variable {
std::string name;
std::string desciption;
XWORD flags;
UNIVERSAL_VAR_TYPE type;
std::string representation;
std::string data;
}db_env_variable;
};
#pragma endregion
class dbScriptDataStructHelper {
class DbDataStructHelper_Doc {
public:
void init(CKParameterManager* paramManager);
void dispose();
DbDataStructHelper_Doc(CKParameterManager* paramManager);
~DbDataStructHelper_Doc();
char* _stringCache;
CKParameterManager* _parameterManager;
db_script_behavior* _db_behavior;
db_script_script* _db_script;
db_script_pTarget* _db_pTarget;
db_script_pIn* _db_pIn;
db_script_pOut* _db_pOut;
db_script_bIn* _db_bIn;
db_script_bOut* _db_bOut;
db_script_bLink* _db_bLink;
db_script_pLocal* _db_pLocal;
db_script_pAttr* _db_pAttr;
db_script_pLink* _db_pLink;
db_script_pData* _db_pData;
db_script_pOper* _db_pOper;
db_script_eLink* _db_eLink;
CKParameterManager* param_manager;
dbdoc_script script;
dbdoc_script_behavior script_behavior;
dbdoc_script_bIn script_bIn;
dbdoc_script_bOut script_bOut;
dbdoc_script_pIn script_pIn;
dbdoc_script_pOut script_pOut;
dbdoc_script_bLink script_bLink;
dbdoc_script_pLocal script_pLocal;
dbdoc_script_pAttr script_pAttr;
dbdoc_script_pLink script_pLink;
dbdoc_script_pOper script_pOper;
dbdoc_script_eLink script_eLink;
dbdoc_script_pTarget script_pTarget;
dbdoc_msg msg;
dbdoc_array _array;
dbdoc_array_header array_header;
dbdoc_array_cell array_cell;
dbdoc_data data;
};
class dbDataDataStructHelper {
class DbDataStructHelper_Env {
public:
void init(CKParameterManager* paramManager);
void dispose();
DbDataStructHelper_Env();
~DbDataStructHelper_Env();
char* _stringCache;
CKParameterManager* _parameterManager;
db_data_obj* _db_obj;
db_data_objHeader* _db_objHeader;
db_data_objBody* _db_objBody;
db_data_objParam* _db_objParam;
db_data_msg* _db_msg;
};
class dbEnvDataStructHelper {
public:
void init();
void dispose();
char* _stringCache;
db_env_op* _db_op;
db_env_param* _db_param;
//db_data_msg* _db_envMsg;
db_env_attr* _db_attr;
db_env_plugin* _db_plugin;
db_env_variable* _db_variable;
dbenv_op op;
dbenv_param param;
dbenv_attr attr;
dbenv_plugin plugin;
dbenv_variable variable;
};
class database {
class SSMaterializerDatabase {
public:
void open(const char* file);
void close();
SSMaterializerDatabase(const char* file);
virtual ~SSMaterializerDatabase();
protected:
sqlite3_stmt* safeStmt(size_t index);
virtual BOOL init() { return TRUE; }
virtual BOOL finalJob() { return TRUE; }
sqlite3_stmt* CreateStmt(const char* stmt);
virtual BOOL Init() = 0;
virtual BOOL Finalize() = 0;
sqlite3* db;
std::vector<sqlite3_stmt*>* stmtCache;
sqlite3* mDb;
std::vector<sqlite3_stmt*> mStmtCache;
};
class scriptDatabase : public database {
class DocumentDatabase : public SSMaterializerDatabase {
public:
void write_behavior(db_script_behavior* data);
void write_script(db_script_script* data);
void write_pTarget(db_script_pTarget* data);
void write_pIn(db_script_pIn* data);
void write_pOut(db_script_pOut* data);
void write_bIn(db_script_bIn* data);
void write_bOut(db_script_bOut* data);
void write_bLink(db_script_bLink* data);
void write_pLocal(db_script_pLocal* data);
void write_pLink(db_script_pLink* data);
void write_pData(db_script_pData* data);
void write_pOper(db_script_pOper* data);
void write_eLink(db_script_eLink* data);
BOOL write_pAttr(db_script_pAttr* data);
DocumentDatabase(const char* file);
virtual ~DocumentDatabase();
void write_script(dbdoc_script& data);
void write_script_behavior(dbdoc_script_behavior& data);
void write_script_pTarget(dbdoc_script_pTarget& data);
void write_script_pIn(dbdoc_script_pIn& data);
void write_script_pOut(dbdoc_script_pOut& data);
void write_script_bIn(dbdoc_script_bIn& data);
void write_script_bOut(dbdoc_script_bOut& data);
void write_script_bLink(dbdoc_script_bLink& data);
void write_script_pLocal(dbdoc_script_pLocal& data);
void write_script_pLink(dbdoc_script_pLink& data);
void write_script_pOper(dbdoc_script_pOper& data);
void write_script_eLink(dbdoc_script_eLink& data);
BOOL write_script_pAttr(dbdoc_script_pAttr& data);
void write_msg(dbdoc_msg& data);
void write_array(dbdoc_array& data);
void write_array_header(dbdoc_array_header& data);
void write_array_cell(dbdoc_array_cell& data);
void write_data(dbdoc_data& data);
protected:
BOOL init();
BOOL finalJob();
BOOL Init() override;
BOOL Finalize() override;
std::set<EXPAND_CK_ID>* pAttrUniqueEnsurance;
std::set<EXPAND_CK_ID> m_pAttrUniqueEnsurance;
};
class dataDatabase : public database {
class EnvironmentDatabase : public SSMaterializerDatabase {
public:
void write_obj(db_data_obj* data);
void write_objHeader(db_data_objHeader* data);
void write_objBody(db_data_objBody* data);
void write_objParam(db_data_objParam* data);
void write_msg(db_data_msg* data);
EnvironmentDatabase(const char* file);
virtual ~EnvironmentDatabase();
void write_op(dbenv_op& data);
void write_param(dbenv_param& data);
void write_attr(dbenv_attr& data);
void write_plugin(dbenv_plugin& data);
void write_variable(dbenv_variable& data);
protected:
BOOL init();
BOOL finalJob();
};
class envDatabase : public database {
public:
void write_op(db_env_op* data);
void write_param(db_env_param* data);
//void write_msg(db_data_msg* data);
void write_attr(db_env_attr* data);
void write_plugin(db_env_plugin* data);
void write_variable(db_env_variable* data);
protected:
BOOL init();
BOOL finalJob();
BOOL Init() override;
BOOL Finalize() override;
};
#endif

View File

@ -5,7 +5,7 @@
#define copyGuid(guid,str) sprintf(helper->_stringCache,"%d,%d",guid.d1,guid.d2);str=helper->_stringCache;
#define safeStringCopy(storage,str) storage=(str)?(str):"";
void IterateParameterOperation(CKParameterManager* parameterManager, envDatabase* db, dbEnvDataStructHelper* helper) {
void IterateParameterOperation(CKParameterManager* parameterManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper) {
int count = parameterManager->GetParameterOperationCount();
CKOperationDesc* opList = NULL;
int listCount = 0, cacheListCount = 0;
@ -32,14 +32,14 @@ void IterateParameterOperation(CKParameterManager* parameterManager, envDatabase
copyGuid(opList[j].ResGuid, helper->_db_op->out_guid);
helper->_db_op->funcPtr = opList[j].Fct;
db->write_op(helper->_db_op);
mDb->write_op(helper->_db_op);
}
}
if (opList != NULL) free(opList);
}
void IterateParameter(CKParameterManager* parameterManager, envDatabase* db, dbEnvDataStructHelper* helper) {
void IterateParameter(CKParameterManager* parameterManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper) {
int count = parameterManager->GetParameterTypesCount();
CKParameterTypeDesc* desc = NULL;
for (int i = 0; i < count; i++) {
@ -70,21 +70,21 @@ void IterateParameter(CKParameterManager* parameterManager, envDatabase* db, dbE
helper->_db_param->cid = desc->Cid;
copyGuid(desc->Saver_Manager, helper->_db_param->saver_manager);
db->write_param(helper->_db_param);
mDb->write_param(helper->_db_param);
}
}
void IterateMessage(CKMessageManager* msgManager, envDatabase* db, dbEnvDataStructHelper* helper) {
void IterateMessage(CKMessageManager* msgManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper) {
int count = msgManager->GetMessageTypeCount();
for (int i = 0; i < count; i++) {
helper->_db_envMsg->index = i;
helper->_db_envMsg->name = msgManager->GetMessageTypeName(i);
db->write_msg(helper->_db_envMsg);
mDb->write_msg(helper->_db_envMsg);
}
}
void IterateAttribute(CKAttributeManager* attrManager, envDatabase* db, dbEnvDataStructHelper* helper) {
void IterateAttribute(CKAttributeManager* attrManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper) {
int count = attrManager->GetAttributeCount();
for (int i = 0; i < count; i++) {
helper->_db_attr->index = i;
@ -96,11 +96,11 @@ void IterateAttribute(CKAttributeManager* attrManager, envDatabase* db, dbEnvDat
helper->_db_attr->compatible_classid = attrManager->GetAttributeCompatibleClassId(i);
helper->_db_attr->default_value = attrManager->GetAttributeDefaultValue(i) != NULL ? attrManager->GetAttributeDefaultValue(i) : "";
db->write_attr(helper->_db_attr);
mDb->write_attr(helper->_db_attr);
}
}
void IteratePlugin(CKPluginManager* plgManager, envDatabase* db, dbEnvDataStructHelper* helper) {
void IteratePlugin(CKPluginManager* plgManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper) {
for (int i = 0; i <= 7; i++) {
int catCount = plgManager->GetPluginCount(i);
helper->_db_plugin->category = plgManager->GetCategoryName(i);
@ -121,13 +121,13 @@ void IteratePlugin(CKPluginManager* plgManager, envDatabase* db, dbEnvDataStruct
helper->_db_plugin->func_init = plgInfo->m_InitInstanceFct;
helper->_db_plugin->func_exit = plgInfo->m_ExitInstanceFct;
db->write_plugin(helper->_db_plugin);
mDb->write_plugin(helper->_db_plugin);
}
}
}
#if !defined(VIRTOOLS_21)
void IterateVariable(CKVariableManager* varManager, envDatabase* db, dbEnvDataStructHelper* helper) {
void IterateVariable(CKVariableManager* varManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper) {
CKVariableManager::Iterator it = varManager->GetVariableIterator();
CKVariableManager::Variable* varobj = NULL;
XString dataCopyCache;
@ -141,7 +141,7 @@ void IterateVariable(CKVariableManager* varManager, envDatabase* db, dbEnvDataSt
varobj->GetStringValue(dataCopyCache);
helper->_db_variable->data = dataCopyCache.CStr();
db->write_variable(helper->_db_variable);
mDb->write_variable(helper->_db_variable);
}
}
#endif

View File

@ -4,11 +4,11 @@
#include "stdafx.h"
#include "database.h"
void IterateParameterOperation(CKParameterManager* parameterManager, envDatabase* db, dbEnvDataStructHelper* helper);
void IterateParameter(CKParameterManager* parameterManager, envDatabase* db, dbEnvDataStructHelper* helper);
void IterateMessage(CKMessageManager* msgManager, envDatabase* db, dbEnvDataStructHelper* helper);
void IterateAttribute(CKAttributeManager* attrManager, envDatabase* db, dbEnvDataStructHelper* helper);
void IteratePlugin(CKPluginManager* plgManager, envDatabase* db, dbEnvDataStructHelper* helper);
void IterateVariable(CKVariableManager* varManager, envDatabase* db, dbEnvDataStructHelper* helper);
void IterateParameterOperation(CKParameterManager* parameterManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper);
void IterateParameter(CKParameterManager* parameterManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper);
void IterateMessage(CKMessageManager* msgManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper);
void IterateAttribute(CKAttributeManager* attrManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper);
void IteratePlugin(CKPluginManager* plgManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper);
void IterateVariable(CKVariableManager* varManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper);
#endif

View File

@ -11,7 +11,7 @@
#pragma region inline func
void generate_pLink_in_pIn(CKContext* ctx, CKParameterIn* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB, BOOL isTarget) {
void generate_pLink_in_pIn(CKContext* ctx, CKParameterIn* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB, BOOL isTarget) {
//WARNING: i only choose one between [DirectSource] and [SharedSource] bucause i don't find any pIn both have these two field
CKParameter* directSource = NULL;
CKObject* ds_Owner = NULL;
@ -48,7 +48,7 @@ void generate_pLink_in_pIn(CKContext* ctx, CKParameterIn* cache, scriptDatabase*
helper->_db_pLink->input_type = pLinkInputOutputType_PATTR;
helper->_db_pLink->input_is_bb = FALSE;
helper->_db_pLink->input_index = -1;
proc_pAttr(ctx, db, helper, directSource);
proc_pAttr(ctx, mDb, helper, directSource);
break;
default:
//normal object, see as virtual bb pLocal shortcut
@ -56,7 +56,7 @@ void generate_pLink_in_pIn(CKContext* ctx, CKParameterIn* cache, scriptDatabase*
helper->_db_pLink->input_type = pLinkInputOutputType_PATTR;
helper->_db_pLink->input_is_bb = FALSE;
helper->_db_pLink->input_index = -1;
proc_pAttr(ctx, db, helper, directSource);
proc_pAttr(ctx, mDb, helper, directSource);
break;
}
}
@ -91,11 +91,11 @@ void generate_pLink_in_pIn(CKContext* ctx, CKParameterIn* cache, scriptDatabase*
helper->_db_pLink->output_index = index;
helper->_db_pLink->belong_to = grandparents;
db->write_pLink(helper->_db_pLink);
mDb->write_script_pLink(helper->_db_pLink);
}
}
void proc_pTarget(CKContext* ctx, CKParameterIn* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents) {
void proc_pTarget(CKContext* ctx, CKParameterIn* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents) {
helper->_db_pTarget->thisobj = cache->GetID();
helper->_db_pTarget->name = cache->GetName();
helper->_db_pTarget->type = helper->_parameterManager->ParameterTypeToName(cache->GetType());
@ -104,9 +104,9 @@ void proc_pTarget(CKContext* ctx, CKParameterIn* cache, scriptDatabase* db, dbSc
helper->_db_pTarget->direct_source = cache->GetDirectSource() ? cache->GetDirectSource()->GetID() : -1;
helper->_db_pTarget->shared_source = cache->GetSharedSource() ? cache->GetSharedSource()->GetID() : -1;
db->write_pTarget(helper->_db_pTarget);
mDb->write_script_pTarget(helper->_db_pTarget);
//judge whether expoer parameter and write database
//judge whether expoer parameter and write SSMaterializerDatabase
if (((CKBehavior*)ctx->GetObject(grandparents))->GetInputParameterPosition(cache) != -1) {
helper->_db_eLink->export_obj = cache->GetID();
helper->_db_eLink->internal_obj = parents;
@ -114,15 +114,15 @@ void proc_pTarget(CKContext* ctx, CKParameterIn* cache, scriptDatabase* db, dbSc
helper->_db_eLink->index = -1;
helper->_db_eLink->belong_to = grandparents;
db->write_eLink(helper->_db_eLink);
mDb->write_script_eLink(helper->_db_eLink);
return;
}
//=========try generate pLink
generate_pLink_in_pIn(ctx, cache, db, helper, parents, grandparents, -1, TRUE, TRUE);
generate_pLink_in_pIn(ctx, cache, mDb, helper, parents, grandparents, -1, TRUE, TRUE);
}
void proc_pIn(CKContext* ctx, CKParameterIn* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB) {
void proc_pIn(CKContext* ctx, CKParameterIn* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB) {
helper->_db_pIn->thisobj = cache->GetID();
helper->_db_pIn->index = index;
helper->_db_pIn->name = cache->GetName();
@ -134,9 +134,9 @@ void proc_pIn(CKContext* ctx, CKParameterIn* cache, scriptDatabase* db, dbScript
helper->_db_pIn->direct_source = cache->GetDirectSource() ? cache->GetDirectSource()->GetID() : -1;
helper->_db_pIn->shared_source = cache->GetSharedSource() ? cache->GetSharedSource()->GetID() : -1;
db->write_pIn(helper->_db_pIn);
mDb->write_script_pIn(helper->_db_pIn);
//judge whether expoer parameter and write database
//judge whether expoer parameter and write SSMaterializerDatabase
if (((CKBehavior*)ctx->GetObject(grandparents))->GetInputParameterPosition(cache) != -1) {
helper->_db_eLink->export_obj = cache->GetID();
helper->_db_eLink->internal_obj = parents;
@ -144,16 +144,16 @@ void proc_pIn(CKContext* ctx, CKParameterIn* cache, scriptDatabase* db, dbScript
helper->_db_eLink->index = index;
helper->_db_eLink->belong_to = grandparents;
db->write_eLink(helper->_db_eLink);
mDb->write_script_eLink(helper->_db_eLink);
return;
}
//=========try generate pLink
generate_pLink_in_pIn(ctx, cache, db, helper, parents, grandparents, index, executedFromBB, FALSE);
generate_pLink_in_pIn(ctx, cache, mDb, helper, parents, grandparents, index, executedFromBB, FALSE);
}
void proc_pOut(CKContext* ctx, CKParameterOut* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB) {
void proc_pOut(CKContext* ctx, CKParameterOut* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB) {
helper->_db_pOut->thisobj = cache->GetID();
helper->_db_pOut->index = index;
helper->_db_pOut->name = cache->GetName();
@ -163,9 +163,9 @@ void proc_pOut(CKContext* ctx, CKParameterOut* cache, scriptDatabase* db, dbScri
copyGuid(cache->GetGUID(), helper->_db_pOut->type_guid);
helper->_db_pOut->belong_to = parents;
db->write_pOut(helper->_db_pOut);
mDb->write_script_pOut(helper->_db_pOut);
//judge whether expoer parameter and write database
//judge whether expoer parameter and write SSMaterializerDatabase
if (((CKBehavior*)ctx->GetObject(grandparents))->GetOutputParameterPosition(cache) != -1) {
helper->_db_eLink->export_obj = cache->GetID();
helper->_db_eLink->internal_obj = parents;
@ -173,7 +173,7 @@ void proc_pOut(CKContext* ctx, CKParameterOut* cache, scriptDatabase* db, dbScri
helper->_db_eLink->index = index;
helper->_db_eLink->belong_to = grandparents;
db->write_eLink(helper->_db_eLink);
mDb->write_script_eLink(helper->_db_eLink);
return;
}
@ -210,29 +210,29 @@ void proc_pOut(CKContext* ctx, CKParameterOut* cache, scriptDatabase* db, dbScri
helper->_db_pLink->belong_to = grandparents;
db->write_pLink(helper->_db_pLink);
mDb->write_script_pLink(helper->_db_pLink);
}
}
void proc_bIn(CKBehaviorIO* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, int index) {
void proc_bIn(CKBehaviorIO* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, int index) {
helper->_db_bIn->thisobj = cache->GetID();
helper->_db_bIn->index = index;
helper->_db_bIn->name = cache->GetName();
helper->_db_bIn->belong_to = parents;
db->write_bIn(helper->_db_bIn);
mDb->write_script_bIn(helper->_db_bIn);
}
void proc_bOut(CKBehaviorIO* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, int index) {
void proc_bOut(CKBehaviorIO* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, int index) {
helper->_db_bOut->thisobj = cache->GetID();
helper->_db_bOut->index = index;
helper->_db_bOut->name = cache->GetName();
helper->_db_bOut->belong_to = parents;
db->write_bOut(helper->_db_bOut);
mDb->write_script_bOut(helper->_db_bOut);
}
void proc_bLink(CKBehaviorLink* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents) {
void proc_bLink(CKBehaviorLink* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents) {
CKBehaviorIO* io = cache->GetInBehaviorIO();
CKBehavior* beh = io->GetOwner();
helper->_db_bLink->input = io->GetID();
@ -249,10 +249,10 @@ void proc_bLink(CKBehaviorLink* cache, scriptDatabase* db, dbScriptDataStructHel
helper->_db_bLink->delay = cache->GetActivationDelay();
helper->_db_bLink->belong_to = parents;
db->write_bLink(helper->_db_bLink);
mDb->write_script_bLink(helper->_db_bLink);
}
void proc_pLocal(CKParameterLocal* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, BOOL is_setting) {
void proc_pLocal(CKParameterLocal* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, BOOL is_setting) {
helper->_db_pLocal->thisobj = cache->GetID();
helper->_db_pLocal->name = cache->GetName() ? cache->GetName() : "";
CKParameterType vaildTypeChecker = cache->GetType();
@ -262,27 +262,27 @@ void proc_pLocal(CKParameterLocal* cache, scriptDatabase* db, dbScriptDataStruct
helper->_db_pLocal->is_setting = is_setting;
helper->_db_pLocal->belong_to = parents;
db->write_pLocal(helper->_db_pLocal);
mDb->write_script_pLocal(helper->_db_pLocal);
//export plocal metadata
DigParameterData(cache, db, helper, cache->GetID());
DigParameterData(cache, mDb, helper, cache->GetID());
}
void proc_pOper(CKContext* ctx, CKParameterOperation* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents) {
void proc_pOper(CKContext* ctx, CKParameterOperation* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents) {
helper->_db_pOper->thisobj = cache->GetID();
helper->_db_pOper->op = helper->_parameterManager->OperationGuidToName(cache->GetOperationGuid());
copyGuid(cache->GetOperationGuid(), helper->_db_pOper->op_guid);
helper->_db_pOper->belong_to = parents;
db->write_pOper(helper->_db_pOper);
mDb->write_script_pOper(helper->_db_pOper);
//export 2 input param and 1 output param
proc_pIn(ctx, cache->GetInParameter1(), db, helper, cache->GetID(), parents, 0, FALSE);
proc_pIn(ctx, cache->GetInParameter2(), db, helper, cache->GetID(), parents, 1, FALSE);
proc_pOut(ctx, cache->GetOutParameter(), db, helper, cache->GetID(), parents, 0, FALSE);
proc_pIn(ctx, cache->GetInParameter1(), mDb, helper, cache->GetID(), parents, 0, FALSE);
proc_pIn(ctx, cache->GetInParameter2(), mDb, helper, cache->GetID(), parents, 1, FALSE);
proc_pOut(ctx, cache->GetOutParameter(), mDb, helper, cache->GetID(), parents, 0, FALSE);
}
void proc_pAttr(CKContext* ctx, scriptDatabase* db, dbScriptDataStructHelper* helper, CKParameter* cache) {
void proc_pAttr(CKContext* ctx, DocumentDatabase* mDb, dbDocDataStructHelper* helper, CKParameter* cache) {
//write self first to detect conflict
helper->_db_pAttr->thisobj = cache->GetID();
safeStringCopy(helper->_db_pAttr->name, cache->GetName());
@ -291,32 +291,32 @@ void proc_pAttr(CKContext* ctx, scriptDatabase* db, dbScriptDataStructHelper* he
else helper->_db_pAttr->type = "!!UNKNOW TYPE!!"; //unknow type
copyGuid(cache->GetGUID(), helper->_db_pAttr->type_guid);
if (!db->write_pAttr(helper->_db_pAttr))
if (!mDb->write_script_pAttr(helper->_db_pAttr))
return;
//not duplicated, continue write property
CKObject* host = cache->GetOwner();
helper_pDataExport("attr.host_id", (long)host->GetID(), db, helper, cache->GetID());
helper_pDataExport("attr.host_name", host->GetName(), db, helper, cache->GetID());
helper_pDataExport("attr.host_id", (long)host->GetID(), mDb, helper, cache->GetID());
helper_pDataExport("attr.host_name", host->GetName(), mDb, helper, cache->GetID());
}
//============================helper for pLocal data export
void helper_pDataExport(const char* field, const char* data, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents) {
void helper_pDataExport(const char* field, const char* data, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents) {
helper->_db_pData->field = field;
helper->_db_pData->data = data;
helper->_db_pData->belong_to = parents;
db->write_pData(helper->_db_pData);
mDb->write_pData(helper->_db_pData);
}
void helper_pDataExport(const char* field, float data, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents) {
void helper_pDataExport(const char* field, float data, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents) {
char str[32];
sprintf(str, "%f", data);
helper_pDataExport(field, str, db, helper, parents);
helper_pDataExport(field, str, mDb, helper, parents);
}
void helper_pDataExport(const char* field, long data, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents) {
void helper_pDataExport(const char* field, long data, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents) {
char str[32];
ltoa(data, str, 10);
helper_pDataExport(field, str, db, helper, parents);
helper_pDataExport(field, str, mDb, helper, parents);
}
@ -325,7 +325,7 @@ void helper_pDataExport(const char* field, long data, scriptDatabase* db, dbScri
#pragma region normal func
void IterateScript(CKContext* ctx, scriptDatabase* db, dbScriptDataStructHelper* helper) {
void IterateScript(CKContext* ctx, DocumentDatabase* mDb, dbDocDataStructHelper* helper) {
CKBeObject* beobj = NULL;
CKBehavior* beh = NULL;
XObjectPointerArray objArray = ctx->GetObjectListByType(CKCID_BEOBJECT, TRUE);
@ -342,15 +342,15 @@ void IterateScript(CKContext* ctx, scriptDatabase* db, dbScriptDataStructHelper*
helper->_db_script->host_name = beobj->GetName();
helper->_db_script->index = j;
helper->_db_script->behavior = beh->GetID();
db->write_script(helper->_db_script);
mDb->write_script(helper->_db_script);
//iterate script
IterateBehavior(ctx, beh, db, helper, -1);
IterateBehavior(ctx, beh, mDb, helper, -1);
}
}
}
void IterateBehavior(CKContext* ctx, CKBehavior* bhv, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents) {
void IterateBehavior(CKContext* ctx, CKBehavior* bhv, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents) {
//write self data
helper->_db_behavior->thisobj = bhv->GetID();
helper->_db_behavior->name = bhv->GetName();
@ -368,42 +368,42 @@ void IterateBehavior(CKContext* ctx, CKBehavior* bhv, scriptDatabase* db, dbScri
bhv->GetInputCount(),
bhv->GetOutputCount());
helper->_db_behavior->pin_count = helper->_stringCache;
db->write_behavior(helper->_db_behavior);
mDb->write_script_behavior(helper->_db_behavior);
//write target
if (bhv->IsUsingTarget())
proc_pTarget(ctx, bhv->GetTargetParameter(), db, helper, bhv->GetID(), parents);
proc_pTarget(ctx, bhv->GetTargetParameter(), mDb, helper, bhv->GetID(), parents);
int count = 0, i = 0;
//pIn
for (i = 0, count = bhv->GetInputParameterCount(); i < count; i++)
proc_pIn(ctx, bhv->GetInputParameter(i), db, helper, bhv->GetID(), parents, i, TRUE);
proc_pIn(ctx, bhv->GetInputParameter(i), mDb, helper, bhv->GetID(), parents, i, TRUE);
//pOut
for (i = 0, count = bhv->GetOutputParameterCount(); i < count; i++)
proc_pOut(ctx, bhv->GetOutputParameter(i), db, helper, bhv->GetID(), parents, i, TRUE);
proc_pOut(ctx, bhv->GetOutputParameter(i), mDb, helper, bhv->GetID(), parents, i, TRUE);
//bIn
for (i = 0, count = bhv->GetInputCount(); i < count; i++)
proc_bIn(bhv->GetInput(i), db, helper, bhv->GetID(), i);
proc_bIn(bhv->GetInput(i), mDb, helper, bhv->GetID(), i);
//bOut
for (i = 0, count = bhv->GetOutputCount(); i < count; i++)
proc_bOut(bhv->GetOutput(i), db, helper, bhv->GetID(), i);
proc_bOut(bhv->GetOutput(i), mDb, helper, bhv->GetID(), i);
//bLink
for (i = 0, count = bhv->GetSubBehaviorLinkCount(); i < count; i++)
proc_bLink(bhv->GetSubBehaviorLink(i), db, helper, bhv->GetID());
proc_bLink(bhv->GetSubBehaviorLink(i), mDb, helper, bhv->GetID());
//pLocal
for (i = 0, count = bhv->GetLocalParameterCount(); i < count; i++)
proc_pLocal(bhv->GetLocalParameter(i), db, helper, bhv->GetID(),
proc_pLocal(bhv->GetLocalParameter(i), mDb, helper, bhv->GetID(),
bhv->IsLocalParameterSetting(i));
//pOper
for (i = 0, count = bhv->GetParameterOperationCount(); i < count; i++)
proc_pOper(ctx, bhv->GetParameterOperation(i), db, helper, bhv->GetID());
proc_pOper(ctx, bhv->GetParameterOperation(i), mDb, helper, bhv->GetID());
//iterate sub bb
for (i = 0, count = bhv->GetSubBehaviorCount(); i < count; i++)
IterateBehavior(ctx, bhv->GetSubBehavior(i), db, helper, bhv->GetID());
IterateBehavior(ctx, bhv->GetSubBehavior(i), mDb, helper, bhv->GetID());
}
void DigParameterData(CKParameterLocal* p, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents) {
void DigParameterData(CKParameterLocal* p, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents) {
CKGUID t = p->GetGUID();
BOOL unknowType = FALSE;
@ -412,12 +412,12 @@ void DigParameterData(CKParameterLocal* p, scriptDatabase* db, dbScriptDataStruc
//nothing
if (t == CKPGUID_NONE) return;
if (p->GetParameterClassID() && p->GetValueObject(false)) {
helper_pDataExport("id", (long)p->GetValueObject(false)->GetID(), db, helper, parents);
helper_pDataExport("name", p->GetValueObject(false)->GetName(), db, helper, parents);
helper_pDataExport("id", (long)p->GetValueObject(false)->GetID(), mDb, helper, parents);
helper_pDataExport("name", p->GetValueObject(false)->GetName(), mDb, helper, parents);
CK_CLASSID none_classid = p->GetValueObject(false)->GetClassID();
CKParameterType none_type = helper->_parameterManager->ClassIDToType(none_classid);
helper_pDataExport("type",helper->_parameterManager->ParameterTypeToName(none_type), db, helper, parents);
helper_pDataExport("type",helper->_parameterManager->ParameterTypeToName(none_type), mDb, helper, parents);
return;
}
//float
@ -426,7 +426,7 @@ void DigParameterData(CKParameterLocal* p, scriptDatabase* db, dbScriptDataStruc
|| t == CKPGUID_FLOATSLIDER
#endif
) {
helper_pDataExport("float-data", *(float*)(p->GetReadDataPtr(false)), db, helper, parents);
helper_pDataExport("float-data", *(float*)(p->GetReadDataPtr(false)), mDb, helper, parents);
return;
}
//int
@ -437,22 +437,22 @@ void DigParameterData(CKParameterLocal* p, scriptDatabase* db, dbScriptDataStruc
|| t == CKPGUID_LIGHTTYPE || t == CKPGUID_SPRITEALIGN || t == CKPGUID_DIRECTION || t == CKPGUID_LAYERTYPE
|| t == CKPGUID_COMPOPERATOR || t == CKPGUID_BINARYOPERATOR || t == CKPGUID_SETOPERATOR
|| t == CKPGUID_OBSTACLEPRECISION || t == CKPGUID_OBSTACLEPRECISIONBEH) {
helper_pDataExport("int-data", (long)(*(int*)(p->GetReadDataPtr(false))), db, helper, parents);
helper_pDataExport("int-data", (long)(*(int*)(p->GetReadDataPtr(false))), mDb, helper, parents);
return;
}
if (t == CKPGUID_VECTOR) {
VxVector vec;
memcpy(&vec, p->GetReadDataPtr(false), sizeof(vec));
helper_pDataExport("vector.x", vec.x, db, helper, parents);
helper_pDataExport("vector.y", vec.y, db, helper, parents);
helper_pDataExport("vector.z", vec.z, db, helper, parents);
helper_pDataExport("vector.x", vec.x, mDb, helper, parents);
helper_pDataExport("vector.y", vec.y, mDb, helper, parents);
helper_pDataExport("vector.z", vec.z, mDb, helper, parents);
return;
}
if (t == CKPGUID_2DVECTOR) {
Vx2DVector vec;
memcpy(&vec, p->GetReadDataPtr(false), sizeof(vec));
helper_pDataExport("2dvector.x", vec.x, db, helper, parents);
helper_pDataExport("2dvector.y", vec.y, db, helper, parents);
helper_pDataExport("2dvector.x", vec.x, mDb, helper, parents);
helper_pDataExport("2dvector.y", vec.y, mDb, helper, parents);
return;
}
if (t == CKPGUID_MATRIX) {
@ -463,7 +463,7 @@ void DigParameterData(CKParameterLocal* p, scriptDatabase* db, dbScriptDataStruc
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 4; ++j) {
sprintf(position, "matrix[%d][%d]", i, j);
helper_pDataExport(position, mat[i][j], db, helper, parents);
helper_pDataExport(position, mat[i][j], mDb, helper, parents);
}
}
return;
@ -471,10 +471,10 @@ void DigParameterData(CKParameterLocal* p, scriptDatabase* db, dbScriptDataStruc
if (t == CKPGUID_COLOR) {
VxColor col;
memcpy(&col, p->GetReadDataPtr(false), sizeof(col));
helper_pDataExport("color.r", col.r, db, helper, parents);
helper_pDataExport("color.g", col.g, db, helper, parents);
helper_pDataExport("color.b", col.b, db, helper, parents);
helper_pDataExport("color.a", col.a, db, helper, parents);
helper_pDataExport("color.r", col.r, mDb, helper, parents);
helper_pDataExport("color.g", col.g, mDb, helper, parents);
helper_pDataExport("color.b", col.b, mDb, helper, parents);
helper_pDataExport("color.a", col.a, mDb, helper, parents);
return;
}
if (t == CKPGUID_2DCURVE) {
@ -488,27 +488,27 @@ void DigParameterData(CKParameterLocal* p, scriptDatabase* db, dbScriptDataStruc
endIndex = strlen(prefix);
changeSuffix(".pos.x");
helper_pDataExport(prefix, c->GetControlPoint(i)->GetPosition().x, db, helper, parents);
helper_pDataExport(prefix, c->GetControlPoint(i)->GetPosition().x, mDb, helper, parents);
changeSuffix(".pos.y");
helper_pDataExport(prefix, c->GetControlPoint(i)->GetPosition().y, db, helper, parents);
helper_pDataExport(prefix, c->GetControlPoint(i)->GetPosition().y, mDb, helper, parents);
changeSuffix(".islinear");
helper_pDataExport(prefix, (long)c->GetControlPoint(i)->IsLinear(), db, helper, parents);
helper_pDataExport(prefix, (long)c->GetControlPoint(i)->IsLinear(), mDb, helper, parents);
if (c->GetControlPoint(i)->IsTCB()) {
changeSuffix(".bias");
helper_pDataExport(prefix, c->GetControlPoint(i)->GetBias(), db, helper, parents);
helper_pDataExport(prefix, c->GetControlPoint(i)->GetBias(), mDb, helper, parents);
changeSuffix(".continuity");
helper_pDataExport(prefix, c->GetControlPoint(i)->GetContinuity(), db, helper, parents);
helper_pDataExport(prefix, c->GetControlPoint(i)->GetContinuity(), mDb, helper, parents);
changeSuffix(".tension");
helper_pDataExport(prefix, c->GetControlPoint(i)->GetTension(), db, helper, parents);
helper_pDataExport(prefix, c->GetControlPoint(i)->GetTension(), mDb, helper, parents);
} else {
changeSuffix(".intangent.x");
helper_pDataExport(prefix, c->GetControlPoint(i)->GetInTangent().x, db, helper, parents);
helper_pDataExport(prefix, c->GetControlPoint(i)->GetInTangent().x, mDb, helper, parents);
changeSuffix(".intangent.y");
helper_pDataExport(prefix, c->GetControlPoint(i)->GetInTangent().y, db, helper, parents);
helper_pDataExport(prefix, c->GetControlPoint(i)->GetInTangent().y, mDb, helper, parents);
changeSuffix(".outtangent.x");
helper_pDataExport(prefix, c->GetControlPoint(i)->GetOutTangent().x, db, helper, parents);
helper_pDataExport(prefix, c->GetControlPoint(i)->GetOutTangent().x, mDb, helper, parents);
changeSuffix(".outtangent.y");
helper_pDataExport(prefix, c->GetControlPoint(i)->GetOutTangent().y, db, helper, parents);
helper_pDataExport(prefix, c->GetControlPoint(i)->GetOutTangent().y, mDb, helper, parents);
}
}
return;
@ -521,7 +521,7 @@ void DigParameterData(CKParameterLocal* p, scriptDatabase* db, dbScriptDataStruc
helper->_db_pData->data.insert(0, cptr, 0, cc);
helper->_db_pData->field = "str";
helper->_db_pData->belong_to = p->GetID();
db->write_pData(helper->_db_pData);
mDb->write_pData(helper->_db_pData);
return;
}
@ -554,10 +554,10 @@ void DigParameterData(CKParameterLocal* p, scriptDatabase* db, dbScriptDataStruc
else
helper->_db_pData->field = "dump.partial_data";
helper->_db_pData->belong_to = p->GetID();
db->write_pData(helper->_db_pData);
mDb->write_pData(helper->_db_pData);
//dump data length
helper_pDataExport("dump.length", (long)cc, db, helper, parents);
helper_pDataExport("dump.length", (long)cc, mDb, helper, parents);
return;
}
}

View File

@ -4,23 +4,23 @@
#include "stdafx.h"
#include "database.h"
void generate_pLink_in_pIn(CKContext* ctx, CKParameterIn* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB, BOOL isTarget);
void proc_pTarget(CKContext* ctx, CKParameterIn* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents);
void proc_pIn(CKContext* ctx, CKParameterIn* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB);
void proc_pOut(CKContext* ctx, CKParameterOut* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB);
void proc_bIn(CKBehaviorIO* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, int index);
void proc_bOut(CKBehaviorIO* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, int index);
void proc_bLink(CKBehaviorLink* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents);
void proc_pLocal(CKParameterLocal* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, BOOL is_setting);
void proc_pOper(CKContext* ctx, CKParameterOperation* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents);
void proc_pAttr(CKContext* ctx, scriptDatabase* db, dbScriptDataStructHelper* helper, CKParameter* cache);
void generate_pLink_in_pIn(CKContext* ctx, CKParameterIn* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB, BOOL isTarget);
void proc_pTarget(CKContext* ctx, CKParameterIn* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents);
void proc_pIn(CKContext* ctx, CKParameterIn* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB);
void proc_pOut(CKContext* ctx, CKParameterOut* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB);
void proc_bIn(CKBehaviorIO* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, int index);
void proc_bOut(CKBehaviorIO* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, int index);
void proc_bLink(CKBehaviorLink* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents);
void proc_pLocal(CKParameterLocal* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, BOOL is_setting);
void proc_pOper(CKContext* ctx, CKParameterOperation* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents);
void proc_pAttr(CKContext* ctx, DocumentDatabase* mDb, dbDocDataStructHelper* helper, CKParameter* cache);
void helper_pDataExport(const char* field, long data, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents);
void helper_pDataExport(const char* field, float data, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents);
void helper_pDataExport(const char* field, const char* data, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents);
void helper_pDataExport(const char* field, long data, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents);
void helper_pDataExport(const char* field, float data, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents);
void helper_pDataExport(const char* field, const char* data, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents);
void IterateBehavior(CKContext* ctx, CKBehavior* bhv, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents);
void IterateScript(CKContext* ctx, scriptDatabase* db, dbScriptDataStructHelper* helper);
void DigParameterData(CKParameterLocal* pl, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents);
void IterateBehavior(CKContext* ctx, CKBehavior* bhv, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents);
void IterateScript(CKContext* ctx, DocumentDatabase* mDb, dbDocDataStructHelper* helper);
void DigParameterData(CKParameterLocal* pl, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents);
#endif

View File

@ -8,7 +8,7 @@ combined_database::combined_database() :
;
}
db_shared_dictData* combined_database::get_struct() {
dbdoc_data* combined_database::get_struct() {
if (helper_script != NULL) return helper_script->_db_pData;
if (helper_data != NULL) return helper_data->_db_objParam;
return NULL;
@ -20,22 +20,22 @@ char* combined_database::get_string_cache() {
return NULL;
}
void combined_database::write_dict(db_shared_dictData* data) {
void combined_database::write_dict(dbdoc_data* data) {
if (db_script != NULL) db_script->write_pData(data);
if (db_data != NULL) db_data->write_objParam(data);
}
void DigParameterData(CKParameter* p, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents) {
void DigParameterData(CKParameter* p, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents) {
combined_database cdb;
cdb.db_script = db;
cdb.db_script = mDb;
cdb.helper_script = helper;
DigParameterData(p, &cdb, parents);
}
void DigParameterData(CKParameter* p, dataDatabase* db, dbDataDataStructHelper* helper, EXPAND_CK_ID parents) {
void DigParameterData(CKParameter* p, dataDatabase* mDb, dbDataDataStructHelper* helper, EXPAND_CK_ID parents) {
combined_database cdb;
cdb.db_data = db;
cdb.db_data = mDb;
cdb.helper_data = helper;
DigParameterData(p, &cdb, parents);

View File

@ -7,12 +7,12 @@
class combined_database {
public:
combined_database();
db_shared_dictData* get_struct();
dbdoc_data* get_struct();
char* get_string_cache();
void write_dict(db_shared_dictData* data);
void write_dict(dbdoc_data* data);
scriptDatabase* db_script;
dbScriptDataStructHelper* helper_script;
DocumentDatabase* db_script;
dbDocDataStructHelper* helper_script;
dataDatabase* db_data;
dbDataDataStructHelper* helper_data;
};
@ -21,11 +21,11 @@ public:
#define safeStringCopy(storage,str) storage=(str)?(str):"";
void DigParameterData(CKParameter* p, combined_database* helper, EXPAND_CK_ID parents);
void DigParameterData(CKParameter* p, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents);
void DigParameterData(CKParameter* p, dataDatabase* db, dbDataDataStructHelper* helper, EXPAND_CK_ID parents);
void DigParameterData(CKParameter* p, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents);
void DigParameterData(CKParameter* p, dataDatabase* mDb, dbDataDataStructHelper* helper, EXPAND_CK_ID parents);
void helper_FillStruct(const char* field, long data, db_shared_dictData* helper);
void helper_FillStruct(const char* field, float data, db_shared_dictData* helper);
void helper_FillStruct(const char* field, const char* data, db_shared_dictData* helper);
void helper_FillStruct(const char* field, long data, dbdoc_data* helper);
void helper_FillStruct(const char* field, float data, dbdoc_data* helper);
void helper_FillStruct(const char* field, const char* data, dbdoc_data* helper);
#endif

View File

@ -17,11 +17,11 @@
#ifndef _AFX_NO_DB_SUPPORT
#include <afxdb.h> // MFC ODBC database classes
#include <afxdb.h> // MFC ODBC SSMaterializerDatabase classes
#endif // _AFX_NO_DB_SUPPORT
#ifndef _AFX_NO_DAO_SUPPORT
#include <afxdao.h> // MFC DAO database classes
#include <afxdao.h> // MFC DAO SSMaterializerDatabase classes
#endif // _AFX_NO_DAO_SUPPORT
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls

View File

@ -0,0 +1 @@
#pragma once

View File

@ -80,25 +80,25 @@ void PluginMenuCallback(int commandID) {
switch (commandID) {
case 0:
{
//init file
//Init file
std::string file;
OpenFileDialog(&file);
if (file.empty())
break;
DeleteFile(file.c_str());
//init resources
scriptDatabase* _db = new scriptDatabase();
dbScriptDataStructHelper* _helper = new dbScriptDataStructHelper();
_db->open(file.c_str());
_helper->init(ctx->GetParameterManager());
//Init resources
DocumentDatabase* _db = new DocumentDatabase();
dbDocDataStructHelper* _helper = new dbDocDataStructHelper();
_db->Open(file.c_str());
_helper->Init(ctx->GetParameterManager());
//iterate item
IterateScript(ctx, _db, _helper);
//close all resources
//Close all resources
_helper->dispose();
_db->close();
_db->Close();
delete _helper;
delete _db;
@ -107,18 +107,18 @@ void PluginMenuCallback(int commandID) {
break;
case 1:
{
//init file
//Init file
std::string file;
OpenFileDialog(&file);
if (file.empty())
break;
DeleteFile(file.c_str());
//init
envDatabase* _db = new envDatabase();
//Init
EnvironmentDatabase* _db = new EnvironmentDatabase();
dbEnvDataStructHelper* _helper = new dbEnvDataStructHelper();
_db->open(file.c_str());
_helper->init();
_db->Open(file.c_str());
_helper->Init();
//iterate parameter operation/param
IterateParameterOperation(ctx->GetParameterManager(), _db, _helper);
@ -132,7 +132,7 @@ void PluginMenuCallback(int commandID) {
//release all
_helper->dispose();
_db->close();
_db->Close();
delete _helper;
delete _db;

View File

@ -9,7 +9,7 @@ void PlayerMain(const char* virtools_composition, const char* script_db_path, co
printf("Homepage: https://github.com/yyc12345/SuperScriptMaterializer\n");
printf("Report bug: https://github.com/yyc12345/SuperScriptMaterializer/issues\n");
// ====================== init ck2 engine
// ====================== Init ck2 engine
#if defined(VIRTOOLS_21)
CommonAssert(LoadLibrary("CK2.dll") != NULL, "Error loading CK2.dll");
#endif
@ -34,8 +34,8 @@ void PlayerMain(const char* virtools_composition, const char* script_db_path, co
#endif
printf("Parsing %s...\n", virtools_composition);
// ====================== do database export
// define and init
// ====================== do SSMaterializerDatabase export
// define and Init
scriptDatabase* _script_db = new scriptDatabase();
dbScriptDataStructHelper* _script_helper = new dbScriptDataStructHelper();
envDatabase* _env_db = new envDatabase();
@ -88,13 +88,13 @@ void PlayerMain(const char* virtools_composition, const char* script_db_path, co
context->ClearAll();
// todo: Virtools 4.0 standalone version throw exception in there, but i don't knwo why
// but it doesn't affect database export, perhaps
// but it doesn't affect SSMaterializerDatabase export, perhaps
CKCloseContext(context);
CKShutdown();
// todo: Virtools 2.5 standalone version throw exception in there, but i don't knwo why
// but it doesn't affect database export, perhaps
// but it doesn't affect SSMaterializerDatabase export, perhaps
}
void CommonAssert(BOOL condition, const char* desc) {