finish basic export func
This commit is contained in:
		@ -94,12 +94,14 @@
 | 
				
			|||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <ClInclude Include="database.h" />
 | 
					    <ClInclude Include="database.h" />
 | 
				
			||||||
    <ClInclude Include="resource.h" />
 | 
					    <ClInclude Include="resource.h" />
 | 
				
			||||||
 | 
					    <ClInclude Include="script_export.h" />
 | 
				
			||||||
    <ClInclude Include="vt_menu.h" />
 | 
					    <ClInclude Include="vt_menu.h" />
 | 
				
			||||||
    <ClInclude Include="stdafx.h" />
 | 
					    <ClInclude Include="stdafx.h" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <ClCompile Include="database.cpp" />
 | 
					    <ClCompile Include="database.cpp" />
 | 
				
			||||||
    <ClCompile Include="main.cpp" />
 | 
					    <ClCompile Include="main.cpp" />
 | 
				
			||||||
 | 
					    <ClCompile Include="script_export.cpp" />
 | 
				
			||||||
    <ClCompile Include="vt_menu.cpp" />
 | 
					    <ClCompile Include="vt_menu.cpp" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
				
			|||||||
@ -27,6 +27,9 @@
 | 
				
			|||||||
    <ClInclude Include="database.h">
 | 
					    <ClInclude Include="database.h">
 | 
				
			||||||
      <Filter>头文件</Filter>
 | 
					      <Filter>头文件</Filter>
 | 
				
			||||||
    </ClInclude>
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="script_export.h">
 | 
				
			||||||
 | 
					      <Filter>头文件</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <ClCompile Include="main.cpp">
 | 
					    <ClCompile Include="main.cpp">
 | 
				
			||||||
@ -38,6 +41,9 @@
 | 
				
			|||||||
    <ClCompile Include="database.cpp">
 | 
					    <ClCompile Include="database.cpp">
 | 
				
			||||||
      <Filter>源文件</Filter>
 | 
					      <Filter>源文件</Filter>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
 | 
					    <ClCompile Include="script_export.cpp">
 | 
				
			||||||
 | 
					      <Filter>源文件</Filter>
 | 
				
			||||||
 | 
					    </ClCompile>
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <None Include="SuperScriptMaterializer.def">
 | 
					    <None Include="SuperScriptMaterializer.def">
 | 
				
			||||||
 | 
				
			|||||||
@ -10,7 +10,11 @@ void dbDataStructHelper::init(CKParameterManager* paramManager) {
 | 
				
			|||||||
	_db_pOut = new db_pOut();
 | 
						_db_pOut = new db_pOut();
 | 
				
			||||||
	_db_bIn = new db_bIn();
 | 
						_db_bIn = new db_bIn();
 | 
				
			||||||
	_db_bOut = new db_bOut();
 | 
						_db_bOut = new db_bOut();
 | 
				
			||||||
	_db_bLlink = new db_bLlink();
 | 
						_db_bLink = new db_bLink();
 | 
				
			||||||
 | 
						_db_pLocal = new db_pLocal();
 | 
				
			||||||
 | 
						_db_pLink = new db_pLink();
 | 
				
			||||||
 | 
						_db_pLocalData = new db_pLocalData();
 | 
				
			||||||
 | 
						_db_pOper = new db_pOper();
 | 
				
			||||||
	_parameterManager = paramManager;
 | 
						_parameterManager = paramManager;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -22,7 +26,11 @@ void dbDataStructHelper::dispose() {
 | 
				
			|||||||
	delete _db_pOut;
 | 
						delete _db_pOut;
 | 
				
			||||||
	delete _db_bIn;
 | 
						delete _db_bIn;
 | 
				
			||||||
	delete _db_bOut;
 | 
						delete _db_bOut;
 | 
				
			||||||
	delete _db_bLlink;
 | 
						delete _db_bLink;
 | 
				
			||||||
 | 
						delete _db_pLocalData;
 | 
				
			||||||
 | 
						delete _db_pLink;
 | 
				
			||||||
 | 
						delete _db_pLocal;
 | 
				
			||||||
 | 
						delete _db_pOper;
 | 
				
			||||||
	_parameterManager = NULL;
 | 
						_parameterManager = NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -50,19 +58,19 @@ void database::open(const char* file) {
 | 
				
			|||||||
		NULL, NULL, &errmsg);
 | 
							NULL, NULL, &errmsg);
 | 
				
			||||||
	if (result != SQLITE_OK) goto fail;
 | 
						if (result != SQLITE_OK) goto fail;
 | 
				
			||||||
	result = sqlite3_exec(db,
 | 
						result = sqlite3_exec(db,
 | 
				
			||||||
		"CREATE TABLE behavior('thisobj' INTEGER, 'name' TEXT, 'type' INTEGER, 'proto_name' TEXT, 'proto_guid' INTEGER, 'flags' INTEGER, 'priority' INTEGER, 'version' INTEGER, 'parent' INTEGER);",
 | 
							"CREATE TABLE behavior('thisobj' INTEGER, 'name' TEXT, 'type' INTEGER, 'proto_name' TEXT, 'proto_guid' TEXT, 'flags' INTEGER, 'priority' INTEGER, 'version' INTEGER, 'parent' INTEGER);",
 | 
				
			||||||
		NULL, NULL, &errmsg);
 | 
							NULL, NULL, &errmsg);
 | 
				
			||||||
	if (result != SQLITE_OK) goto fail;
 | 
						if (result != SQLITE_OK) goto fail;
 | 
				
			||||||
	result = sqlite3_exec(db,
 | 
						result = sqlite3_exec(db,
 | 
				
			||||||
		"CREATE TABLE pTarget('thisobj' INTEGER, 'name' TEXT, 'type' TEXT, 'type_guid' INTEGER, 'belong_to' INTEGER, 'direct_source' INTEGER, 'shard_source' INTEGER);",
 | 
							"CREATE TABLE pTarget('thisobj' INTEGER, 'name' TEXT, 'type' TEXT, 'type_guid' TEXT, 'belong_to' INTEGER, 'direct_source' INTEGER, 'shard_source' INTEGER);",
 | 
				
			||||||
		NULL, NULL, &errmsg);
 | 
							NULL, NULL, &errmsg);
 | 
				
			||||||
	if (result != SQLITE_OK) goto fail;
 | 
						if (result != SQLITE_OK) goto fail;
 | 
				
			||||||
	result = sqlite3_exec(db,
 | 
						result = sqlite3_exec(db,
 | 
				
			||||||
		"CREATE TABLE pIn('thisobj' INTEGER, 'index' INTEGER, 'name' TEXT, 'type' TEXT, 'type_guid' INTEGER, 'belong_to' INTEGER, 'direct_source' INTEGER, 'shard_source' INTEGER);",
 | 
							"CREATE TABLE pIn('thisobj' INTEGER, 'index' INTEGER, 'name' TEXT, 'type' TEXT, 'type_guid' TEXT, 'belong_to' INTEGER, 'direct_source' INTEGER, 'shard_source' INTEGER);",
 | 
				
			||||||
		NULL, NULL, &errmsg);
 | 
							NULL, NULL, &errmsg);
 | 
				
			||||||
	if (result != SQLITE_OK) goto fail;
 | 
						if (result != SQLITE_OK) goto fail;
 | 
				
			||||||
	result = sqlite3_exec(db,
 | 
						result = sqlite3_exec(db,
 | 
				
			||||||
		"CREATE TABLE pOut('thisobj' INTEGER, 'index' INTEGER, 'name' TEXT, 'type' TEXT, 'type_guid' INTEGER, 'belong_to' INTEGER);",
 | 
							"CREATE TABLE pOut('thisobj' INTEGER, 'index' INTEGER, 'name' TEXT, 'type' TEXT, 'type_guid' TEXT, 'belong_to' INTEGER);",
 | 
				
			||||||
		NULL, NULL, &errmsg);
 | 
							NULL, NULL, &errmsg);
 | 
				
			||||||
	if (result != SQLITE_OK) goto fail;
 | 
						if (result != SQLITE_OK) goto fail;
 | 
				
			||||||
	result = sqlite3_exec(db,
 | 
						result = sqlite3_exec(db,
 | 
				
			||||||
@ -77,6 +85,23 @@ void database::open(const char* file) {
 | 
				
			|||||||
		"CREATE TABLE bLink('input' INTEGER, 'output' INTEGER, 'delay' INTEGER, 'belong_to' INTEGER);",
 | 
							"CREATE TABLE bLink('input' INTEGER, 'output' INTEGER, 'delay' INTEGER, 'belong_to' INTEGER);",
 | 
				
			||||||
		NULL, NULL, &errmsg);
 | 
							NULL, NULL, &errmsg);
 | 
				
			||||||
	if (result != SQLITE_OK) goto fail;
 | 
						if (result != SQLITE_OK) goto fail;
 | 
				
			||||||
 | 
						result = sqlite3_exec(db,
 | 
				
			||||||
 | 
							"CREATE TABLE pLocal('thisobj' INTEGER, 'name' TEXT, 'type' TEXT, 'type_guid' TEXT, 'is_setting' INTEGER, 'belong_to' INTEGER);",
 | 
				
			||||||
 | 
							NULL, NULL, &errmsg);
 | 
				
			||||||
 | 
						if (result != SQLITE_OK) goto fail;
 | 
				
			||||||
 | 
						result = sqlite3_exec(db,
 | 
				
			||||||
 | 
							"CREATE TABLE pLocalData('field' TEXT, 'data' TEXT, 'belong_to' INTEGER);",
 | 
				
			||||||
 | 
							NULL, NULL, &errmsg);
 | 
				
			||||||
 | 
						if (result != SQLITE_OK) goto fail;
 | 
				
			||||||
 | 
						result = sqlite3_exec(db,
 | 
				
			||||||
 | 
							"CREATE TABLE pLink('input' INTEGER, 'output' INTEGER, 'belong_to' INTEGER);",
 | 
				
			||||||
 | 
							NULL, NULL, &errmsg);
 | 
				
			||||||
 | 
						if (result != SQLITE_OK) goto fail;
 | 
				
			||||||
 | 
						result = sqlite3_exec(db,
 | 
				
			||||||
 | 
							"CREATE TABLE pOper('thisobj' INTEGER, 'op' TEXT, 'op_guid' TEXT, 'belong_to' INTEGER);",
 | 
				
			||||||
 | 
							NULL, NULL, &errmsg);
 | 
				
			||||||
 | 
						if (result != SQLITE_OK) goto fail;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	//start job
 | 
						//start job
 | 
				
			||||||
	sqlite3_exec(db, "begin;", NULL, NULL, &errmsg);
 | 
						sqlite3_exec(db, "begin;", NULL, NULL, &errmsg);
 | 
				
			||||||
@ -108,12 +133,13 @@ void database::close() {
 | 
				
			|||||||
void database::write_CKBehavior(dbCKBehavior* data) {
 | 
					void database::write_CKBehavior(dbCKBehavior* data) {
 | 
				
			||||||
	if (db == NULL) return;
 | 
						if (db == NULL) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sprintf(commandStr, "INSERT INTO behavior VALUES (%d, '%s', %d, '%s', %d, %d, %d, %d, %d);",
 | 
						sprintf(commandStr, "INSERT INTO behavior VALUES (%d, '%s', %d, '%s', '%d, %d', %d, %d, %d, %d);",
 | 
				
			||||||
		data->thisobj,
 | 
							data->thisobj,
 | 
				
			||||||
		data->name,
 | 
							data->name,
 | 
				
			||||||
		data->type,
 | 
							data->type,
 | 
				
			||||||
		data->proto_name,
 | 
							data->proto_name,
 | 
				
			||||||
		data->proto_guid,
 | 
							data->proto_guid[0],
 | 
				
			||||||
 | 
							data->proto_guid[1],
 | 
				
			||||||
		data->flags,
 | 
							data->flags,
 | 
				
			||||||
		data->priority,
 | 
							data->priority,
 | 
				
			||||||
		data->version,
 | 
							data->version,
 | 
				
			||||||
@ -137,11 +163,12 @@ void database::write_CKScript(dbCKScript* data) {
 | 
				
			|||||||
void database::write_pTarget(db_pTarget* data) {
 | 
					void database::write_pTarget(db_pTarget* data) {
 | 
				
			||||||
	if (db == NULL) return;
 | 
						if (db == NULL) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sprintf(commandStr, "INSERT INTO pTarget VALUES (%d, '%s', '%s', %d, %d, %d, %d);",
 | 
						sprintf(commandStr, "INSERT INTO pTarget VALUES (%d, '%s', '%s', '%d, %d', %d, %d, %d);",
 | 
				
			||||||
		data->thisobj,
 | 
							data->thisobj,
 | 
				
			||||||
		data->name,
 | 
							data->name,
 | 
				
			||||||
		data->type,
 | 
							data->type,
 | 
				
			||||||
		data->type_guid,
 | 
							data->type_guid[0],
 | 
				
			||||||
 | 
							data->type_guid[1],
 | 
				
			||||||
		data->belong_to,
 | 
							data->belong_to,
 | 
				
			||||||
		data->direct_source,
 | 
							data->direct_source,
 | 
				
			||||||
		data->shared_source);
 | 
							data->shared_source);
 | 
				
			||||||
@ -152,12 +179,13 @@ void database::write_pTarget(db_pTarget* data) {
 | 
				
			|||||||
void database::write_pIn(db_pIn* data) {
 | 
					void database::write_pIn(db_pIn* data) {
 | 
				
			||||||
	if (db == NULL) return;
 | 
						if (db == NULL) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sprintf(commandStr, "INSERT INTO pIn VALUES (%d, %d, '%s', '%s', %d, %d, %d, %d);",
 | 
						sprintf(commandStr, "INSERT INTO pIn VALUES (%d, %d, '%s', '%s', '%d, %d', %d, %d, %d);",
 | 
				
			||||||
		data->thisobj,
 | 
							data->thisobj,
 | 
				
			||||||
		data->index,
 | 
							data->index,
 | 
				
			||||||
		data->name,
 | 
							data->name,
 | 
				
			||||||
		data->type,
 | 
							data->type,
 | 
				
			||||||
		data->type_guid,
 | 
							data->type_guid[0],
 | 
				
			||||||
 | 
							data->type_guid[1],
 | 
				
			||||||
		data->belong_to,
 | 
							data->belong_to,
 | 
				
			||||||
		data->direct_source,
 | 
							data->direct_source,
 | 
				
			||||||
		data->shared_source);
 | 
							data->shared_source);
 | 
				
			||||||
@ -168,12 +196,13 @@ void database::write_pIn(db_pIn* data) {
 | 
				
			|||||||
void database::write_pOut(db_pOut* data) {
 | 
					void database::write_pOut(db_pOut* data) {
 | 
				
			||||||
	if (db == NULL) return;
 | 
						if (db == NULL) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sprintf(commandStr, "INSERT INTO pOut VALUES (%d, %d, '%s', '%s', %d, %d);",
 | 
						sprintf(commandStr, "INSERT INTO pOut VALUES (%d, %d, '%s', '%s', '%d, %d', %d);",
 | 
				
			||||||
		data->thisobj,
 | 
							data->thisobj,
 | 
				
			||||||
		data->index,
 | 
							data->index,
 | 
				
			||||||
		data->name,
 | 
							data->name,
 | 
				
			||||||
		data->type,
 | 
							data->type,
 | 
				
			||||||
		data->type_guid,
 | 
							data->type_guid[0],
 | 
				
			||||||
 | 
							data->type_guid[1],
 | 
				
			||||||
		data->belong_to);
 | 
							data->belong_to);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sqlite3_exec(db, commandStr, NULL, NULL, &errmsg);
 | 
						sqlite3_exec(db, commandStr, NULL, NULL, &errmsg);
 | 
				
			||||||
@ -203,7 +232,7 @@ void database::write_bOut(db_bOut* data) {
 | 
				
			|||||||
	sqlite3_exec(db, commandStr, NULL, NULL, &errmsg);
 | 
						sqlite3_exec(db, commandStr, NULL, NULL, &errmsg);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void database::write_bLink(db_bLlink* data) {
 | 
					void database::write_bLink(db_bLink* data) {
 | 
				
			||||||
	if (db == NULL) return;
 | 
						if (db == NULL) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sprintf(commandStr, "INSERT INTO bLink VALUES (%d, %d, %d, %d);",
 | 
						sprintf(commandStr, "INSERT INTO bLink VALUES (%d, %d, %d, %d);",
 | 
				
			||||||
@ -215,4 +244,55 @@ void database::write_bLink(db_bLlink* data) {
 | 
				
			|||||||
	sqlite3_exec(db, commandStr, NULL, NULL, &errmsg);
 | 
						sqlite3_exec(db, commandStr, NULL, NULL, &errmsg);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void database::write_pLocal(db_pLocal* data) {
 | 
				
			||||||
 | 
						if (db == NULL) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sprintf(commandStr, "INSERT INTO pLocal VALUES (%d, '%s', '%s', '%d, %d', %d, %d);",
 | 
				
			||||||
 | 
							data->thisobj,
 | 
				
			||||||
 | 
							data->name,
 | 
				
			||||||
 | 
							data->type,
 | 
				
			||||||
 | 
							data->type_guid[0],
 | 
				
			||||||
 | 
							data->type_guid[1],
 | 
				
			||||||
 | 
							data->is_setting,
 | 
				
			||||||
 | 
							data->belong_to);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sqlite3_exec(db, commandStr, NULL, NULL, &errmsg);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void database::write_pLink(db_pLink* data) {
 | 
				
			||||||
 | 
						if (db == NULL) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sprintf(commandStr, "INSERT INTO pLink VALUES (%d, %d, %d);",
 | 
				
			||||||
 | 
							data->input,
 | 
				
			||||||
 | 
							data->output,
 | 
				
			||||||
 | 
							data->belong_to);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sqlite3_exec(db, commandStr, NULL, NULL, &errmsg);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void database::write_pLocalData(db_pLocalData* data) {
 | 
				
			||||||
 | 
						if (db == NULL) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sprintf(commandStr, "INSERT INTO pLocalData VALUES ('%s', '%s', %d);",
 | 
				
			||||||
 | 
							data->field,
 | 
				
			||||||
 | 
							data->data,
 | 
				
			||||||
 | 
							data->belong_to);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sqlite3_exec(db, commandStr, NULL, NULL, &errmsg);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void database::write_pOper(db_pOper* data) {
 | 
				
			||||||
 | 
						if (db == NULL) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sprintf(commandStr, "INSERT INTO pOper VALUES (%d, '%s', '%d, %d', %d);",
 | 
				
			||||||
 | 
							data->thisobj,
 | 
				
			||||||
 | 
							data->op,
 | 
				
			||||||
 | 
							data->op_guid[0],
 | 
				
			||||||
 | 
							data->op_guid[1],
 | 
				
			||||||
 | 
							data->belong_to);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sqlite3_exec(db, commandStr, NULL, NULL, &errmsg);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#pragma endregion
 | 
					#pragma endregion
 | 
				
			||||||
 | 
				
			|||||||
@ -13,7 +13,7 @@ typedef struct dbCKBehavior {
 | 
				
			|||||||
	char name[1024];
 | 
						char name[1024];
 | 
				
			||||||
	CK_BEHAVIOR_TYPE type;
 | 
						CK_BEHAVIOR_TYPE type;
 | 
				
			||||||
	char proto_name[1024];
 | 
						char proto_name[1024];
 | 
				
			||||||
	CKDWORD proto_guid;
 | 
						CKDWORD proto_guid[2];
 | 
				
			||||||
	CK_BEHAVIOR_FLAGS flags;
 | 
						CK_BEHAVIOR_FLAGS flags;
 | 
				
			||||||
	int priority;
 | 
						int priority;
 | 
				
			||||||
	CKDWORD version;
 | 
						CKDWORD version;
 | 
				
			||||||
@ -31,7 +31,7 @@ typedef struct db_pTarget {
 | 
				
			|||||||
	EXPAND_CK_ID thisobj;
 | 
						EXPAND_CK_ID thisobj;
 | 
				
			||||||
	char name[1024];
 | 
						char name[1024];
 | 
				
			||||||
	char type[1024];
 | 
						char type[1024];
 | 
				
			||||||
	CKDWORD type_guid;
 | 
						CKDWORD type_guid[2];
 | 
				
			||||||
	EXPAND_CK_ID belong_to;
 | 
						EXPAND_CK_ID belong_to;
 | 
				
			||||||
	EXPAND_CK_ID direct_source;
 | 
						EXPAND_CK_ID direct_source;
 | 
				
			||||||
	EXPAND_CK_ID shared_source;
 | 
						EXPAND_CK_ID shared_source;
 | 
				
			||||||
@ -42,7 +42,7 @@ typedef struct db_pIn {
 | 
				
			|||||||
	int index;
 | 
						int index;
 | 
				
			||||||
	char name[1024];
 | 
						char name[1024];
 | 
				
			||||||
	char type[1024];
 | 
						char type[1024];
 | 
				
			||||||
	CKDWORD type_guid;
 | 
						CKDWORD type_guid[2];
 | 
				
			||||||
	EXPAND_CK_ID belong_to;
 | 
						EXPAND_CK_ID belong_to;
 | 
				
			||||||
	EXPAND_CK_ID direct_source;
 | 
						EXPAND_CK_ID direct_source;
 | 
				
			||||||
	EXPAND_CK_ID shared_source;
 | 
						EXPAND_CK_ID shared_source;
 | 
				
			||||||
@ -53,7 +53,7 @@ typedef struct db_pOut {
 | 
				
			|||||||
	int index;
 | 
						int index;
 | 
				
			||||||
	char name[1024];
 | 
						char name[1024];
 | 
				
			||||||
	char type[1024];
 | 
						char type[1024];
 | 
				
			||||||
	CKDWORD type_guid;
 | 
						CKDWORD type_guid[2];
 | 
				
			||||||
	EXPAND_CK_ID belong_to;
 | 
						EXPAND_CK_ID belong_to;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -66,13 +66,41 @@ typedef struct db_bIO {
 | 
				
			|||||||
typedef db_bIO db_bIn;
 | 
					typedef db_bIO db_bIn;
 | 
				
			||||||
typedef db_bIO db_bOut;
 | 
					typedef db_bIO db_bOut;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct db_bLlink {
 | 
					typedef struct db_bLink {
 | 
				
			||||||
	EXPAND_CK_ID input;
 | 
						EXPAND_CK_ID input;
 | 
				
			||||||
	EXPAND_CK_ID output;
 | 
						EXPAND_CK_ID output;
 | 
				
			||||||
	int delay;
 | 
						int delay;
 | 
				
			||||||
	EXPAND_CK_ID belong_to;
 | 
						EXPAND_CK_ID belong_to;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct db_pLocal {
 | 
				
			||||||
 | 
						EXPAND_CK_ID thisobj;
 | 
				
			||||||
 | 
						char name[1024];
 | 
				
			||||||
 | 
						char type[1024];
 | 
				
			||||||
 | 
						CKDWORD type_guid[2];
 | 
				
			||||||
 | 
						BOOL is_setting;
 | 
				
			||||||
 | 
						EXPAND_CK_ID belong_to;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct db_pLocalData {
 | 
				
			||||||
 | 
						char field[1024];
 | 
				
			||||||
 | 
						char data[1024];
 | 
				
			||||||
 | 
						EXPAND_CK_ID belong_to;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct db_pLink {
 | 
				
			||||||
 | 
						EXPAND_CK_ID input;
 | 
				
			||||||
 | 
						EXPAND_CK_ID output;
 | 
				
			||||||
 | 
						EXPAND_CK_ID belong_to;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct db_pOper {
 | 
				
			||||||
 | 
						EXPAND_CK_ID thisobj;
 | 
				
			||||||
 | 
						char op[1024];
 | 
				
			||||||
 | 
						CKDWORD op_guid[2];
 | 
				
			||||||
 | 
						EXPAND_CK_ID belong_to;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#pragma endregion
 | 
					#pragma endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class dbDataStructHelper {
 | 
					class dbDataStructHelper {
 | 
				
			||||||
@ -88,9 +116,11 @@ class dbDataStructHelper {
 | 
				
			|||||||
	db_pOut* _db_pOut;
 | 
						db_pOut* _db_pOut;
 | 
				
			||||||
	db_bIn* _db_bIn;
 | 
						db_bIn* _db_bIn;
 | 
				
			||||||
	db_bOut* _db_bOut;
 | 
						db_bOut* _db_bOut;
 | 
				
			||||||
	db_bLlink* _db_bLlink;
 | 
						db_bLink* _db_bLink;
 | 
				
			||||||
 | 
						db_pLocal* _db_pLocal;
 | 
				
			||||||
 | 
						db_pLink* _db_pLink;
 | 
				
			||||||
 | 
						db_pLocalData* _db_pLocalData;
 | 
				
			||||||
 | 
						db_pOper* _db_pOper;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class database {
 | 
					class database {
 | 
				
			||||||
@ -105,7 +135,11 @@ class database {
 | 
				
			|||||||
	void write_pOut(db_pOut* data);
 | 
						void write_pOut(db_pOut* data);
 | 
				
			||||||
	void write_bIn(db_bIn* data);
 | 
						void write_bIn(db_bIn* data);
 | 
				
			||||||
	void write_bOut(db_bOut* data);
 | 
						void write_bOut(db_bOut* data);
 | 
				
			||||||
	void write_bLink(db_bLlink* data);
 | 
						void write_bLink(db_bLink* data);
 | 
				
			||||||
 | 
						void write_pLocal(db_pLocal* data);
 | 
				
			||||||
 | 
						void write_pLink(db_pLink* data);
 | 
				
			||||||
 | 
						void write_pLocalData(db_pLocalData* data);
 | 
				
			||||||
 | 
						void write_pOper(db_pOper* data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private:
 | 
						private:
 | 
				
			||||||
	sqlite3* db;
 | 
						sqlite3* db;
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										346
									
								
								SuperScriptMaterializer/script_export.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										346
									
								
								SuperScriptMaterializer/script_export.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,346 @@
 | 
				
			|||||||
 | 
					#include "script_export.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define changeSuffix(a) prefix[endIndex]='\0';strcat(prefix,a)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma region inline func
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline void proc_pTarget(CKParameterIn* cache, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents) {
 | 
				
			||||||
 | 
						helper->_db_pTarget->thisobj = cache->GetID();
 | 
				
			||||||
 | 
						strcpy(helper->_db_pTarget->name, cache->GetName());
 | 
				
			||||||
 | 
						strcpy(helper->_db_pTarget->type, helper->_parameterManager->ParameterTypeToName(cache->GetType()));
 | 
				
			||||||
 | 
						helper->_db_pTarget->type_guid[0] = cache->GetGUID().d1;
 | 
				
			||||||
 | 
						helper->_db_pTarget->type_guid[1] = cache->GetGUID().d2;
 | 
				
			||||||
 | 
						helper->_db_pTarget->belong_to = parents;
 | 
				
			||||||
 | 
						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);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline void proc_pIn(CKParameterIn* cache, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents, int index) {
 | 
				
			||||||
 | 
						helper->_db_pIn->thisobj = cache->GetID();
 | 
				
			||||||
 | 
						helper->_db_pIn->index = index;
 | 
				
			||||||
 | 
						strcpy(helper->_db_pIn->name, cache->GetName());
 | 
				
			||||||
 | 
						strcpy(helper->_db_pIn->type, helper->_parameterManager->ParameterTypeToName(cache->GetType()));
 | 
				
			||||||
 | 
						helper->_db_pIn->type_guid[0] = cache->GetGUID().d1;
 | 
				
			||||||
 | 
						helper->_db_pIn->type_guid[1] = cache->GetGUID().d2;
 | 
				
			||||||
 | 
						helper->_db_pIn->belong_to = parents;
 | 
				
			||||||
 | 
						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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//=========try generate pLink
 | 
				
			||||||
 | 
						EXPAND_CK_ID origin = -1;
 | 
				
			||||||
 | 
						if (cache->GetDirectSource()) origin = cache->GetDirectSource()->GetID();
 | 
				
			||||||
 | 
						if (cache->GetSharedSource()) origin = cache->GetSharedSource()->GetID();
 | 
				
			||||||
 | 
						if (origin == -1) return;
 | 
				
			||||||
 | 
						helper->_db_pLink->input = origin;
 | 
				
			||||||
 | 
						helper->_db_pLink->output = cache->GetID();
 | 
				
			||||||
 | 
						helper->_db_pLink->belong_to = index;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						db->write_pLink(helper->_db_pLink);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline void proc_pOut(CKParameterOut* cache, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents, int index) {
 | 
				
			||||||
 | 
						helper->_db_pOut->thisobj = cache->GetID();
 | 
				
			||||||
 | 
						helper->_db_pOut->index = index;
 | 
				
			||||||
 | 
						strcpy(helper->_db_pOut->name, cache->GetName());
 | 
				
			||||||
 | 
						strcpy(helper->_db_pOut->type, helper->_parameterManager->ParameterTypeToName(cache->GetType()));
 | 
				
			||||||
 | 
						helper->_db_pOut->type_guid[0] = cache->GetGUID().d1;
 | 
				
			||||||
 | 
						helper->_db_pOut->type_guid[1] = cache->GetGUID().d2;
 | 
				
			||||||
 | 
						helper->_db_pOut->belong_to = parents;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						db->write_pOut(helper->_db_pOut);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//=========try generate pLink
 | 
				
			||||||
 | 
						CKParameter* cache_Dest = NULL;
 | 
				
			||||||
 | 
						for (int j = 0, jCount = cache->GetDestinationCount(); j < jCount; j++) {
 | 
				
			||||||
 | 
							cache_Dest = cache->GetDestination(j);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							helper->_db_pLink->input = cache->GetID();
 | 
				
			||||||
 | 
							helper->_db_pLink->output = cache_Dest->GetID();
 | 
				
			||||||
 | 
							helper->_db_pLink->belong_to = parents;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							db->write_pLink(helper->_db_pLink);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline void proc_bIn(CKBehaviorIO* cache, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents, int index) {
 | 
				
			||||||
 | 
						helper->_db_bIn->thisobj = cache->GetID();
 | 
				
			||||||
 | 
						helper->_db_bIn->index = index;
 | 
				
			||||||
 | 
						strcpy(helper->_db_bIn->name, cache->GetName());
 | 
				
			||||||
 | 
						helper->_db_bIn->belong_to = parents;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						db->write_bIn(helper->_db_bIn);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline void proc_bOut(CKBehaviorIO* cache, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents, int index) {
 | 
				
			||||||
 | 
						helper->_db_bOut->thisobj = cache->GetID();
 | 
				
			||||||
 | 
						helper->_db_bOut->index = index;
 | 
				
			||||||
 | 
						strcpy(helper->_db_bOut->name, cache->GetName());
 | 
				
			||||||
 | 
						helper->_db_bOut->belong_to = parents;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						db->write_bOut(helper->_db_bOut);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline void proc_bLink(CKBehaviorLink* cache, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents) {
 | 
				
			||||||
 | 
						helper->_db_bLink->input = cache->GetInBehaviorIO()->GetID();
 | 
				
			||||||
 | 
						helper->_db_bLink->output = cache->GetOutBehaviorIO()->GetID();
 | 
				
			||||||
 | 
						helper->_db_bLink->delay = cache->GetActivationDelay();
 | 
				
			||||||
 | 
						helper->_db_bLink->belong_to = parents;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						db->write_bLink(helper->_db_bLink);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline void proc_pLocal(CKParameterLocal* cache, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents, BOOL is_setting) {
 | 
				
			||||||
 | 
						helper->_db_pLocal->thisobj = cache->GetID();
 | 
				
			||||||
 | 
						strcpy(helper->_db_pLocal->name, cache->GetName() ? cache->GetName() : "");
 | 
				
			||||||
 | 
						strcpy(helper->_db_pLocal->type, helper->_parameterManager->ParameterTypeToName(cache->GetType()));
 | 
				
			||||||
 | 
						helper->_db_pLocal->type_guid[0] = cache->GetGUID().d1;
 | 
				
			||||||
 | 
						helper->_db_pLocal->type_guid[1] = cache->GetGUID().d2;
 | 
				
			||||||
 | 
						helper->_db_pLocal->is_setting = is_setting;
 | 
				
			||||||
 | 
						helper->_db_pLocal->belong_to = parents;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						db->write_pLocal(helper->_db_pLocal);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//export plocal metadata
 | 
				
			||||||
 | 
						IteratepLocalData(cache, db, helper, cache->GetID());
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline void proc_pOper(CKParameterOperation* cache, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents) {
 | 
				
			||||||
 | 
						helper->_db_pOper->thisobj = cache->GetID();
 | 
				
			||||||
 | 
						strcpy(helper->_db_pOper->op, helper->_parameterManager->OperationGuidToName(cache->GetOperationGuid()));
 | 
				
			||||||
 | 
						helper->_db_pOper->op_guid[0] = cache->GetOperationGuid().d1;
 | 
				
			||||||
 | 
						helper->_db_pOper->op_guid[1] = cache->GetOperationGuid().d2;
 | 
				
			||||||
 | 
						helper->_db_pOper->belong_to = parents;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						db->write_pOper(helper->_db_pOper);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//export 2 input param and 1 output param
 | 
				
			||||||
 | 
						proc_pIn(cache->GetInParameter1(), db, helper, cache->GetID(), 0);
 | 
				
			||||||
 | 
						proc_pIn(cache->GetInParameter2(), db, helper, cache->GetID(), 1);
 | 
				
			||||||
 | 
						proc_pOut(cache->GetOutParameter(), db, helper, cache->GetID(), 0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//============================helper for pLocal data export
 | 
				
			||||||
 | 
					inline void helper_pLocalDataExport(const char* field, const char* data, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents) {
 | 
				
			||||||
 | 
						strcpy(helper->_db_pLocalData->field, field);
 | 
				
			||||||
 | 
						strcpy(helper->_db_pLocalData->data, data);
 | 
				
			||||||
 | 
						helper->_db_pLocalData->belong_to = parents;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						db->write_pLocalData(helper->_db_pLocalData);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					inline void helper_pLocalDataExport(const char* field, float data, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents) {
 | 
				
			||||||
 | 
						char str[32];
 | 
				
			||||||
 | 
						sprintf(str, "%f", data);
 | 
				
			||||||
 | 
						helper_pLocalDataExport(field, str, db, helper, parents);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					inline void helper_pLocalDataExport(const char* field, long data, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents) {
 | 
				
			||||||
 | 
						char str[32];
 | 
				
			||||||
 | 
						ltoa(data, str, 10);
 | 
				
			||||||
 | 
						helper_pLocalDataExport(field, str, db, helper, parents);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma region normal func
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void IterateScript(CKContext* ctx, database* db, dbDataStructHelper* helper) {
 | 
				
			||||||
 | 
						CKBeObject* beobj = NULL;
 | 
				
			||||||
 | 
						CKBehavior* beh = NULL;
 | 
				
			||||||
 | 
						XObjectPointerArray objArray = ctx->GetObjectListByType(CKCID_BEOBJECT, TRUE);
 | 
				
			||||||
 | 
						int len = objArray.Size();
 | 
				
			||||||
 | 
						int scriptLen = 0;
 | 
				
			||||||
 | 
						for (int i = 0; i < len; i++) {
 | 
				
			||||||
 | 
							beobj = (CKBeObject*)objArray.GetObjectA(i);
 | 
				
			||||||
 | 
							if ((scriptLen = beobj->GetScriptCount()) == 0) continue;
 | 
				
			||||||
 | 
							for (int j = 0; j < scriptLen; j++) {
 | 
				
			||||||
 | 
								//write script table
 | 
				
			||||||
 | 
								beh = beobj->GetScript(j);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								helper->_dbCKScript->thisobj = beobj->GetID();
 | 
				
			||||||
 | 
								strcpy(helper->_dbCKScript->host_name, beobj->GetName());
 | 
				
			||||||
 | 
								helper->_dbCKScript->index = j;
 | 
				
			||||||
 | 
								helper->_dbCKScript->behavior = beh->GetID();
 | 
				
			||||||
 | 
								db->write_CKScript(helper->_dbCKScript);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								//iterate script
 | 
				
			||||||
 | 
								IterateBehavior(beh, db, helper, -1);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void IterateBehavior(CKBehavior* bhv, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents) {
 | 
				
			||||||
 | 
						//write self data
 | 
				
			||||||
 | 
						helper->_dbCKBehavior->thisobj = bhv->GetID();
 | 
				
			||||||
 | 
						strcpy(helper->_dbCKBehavior->name, bhv->GetName());
 | 
				
			||||||
 | 
						helper->_dbCKBehavior->type = bhv->GetType();
 | 
				
			||||||
 | 
						strcpy(helper->_dbCKBehavior->proto_name, bhv->GetPrototypeName() ? bhv->GetPrototypeName() : "");
 | 
				
			||||||
 | 
						helper->_dbCKBehavior->proto_guid[0] = bhv->GetPrototypeGuid().d1;
 | 
				
			||||||
 | 
						helper->_dbCKBehavior->proto_guid[1] = bhv->GetPrototypeGuid().d2;
 | 
				
			||||||
 | 
						helper->_dbCKBehavior->flags = bhv->GetFlags();
 | 
				
			||||||
 | 
						helper->_dbCKBehavior->priority = bhv->GetPriority();
 | 
				
			||||||
 | 
						helper->_dbCKBehavior->version = bhv->GetVersion();
 | 
				
			||||||
 | 
						helper->_dbCKBehavior->parent = parents;
 | 
				
			||||||
 | 
						db->write_CKBehavior(helper->_dbCKBehavior);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//write target
 | 
				
			||||||
 | 
						if (bhv->IsUsingTarget())
 | 
				
			||||||
 | 
							proc_pTarget(bhv->GetTargetParameter(), db, helper, bhv->GetID());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int count = 0, i = 0;
 | 
				
			||||||
 | 
						//pIn
 | 
				
			||||||
 | 
						for (i = 0, count = bhv->GetInputParameterCount(); i < count; i++)
 | 
				
			||||||
 | 
							proc_pIn(bhv->GetInputParameter(i), db, helper, bhv->GetID(), i);
 | 
				
			||||||
 | 
						//pOut
 | 
				
			||||||
 | 
						for (i = 0, count = bhv->GetOutputParameterCount(); i < count; i++)
 | 
				
			||||||
 | 
							proc_pOut(bhv->GetOutputParameter(i), db, helper, bhv->GetID(), i);
 | 
				
			||||||
 | 
						//bIn
 | 
				
			||||||
 | 
						for (i = 0, count = bhv->GetInputCount(); i < count; i++)
 | 
				
			||||||
 | 
							proc_bIn(bhv->GetInput(i), db, helper, bhv->GetID(), i);
 | 
				
			||||||
 | 
						//bOut
 | 
				
			||||||
 | 
						for (i = 0, count = bhv->GetOutputCount(); i < count; i++)
 | 
				
			||||||
 | 
							proc_bOut(bhv->GetOutput(i), db, helper, bhv->GetID(), i);
 | 
				
			||||||
 | 
						//bLink
 | 
				
			||||||
 | 
						for (i = 0, count = bhv->GetSubBehaviorLinkCount(); i < count; i++)
 | 
				
			||||||
 | 
							proc_bLink(bhv->GetSubBehaviorLink(i), db, helper, bhv->GetID());
 | 
				
			||||||
 | 
						//pLocal
 | 
				
			||||||
 | 
						for (i = 0, count = bhv->GetLocalParameterCount(); i < count; i++)
 | 
				
			||||||
 | 
							proc_pLocal(bhv->GetLocalParameter(i), db, helper, bhv->GetID(),
 | 
				
			||||||
 | 
								bhv->IsLocalParameterSetting(i));
 | 
				
			||||||
 | 
						//bOper
 | 
				
			||||||
 | 
						for (i = 0, count = bhv->GetParameterOperationCount(); i < count; i++)
 | 
				
			||||||
 | 
							proc_pOper(bhv->GetParameterOperation(i), db, helper, bhv->GetID());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//iterate sub bb
 | 
				
			||||||
 | 
						for (i = 0, count = bhv->GetSubBehaviorCount(); i < count; i++)
 | 
				
			||||||
 | 
							IterateBehavior(bhv->GetSubBehavior(i), db, helper, bhv->GetID());
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void IteratepLocalData(CKParameterLocal* p, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents) {
 | 
				
			||||||
 | 
						CKGUID t = p->GetGUID(); 
 | 
				
			||||||
 | 
						BOOL unknowType = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (t.d1 & t.d2) unknowType = TRUE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//nothing
 | 
				
			||||||
 | 
						if (t == CKPGUID_NONE) return;
 | 
				
			||||||
 | 
						if (p->GetParameterClassID() && p->GetValueObject(false)) {
 | 
				
			||||||
 | 
							helper_pLocalDataExport("id", (long)p->GetValueObject(false)->GetID(), db, helper, parents);
 | 
				
			||||||
 | 
							helper_pLocalDataExport("name", p->GetValueObject(false)->GetName(), db, helper, parents);
 | 
				
			||||||
 | 
							helper_pLocalDataExport("type", p->GetValueObject(false)->GetClassNameA(), db, helper, parents);
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						//float
 | 
				
			||||||
 | 
						if (t == CKPGUID_FLOAT || t == CKPGUID_ANGLE || t == CKPGUID_PERCENTAGE || t == CKPGUID_TIME
 | 
				
			||||||
 | 
							|| t == CKPGUID_FLOATSLIDER) {
 | 
				
			||||||
 | 
							helper_pLocalDataExport("float-data", *(float*)(p->GetReadDataPtr(false)), db, helper, parents);
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						//int
 | 
				
			||||||
 | 
						if (t == CKPGUID_INT || t == CKPGUID_KEY || t == CKPGUID_BOOL || t == CKPGUID_ID || t == CKPGUID_POINTER
 | 
				
			||||||
 | 
							|| t == CKPGUID_MESSAGE || t == CKPGUID_ATTRIBUTE || t == CKPGUID_BLENDMODE || t == CKPGUID_FILTERMODE
 | 
				
			||||||
 | 
							|| t == CKPGUID_BLENDFACTOR || t == CKPGUID_FILLMODE || t == CKPGUID_LITMODE || t == CKPGUID_SHADEMODE
 | 
				
			||||||
 | 
							|| t == CKPGUID_ADDRESSMODE || t == CKPGUID_WRAPMODE || t == CKPGUID_3DSPRITEMODE || t == CKPGUID_FOGMODE
 | 
				
			||||||
 | 
							|| 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_pLocalDataExport("int-data", (long)(*(int*)(p->GetReadDataPtr(false))), db, helper, parents);
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if (t == CKPGUID_VECTOR) {
 | 
				
			||||||
 | 
							VxVector vec;
 | 
				
			||||||
 | 
							memcpy(&vec, p->GetReadDataPtr(false), sizeof(vec));
 | 
				
			||||||
 | 
							helper_pLocalDataExport("vector.x", vec.x, db, helper, parents);
 | 
				
			||||||
 | 
							helper_pLocalDataExport("vector.y", vec.y, db, helper, parents);
 | 
				
			||||||
 | 
							helper_pLocalDataExport("vector.z", vec.z, db, helper, parents);
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if (t == CKPGUID_2DVECTOR) {
 | 
				
			||||||
 | 
							Vx2DVector vec;
 | 
				
			||||||
 | 
							memcpy(&vec, p->GetReadDataPtr(false), sizeof(vec));
 | 
				
			||||||
 | 
							helper_pLocalDataExport("2dvector.x", vec.x, db, helper, parents);
 | 
				
			||||||
 | 
							helper_pLocalDataExport("2dvector.y", vec.y, db, helper, parents);
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if (t == CKPGUID_MATRIX) {
 | 
				
			||||||
 | 
							VxMatrix mat;
 | 
				
			||||||
 | 
							char position[128];
 | 
				
			||||||
 | 
							memcpy(&mat, p->GetReadDataPtr(false), sizeof(mat));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							for (int i = 0; i < 4; ++i) {
 | 
				
			||||||
 | 
								for (int j = 0; j < 4; ++j) {
 | 
				
			||||||
 | 
									sprintf(position, "matrix[%d][%d]", i, j);
 | 
				
			||||||
 | 
									helper_pLocalDataExport(position, mat[i][j], db, helper, parents);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if (t == CKPGUID_COLOR) {
 | 
				
			||||||
 | 
							VxColor col;
 | 
				
			||||||
 | 
							memcpy(&col, p->GetReadDataPtr(false), sizeof(col));
 | 
				
			||||||
 | 
							helper_pLocalDataExport("color.r", col.r, db, helper, parents);
 | 
				
			||||||
 | 
							helper_pLocalDataExport("color.g", col.g, db, helper, parents);
 | 
				
			||||||
 | 
							helper_pLocalDataExport("color.b", col.b, db, helper, parents);
 | 
				
			||||||
 | 
							helper_pLocalDataExport("color.a", col.a, db, helper, parents);
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if (t == CKPGUID_2DCURVE) {
 | 
				
			||||||
 | 
							CK2dCurve* c;
 | 
				
			||||||
 | 
							char prefix[128];
 | 
				
			||||||
 | 
							int endIndex = 0;
 | 
				
			||||||
 | 
							memcpy(&c, p->GetReadDataPtr(false), sizeof(c));
 | 
				
			||||||
 | 
							for (int i = 0, cc = c->GetControlPointCount(); i < cc; ++i) {
 | 
				
			||||||
 | 
								sprintf(prefix, "2dcurve.control_point[%d]", i);
 | 
				
			||||||
 | 
								endIndex = strlen(prefix);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								changeSuffix(".pos.x");
 | 
				
			||||||
 | 
								helper_pLocalDataExport(prefix, c->GetControlPoint(i)->GetPosition().x, db, helper, parents);
 | 
				
			||||||
 | 
								changeSuffix(".pos.y");
 | 
				
			||||||
 | 
								helper_pLocalDataExport(prefix, c->GetControlPoint(i)->GetPosition().y, db, helper, parents);
 | 
				
			||||||
 | 
								changeSuffix(".islinear");
 | 
				
			||||||
 | 
								helper_pLocalDataExport(prefix, (long)c->GetControlPoint(i)->IsLinear(), db, helper, parents);
 | 
				
			||||||
 | 
								if (c->GetControlPoint(i)->IsTCB()) {
 | 
				
			||||||
 | 
									changeSuffix(".bias");
 | 
				
			||||||
 | 
									helper_pLocalDataExport(prefix, c->GetControlPoint(i)->GetBias(), db, helper, parents);
 | 
				
			||||||
 | 
									changeSuffix(".continuity");
 | 
				
			||||||
 | 
									helper_pLocalDataExport(prefix, c->GetControlPoint(i)->GetContinuity(), db, helper, parents);
 | 
				
			||||||
 | 
									changeSuffix(".tension");
 | 
				
			||||||
 | 
									helper_pLocalDataExport(prefix, c->GetControlPoint(i)->GetTension(), db, helper, parents);
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									changeSuffix(".intangent.x");
 | 
				
			||||||
 | 
									helper_pLocalDataExport(prefix, c->GetControlPoint(i)->GetInTangent().x, db, helper, parents);
 | 
				
			||||||
 | 
									changeSuffix(".intangent.y");
 | 
				
			||||||
 | 
									helper_pLocalDataExport(prefix, c->GetControlPoint(i)->GetInTangent().y, db, helper, parents);
 | 
				
			||||||
 | 
									changeSuffix(".outtangent.x");
 | 
				
			||||||
 | 
									helper_pLocalDataExport(prefix, c->GetControlPoint(i)->GetOutTangent().x, db, helper, parents);
 | 
				
			||||||
 | 
									changeSuffix(".outtangent.y");
 | 
				
			||||||
 | 
									helper_pLocalDataExport(prefix, c->GetControlPoint(i)->GetOutTangent().y, db, helper, parents);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						unknowType = TRUE;
 | 
				
			||||||
 | 
						//if it gets here, we have no idea what it really is. so simply dump it.
 | 
				
			||||||
 | 
						//buffer-like
 | 
				
			||||||
 | 
						if (unknowType || t == CKPGUID_VOIDBUF || t == CKPGUID_STRING || t == CKPGUID_SHADER || t == CKPGUID_TECHNIQUE || t == CKPGUID_PASS) {
 | 
				
			||||||
 | 
							char* cptr = (char*)p->GetReadDataPtr(false);
 | 
				
			||||||
 | 
							int cc = p->GetDataSize();
 | 
				
			||||||
 | 
							for (int i = 0; i < cc; i++) 
 | 
				
			||||||
 | 
								helper->_db_pLocalData->data[i] = cptr[i];
 | 
				
			||||||
 | 
							helper->_db_pLocalData->data[cc] = '\0';
 | 
				
			||||||
 | 
							strcpy(helper->_db_pLocalData->field, "dump-data");
 | 
				
			||||||
 | 
							helper->_db_pLocalData->belong_to = p->GetID();
 | 
				
			||||||
 | 
							db->write_pLocalData(helper->_db_pLocalData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										24
									
								
								SuperScriptMaterializer/script_export.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								SuperScriptMaterializer/script_export.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					#if !defined(_YYCDLL_SCRIPT_EXPORT_H__IMPORTED_)
 | 
				
			||||||
 | 
					#define _YYCDLL_SCRIPT_EXPORT_H__IMPORTED_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "stdafx.h"
 | 
				
			||||||
 | 
					#include "database.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline void proc_pTarget(CKParameterIn* cache, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents);
 | 
				
			||||||
 | 
					inline void proc_pIn(CKParameterIn* cache, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents, int index);
 | 
				
			||||||
 | 
					inline void proc_pOut(CKParameterOut* cache, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents, int index);
 | 
				
			||||||
 | 
					inline void proc_bIn(CKBehaviorIO* cache, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents, int index);
 | 
				
			||||||
 | 
					inline void proc_bOut(CKBehaviorIO* cache, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents, int index);
 | 
				
			||||||
 | 
					inline void proc_bLink(CKBehaviorLink* cache, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents);
 | 
				
			||||||
 | 
					inline void proc_pLocal(CKParameterLocal* cache, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents, BOOL is_setting);
 | 
				
			||||||
 | 
					inline void proc_pOper(CKParameterOperation* cache, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline void helper_pLocalDataExport(const char* field, long data, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents);
 | 
				
			||||||
 | 
					inline void helper_pLocalDataExport(const char* field, float data, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents);
 | 
				
			||||||
 | 
					inline void helper_pLocalDataExport(const char* field, const char* data, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void IterateBehavior(CKBehavior* bhv, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents);
 | 
				
			||||||
 | 
					void IterateScript(CKContext* ctx, database* db, dbDataStructHelper* helper);
 | 
				
			||||||
 | 
					void IteratepLocalData(CKParameterLocal* pl, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
@ -1,5 +1,6 @@
 | 
				
			|||||||
#include "vt_menu.h"
 | 
					#include "vt_menu.h"
 | 
				
			||||||
#include "database.h"
 | 
					#include "database.h"
 | 
				
			||||||
 | 
					#include "script_export.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern PluginInterface* s_Plugininterface;
 | 
					extern PluginInterface* s_Plugininterface;
 | 
				
			||||||
CMenu* s_MainMenu = NULL;
 | 
					CMenu* s_MainMenu = NULL;
 | 
				
			||||||
@ -99,141 +100,11 @@ void PluginMenuCallback(int commandID) {
 | 
				
			|||||||
				_db->close();
 | 
									_db->close();
 | 
				
			||||||
				delete _helper;
 | 
									delete _helper;
 | 
				
			||||||
				delete _db;
 | 
									delete _db;
 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			free(file);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
				ctx->OutputToConsole("[Super Script Materializer] Done");
 | 
									ctx->OutputToConsole("[Super Script Materializer] Done");
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								free(file);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
void IterateScript(CKContext* ctx, database* db, dbDataStructHelper* helper) {
 | 
					 | 
				
			||||||
	CKBeObject* beobj = NULL;
 | 
					 | 
				
			||||||
	CKBehavior* beh = NULL;
 | 
					 | 
				
			||||||
	XObjectPointerArray objArray = ctx->GetObjectListByType(CKCID_BEOBJECT, TRUE);
 | 
					 | 
				
			||||||
	int len = objArray.Size();
 | 
					 | 
				
			||||||
	int scriptLen = 0;
 | 
					 | 
				
			||||||
	for (int i = 0; i < len; i++) {
 | 
					 | 
				
			||||||
		beobj = (CKBeObject*)objArray.GetObjectA(i);
 | 
					 | 
				
			||||||
		if ((scriptLen = beobj->GetScriptCount()) == 0) continue;
 | 
					 | 
				
			||||||
		for (int j = 0; j < scriptLen; j++) {
 | 
					 | 
				
			||||||
			//write script table
 | 
					 | 
				
			||||||
			beh = beobj->GetScript(j);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			helper->_dbCKScript->thisobj = beobj->GetID();
 | 
					 | 
				
			||||||
			strcpy(helper->_dbCKScript->host_name, beobj->GetName());
 | 
					 | 
				
			||||||
			helper->_dbCKScript->index = j;
 | 
					 | 
				
			||||||
			helper->_dbCKScript->behavior = beh->GetID();
 | 
					 | 
				
			||||||
			db->write_CKScript(helper->_dbCKScript);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			//iterate script
 | 
					 | 
				
			||||||
			IterateBehavior(beh, db, helper, -1);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void IterateBehavior(CKBehavior* bhv, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents) {
 | 
					 | 
				
			||||||
	//write self data
 | 
					 | 
				
			||||||
	helper->_dbCKBehavior->thisobj = bhv->GetID();
 | 
					 | 
				
			||||||
	strcpy(helper->_dbCKBehavior->name, bhv->GetName());
 | 
					 | 
				
			||||||
	helper->_dbCKBehavior->type = bhv->GetType();
 | 
					 | 
				
			||||||
	strcpy(helper->_dbCKBehavior->proto_name, bhv->GetPrototypeName() ? bhv->GetPrototypeName() : "");
 | 
					 | 
				
			||||||
	//todo: fix guid
 | 
					 | 
				
			||||||
	helper->_dbCKBehavior->proto_guid = bhv->GetPrototypeGuid().d1;
 | 
					 | 
				
			||||||
	helper->_dbCKBehavior->flags = bhv->GetFlags();
 | 
					 | 
				
			||||||
	helper->_dbCKBehavior->priority = bhv->GetPriority();
 | 
					 | 
				
			||||||
	helper->_dbCKBehavior->version = bhv->GetVersion();
 | 
					 | 
				
			||||||
	helper->_dbCKBehavior->parent = parents;
 | 
					 | 
				
			||||||
	db->write_CKBehavior(helper->_dbCKBehavior);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	//write target
 | 
					 | 
				
			||||||
	if (bhv->IsUsingTarget()) {
 | 
					 | 
				
			||||||
		CKParameterIn* cache = bhv->GetTargetParameter();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		helper->_db_pTarget->thisobj = cache->GetID();
 | 
					 | 
				
			||||||
		strcpy(helper->_db_pTarget->name, cache->GetName());
 | 
					 | 
				
			||||||
		strcpy(helper->_db_pTarget->type, helper->_parameterManager->ParameterTypeToName(cache->GetType()));
 | 
					 | 
				
			||||||
		//todo: fix guid
 | 
					 | 
				
			||||||
		helper->_db_pTarget->type_guid = cache->GetGUID().d1;
 | 
					 | 
				
			||||||
		helper->_db_pTarget->belong_to = bhv->GetID();
 | 
					 | 
				
			||||||
		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);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	int count = 0, i = 0;
 | 
					 | 
				
			||||||
	CKParameterIn* cache_pIn = NULL;
 | 
					 | 
				
			||||||
	CKParameterOut* cache_pOut = NULL;
 | 
					 | 
				
			||||||
	CKBehaviorIO* cache_bIO = NULL;
 | 
					 | 
				
			||||||
	CKBehaviorLink* cache_bLink = NULL;
 | 
					 | 
				
			||||||
	//pIn
 | 
					 | 
				
			||||||
	for (i = 0, count = bhv->GetInputParameterCount(); i < count; i++) {
 | 
					 | 
				
			||||||
		cache_pIn = bhv->GetInputParameter(i);
 | 
					 | 
				
			||||||
		helper->_db_pIn->thisobj = cache_pIn->GetID();
 | 
					 | 
				
			||||||
		helper->_db_pIn->index = i;
 | 
					 | 
				
			||||||
		strcpy(helper->_db_pIn->name, cache_pIn->GetName());
 | 
					 | 
				
			||||||
		strcpy(helper->_db_pIn->type, helper->_parameterManager->ParameterTypeToName(cache_pIn->GetType()));
 | 
					 | 
				
			||||||
		//todo: fix guid
 | 
					 | 
				
			||||||
		helper->_db_pIn->type_guid = cache_pIn->GetGUID().d1;
 | 
					 | 
				
			||||||
		helper->_db_pIn->belong_to = bhv->GetID();
 | 
					 | 
				
			||||||
		helper->_db_pIn->direct_source = cache_pIn->GetDirectSource() ? cache_pIn->GetDirectSource()->GetID() : -1;
 | 
					 | 
				
			||||||
		helper->_db_pIn->shared_source = cache_pIn->GetSharedSource() ? cache_pIn->GetSharedSource()->GetID() : -1;
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
		db->write_pIn(helper->_db_pIn);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	//pOut
 | 
					 | 
				
			||||||
	for (i = 0, count = bhv->GetOutputParameterCount(); i < count; i++) {
 | 
					 | 
				
			||||||
		cache_pOut = bhv->GetOutputParameter(i);
 | 
					 | 
				
			||||||
		helper->_db_pOut->thisobj = cache_pOut->GetID();
 | 
					 | 
				
			||||||
		helper->_db_pOut->index = i;
 | 
					 | 
				
			||||||
		strcpy(helper->_db_pOut->name, cache_pOut->GetName());
 | 
					 | 
				
			||||||
		strcpy(helper->_db_pOut->type, helper->_parameterManager->ParameterTypeToName(cache_pOut->GetType()));
 | 
					 | 
				
			||||||
		//todo: fix guid
 | 
					 | 
				
			||||||
		helper->_db_pOut->type_guid = cache_pOut->GetGUID().d1;
 | 
					 | 
				
			||||||
		helper->_db_pOut->belong_to = bhv->GetID();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		db->write_pOut(helper->_db_pOut);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	//bIn
 | 
					 | 
				
			||||||
	for (i = 0, count = bhv->GetInputCount(); i < count; i++) {
 | 
					 | 
				
			||||||
		cache_bIO = bhv->GetInput(i);
 | 
					 | 
				
			||||||
		helper->_db_bIn->thisobj = cache_bIO->GetID();
 | 
					 | 
				
			||||||
		helper->_db_bIn->index = i;
 | 
					 | 
				
			||||||
		strcpy(helper->_db_bIn->name, cache_bIO->GetName());
 | 
					 | 
				
			||||||
		helper->_db_bIn->belong_to = bhv->GetID();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		db->write_bIn(helper->_db_bIn);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	//bOut
 | 
					 | 
				
			||||||
	for (i = 0, count = bhv->GetOutputCount(); i < count; i++) {
 | 
					 | 
				
			||||||
		cache_bIO = bhv->GetOutput(i);
 | 
					 | 
				
			||||||
		helper->_db_bOut->thisobj = cache_bIO->GetID();
 | 
					 | 
				
			||||||
		helper->_db_bOut->index = i;
 | 
					 | 
				
			||||||
		strcpy(helper->_db_bOut->name, cache_bIO->GetName());
 | 
					 | 
				
			||||||
		helper->_db_bOut->belong_to = bhv->GetID();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		db->write_bOut(helper->_db_bOut);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	//bLink
 | 
					 | 
				
			||||||
	for (i = 0, count = bhv->GetSubBehaviorLinkCount(); i < count; i++) {
 | 
					 | 
				
			||||||
		cache_bLink = bhv->GetSubBehaviorLink(i);
 | 
					 | 
				
			||||||
		helper->_db_bLlink->input = cache_bLink->GetInBehaviorIO()->GetID();
 | 
					 | 
				
			||||||
		helper->_db_bLlink->output = cache_bLink->GetOutBehaviorIO()->GetID();
 | 
					 | 
				
			||||||
		helper->_db_bLlink->delay = cache_bLink->GetActivationDelay();
 | 
					 | 
				
			||||||
		helper->_db_bLlink->belong_to = bhv->GetID();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		db->write_bLink(helper->_db_bLlink);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	//iterate sub bb
 | 
					 | 
				
			||||||
	for (i = 0, count = bhv->GetSubBehaviorCount(); i < count; i++)
 | 
					 | 
				
			||||||
		IterateBehavior(bhv->GetSubBehavior(i), db, helper, bhv->GetID());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -10,7 +10,5 @@ void InitMenu();
 | 
				
			|||||||
void RemoveMenu();
 | 
					void RemoveMenu();
 | 
				
			||||||
void UpdateMenu();
 | 
					void UpdateMenu();
 | 
				
			||||||
void PluginMenuCallback(int commandID);
 | 
					void PluginMenuCallback(int commandID);
 | 
				
			||||||
void IterateBehavior(CKBehavior* bhv, database* db, dbDataStructHelper* helper, EXPAND_CK_ID parents);
 | 
					 | 
				
			||||||
void IterateScript(CKContext* ctx, database* db, dbDataStructHelper* helper);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
		Reference in New Issue
	
	Block a user