refactor: refactor visual studio build file generation script.
- refactoring VS build used file generation script, but not finished. only correct some bad Python syntax and etc. - remove gamepiaynmo virtools SDK pre-build project. we no longer need it. - rename some folders name.
This commit is contained in:
		
							
								
								
									
										65
									
								
								docs/COMPILE_ZH.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								docs/COMPILE_ZH.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,65 @@
 | 
			
		||||
# 编译
 | 
			
		||||
 | 
			
		||||
本文档将指导您编译或调试`SuperScriptMaterializer`以及对`SuperScriptViewer`的编译。
 | 
			
		||||
 | 
			
		||||
## SuperScriptMaterializer
 | 
			
		||||
 | 
			
		||||
### 需求
 | 
			
		||||
 | 
			
		||||
- Visual Studio 2010,即VC++ v100的工具集(不能使用Virtools 2015及以上版本进行编译,在编译Virtools 5.0 Standalone版本的时候亲测会出错且无法解决,但对于其他版本您可以尝试使用高版本的工具集进行编译)
 | 
			
		||||
- Virtools SDK 或 Ballance Mod Loader(如果以Virtools 2.1作为目标)
 | 
			
		||||
- SQlite SDK
 | 
			
		||||
- Python 3.x
 | 
			
		||||
 | 
			
		||||
### 编译之前
 | 
			
		||||
 | 
			
		||||
编译之前,对于SQLite SDK,您可以从[sqlite.org](http://www.sqlite.org/)下载,然后使用Visual C++的工具集执行`LIB /DEF:sqlite3.def /machine:IX86`以获取可以用于编译的文件。
 | 
			
		||||
 | 
			
		||||
然后您需要先进入项目根目录下,在此处打开终端,我们首先需要生成编译的参数。自上一个版本以来,我们将编译时需要的一些参数全部转为Visual Studio可识别的宏,定义在独立的`Virtools.props`中,此步操作便是生成这个文件,以确定编译文件的相关参数。
 | 
			
		||||
 | 
			
		||||
按如下格式运行指令:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
python3 mk_materializer_cfg.py [plugin|standalone] [21|25|35|40|50] [virtools_root_path] [sqlite_header] [sqlite_lib] [bml path]
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
每一项参数的含义:
 | 
			
		||||
 | 
			
		||||
* `[plugin|standalone]`:编译为插件还是独立程序
 | 
			
		||||
* `[21|25|35|40|50]`:Virtools版本
 | 
			
		||||
* `[virtools_root_path]`:Virtools Dev的根目录,用于Virtools SDK的头文件,链接库的寻找,也决定程序编译后的输出位置
 | 
			
		||||
* `[sqlite_header]`:SQlite头文件路径,通常来说指向SQlite头文件所在的文件夹
 | 
			
		||||
* `[sqlite_lib]`:SQlite链接库的路径,通常来说是指向`sqlite3.lib`的路径
 | 
			
		||||
* `[bml path]`:BML的路径,只有在以Virtools 2.1为目标编译时才有用
 | 
			
		||||
 | 
			
		||||
以下是一些指令示例:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
python3 .\mk_materializer_cfg.py plugin 50 "E:\Virtools\Virtools Dev 5.0" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader"
 | 
			
		||||
python3 .\mk_materializer_cfg.py standalone 50 "E:\Virtools\Virtools Dev 5.0" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader"
 | 
			
		||||
python3 .\mk_materializer_cfg.py plugin 40 "E:\Virtools\Virtools Dev 4.0" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader"
 | 
			
		||||
python3 .\mk_materializer_cfg.py standalone 40 "E:\Virtools\Virtools Dev 4.0" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader"
 | 
			
		||||
python3 .\mk_materializer_cfg.py plugin 35 "E:\Virtools\Virtools Dev 3.5" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader"
 | 
			
		||||
python3 .\mk_materializer_cfg.py standalone 35 "E:\Virtools\Virtools Dev 3.5" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader"
 | 
			
		||||
python3 .\mk_materializer_cfg.py standalone 25 "E:\Virtools\Virtools Dev 2.5" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader"
 | 
			
		||||
python3 .\mk_materializer_cfg.py standalone 21 "E:\Virtools\Virtools Dev 2.1" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### 编译
 | 
			
		||||
 | 
			
		||||
使用`Visual Studio`打开`SuperScriptMaterializer.sln`,选择`SuperScriptMaterializer`工程。然后选择编译模式(Debug或Release),然后编译即可,基本上只要配置无误,编译会很快完成
 | 
			
		||||
 | 
			
		||||
## SuperScriptViewer
 | 
			
		||||
 | 
			
		||||
### 需求
 | 
			
		||||
 | 
			
		||||
* Node.js
 | 
			
		||||
* gulp
 | 
			
		||||
* gulp插件:待补充
 | 
			
		||||
 | 
			
		||||
### 编译
 | 
			
		||||
 | 
			
		||||
`SuperScriptViewer`本身分为2个部分:由Python配合Flask所写的后端,以及前端。后端无需编译,而前端需要通过**gulp**进行操作,以减少文档本身的大小,进而减小传输开销。
 | 
			
		||||
 | 
			
		||||
编译的方法很简单,在`Viewer`目录下执行`gulp xxxx`即可让gulp自动完成相关操作。
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										27
									
								
								docs/DEPLOY_ZH.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								docs/DEPLOY_ZH.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,27 @@
 | 
			
		||||
# 部署
 | 
			
		||||
 | 
			
		||||
本文档将指导您部署属于您的`SuperScriptMaterializer`。它可以让您摆脱Virtools的限制,在所有平台上都可以浏览到Virtools的脚本。您需要先了解README中标准的操作方式,然后,我们会根据部署的一些特殊性,对标准步骤进行修改。
 | 
			
		||||
 | 
			
		||||
## 导出脚本
 | 
			
		||||
 | 
			
		||||
首先我们需要使用`SuperScriptMaterializer`将我们需要查看的脚本导出。众所周知,Virtools各个版本之间的兼容性很差,为一个版本的所作的文档可能在另一个版本中就无法打开,或者是丢失相关的Building Block,因此,首先您需要根据您所需要查看的Virtools文件的对应版本来选取合适版本的插件,这样可以获得更好的导出效果,因为一旦文档中出现一些Building Block丢失之类的错误,那么Virtools会让一些本可读的字段变成完全不可读的Binary格式。这也是我们的`Materializer`提供如此多版本选项的原因,为的是让每一份可能的文档都可以被正确地加载。
 | 
			
		||||
 | 
			
		||||
此外,如果您遇到了NMS文件,那么您可能需要使用Virtools创作环境并配合插件模式的`Materializer`来导出,通过新建一个随意物件然后让脚本加载在其上,进而导出。您可能无法在NMS文件上使用独立模式的`Materializer`,因为它没有办法识别NMS文件。
 | 
			
		||||
 | 
			
		||||
当然,您如果遇到了很多文件的情况,您可以将需要的文件放在一起,然后编写一个Shell脚本,然后使用独立模式的`Materializer`来进行批量导出(如果可以的话)。这是一个针对Ballance游戏所有文件的脚本导出的Shell脚本和其生成器的示例,可供您参考。
 | 
			
		||||
 | 
			
		||||
// todo: 贴上链接
 | 
			
		||||
 | 
			
		||||
如果您有来自不同Virtools版本,您需要分别用对应的导出器进行导出,然后将他们整理归类以供下一级的输入。无需担心不同版本的Virtools导出会导致错误,`Decorator`会正确处理它们。
 | 
			
		||||
 | 
			
		||||
## 分析脚本
 | 
			
		||||
 | 
			
		||||
您需要准备好`SuperScriptDecorator`,和一份`import.txt`。正如标准操作方式中所言,您需要把需要综合的所有的导出数据库及各个文件的名字写入`import.txt`。我的操作是在上一步生成批处理的时候一并生成`import.txt`,因为它们之间联系很紧密。当然,您完全手写`import.txt`也是可以的。在完成之后,与标准操作方式内所述一致,直接运行即可。分析脚本的时间与您输入的脚本的数量和脚本的复杂度相关。
 | 
			
		||||
 | 
			
		||||
## 发布脚本
 | 
			
		||||
 | 
			
		||||
分析脚本完成后,我们就该将数据输入到`SuperScriptViewer`中了。与普通运行方式不同,我们需要以非调试模式启动Flask部署后端,并同时完成前端部署。您可以参阅[Flask部署文档](https://flask.palletsprojects.com/en/2.0.x/deploying/)来根据您的情况来进行选择。
 | 
			
		||||
 | 
			
		||||
我所作的Ballance脚本展示网页使用Gunicorn,部署指令是`gunicorn ServerCore:app`,其中唯一需要注意的是`ServerCore:app`这个程序入口点,在您选择不同于我的部署方式时,这个入口点将不会改变。与此同时我使用Nginx做了反向代理,具体配置可参考这里
 | 
			
		||||
 | 
			
		||||
// todo: 贴上链接
 | 
			
		||||
							
								
								
									
										480
									
								
								docs/DevDocument_ZH.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										480
									
								
								docs/DevDocument_ZH.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,480 @@
 | 
			
		||||
# 开发帮助
 | 
			
		||||
 | 
			
		||||
此文档将叙述一些开发SuperScriptMaterializer中需要被记忆的一些原则。
 | 
			
		||||
 | 
			
		||||
# 可能的连线
 | 
			
		||||
 | 
			
		||||
该程序中最重要的事情之一是生成链接,而最困难的是pLink。 下图显示了将在此程序中分析的所有pLink情况。
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
 +--------------+              +-----------------+
 | 
			
		||||
 | pLocal       +-------------->                 |
 | 
			
		||||
 +--------------+              |                 |
 | 
			
		||||
                               |  pIn (bb/oper)  |
 | 
			
		||||
 +----------------+            |                 |
 | 
			
		||||
 | pIn (bb/oper)  +------------>       /         |
 | 
			
		||||
 +----------------+            |                 |
 | 
			
		||||
                               |   pTarget (bb)  |
 | 
			
		||||
 +----------------+            |                 |
 | 
			
		||||
 | pOut (bb/oper) +------------>                 |
 | 
			
		||||
 +----------------+            +-----------------+
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
+------------------+           +-----------------+
 | 
			
		||||
|                  +-----------> pOut (bb/oper)  |
 | 
			
		||||
|                  |           +-----------------+
 | 
			
		||||
| pOut (bb/oper)   |
 | 
			
		||||
|                  |           +--------------+
 | 
			
		||||
|                  +-----------> pLocal       |
 | 
			
		||||
+------------------+           +--------------+
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
如果链接的一个端点不在当前图形中,则此端点将创建为快捷方式。 但是,如果链接的一个端点是当前分析的Building Graph的pIO,并且与另一个端点具有相同的CK_ID,则应创建一个eLink。
 | 
			
		||||
 | 
			
		||||
# 数据库
 | 
			
		||||
 | 
			
		||||
SuperScriptMaterializer处理流程里会涉及很多不同的数据库文件,以下是这些数据库和其内表的格式。  
 | 
			
		||||
其中这些是Materializer直接输出的基于文档的数据库:
 | 
			
		||||
 | 
			
		||||
* doc.db
 | 
			
		||||
* env.db
 | 
			
		||||
 | 
			
		||||
这些数据库是上面数据库经过Decorator处理可以被Viewer接受的数据库:
 | 
			
		||||
 | 
			
		||||
* decorated.db
 | 
			
		||||
* sheet.db
 | 
			
		||||
* query.db
 | 
			
		||||
* composition.db
 | 
			
		||||
 | 
			
		||||
## doc.db 格式
 | 
			
		||||
 | 
			
		||||
doc.db导出的是当前Virtools文档内的脚本及其它重要数据。
 | 
			
		||||
 | 
			
		||||
表列表:
 | 
			
		||||
 | 
			
		||||
- script:文档里的每个脚本
 | 
			
		||||
- script_behavior:behavior本身,包括behavior graph和prototype behavior之类的
 | 
			
		||||
- script_bIn:behavior的行为输入
 | 
			
		||||
- script_bOut:behavior的行为输出
 | 
			
		||||
- script_eLink:export link
 | 
			
		||||
- script_pAttr:attribute类型的parameter
 | 
			
		||||
- script_pIn:behavior的parameter输入
 | 
			
		||||
- script_pLink:parameter link
 | 
			
		||||
- script_pLocal:local parameter
 | 
			
		||||
- script_pOper:parameter operator
 | 
			
		||||
- script_pOut:behavior的parameter输出
 | 
			
		||||
- script_pTarget:behavior的target输入,实际上是一个特殊的parameter输入
 | 
			
		||||
- msg:文档内定义的message标号与数值的对应
 | 
			
		||||
- array:文档里的每个CKDataArray
 | 
			
		||||
- array_header:CKDataArray的表头
 | 
			
		||||
- array_cell:CKDataArray的数据体
 | 
			
		||||
- data:文档中所有涉及导出的parameter参数属性,以类似字典的形式存储每个parameter参数的各个部分
 | 
			
		||||
 | 
			
		||||
### script
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|thisobj|INTEGER|脚本依附对象的`CK_ID`|
 | 
			
		||||
|name|TEXT|脚本依附对象的名字|
 | 
			
		||||
|index|INTEGER|脚本在依附对象的排序序号|
 | 
			
		||||
|behavior|INTEGER|真正的脚本Behavior的`CK_ID`|
 | 
			
		||||
 | 
			
		||||
### script_behavior
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|thisobj|INTEGER|当前对象的`CK_ID`|
 | 
			
		||||
|name|TEXT|当前对象的名字|
 | 
			
		||||
|type|INTEGER|`CKBehavior::GetType`|
 | 
			
		||||
|proto_name|TEXT|原型名称,没有原型则留空。`CKBehavior::GetPrototypeName`|
 | 
			
		||||
|proto_guid|TEXT|原型的GUID,如果没有原型则填写`0,0`,格式为`guid1,guid2`,用逗号分隔Virtools的GUID的两部分|
 | 
			
		||||
|flags|INTEGER|`CKBehavior::GetFlags`|
 | 
			
		||||
|priority|INTEGER|`CKBehavior::GetPriority`|
 | 
			
		||||
|version|INTEGER|`CKBehavior::GetVersion`|
 | 
			
		||||
|pin_count|TEXT|Behavior的接口个数,由5部分组成,用`,`分隔,分别代表:pTarget, pIn, pOut, bIn, bOut|
 | 
			
		||||
|parent|INTEGER|当前对象父级Behavior的`CK_ID`,如是顶层Behavior则填写-1|
 | 
			
		||||
 | 
			
		||||
### script_bIn / script_bOut
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|thisobj|INTEGER|当前对象的`CK_ID`|
 | 
			
		||||
|index|INTEGER|bIn/bOut在所属Behavior的次序号|
 | 
			
		||||
|name|TEXT|bIn/bOut名称|
 | 
			
		||||
|parent|INTEGER|当前对象所归属的Behavior的`CK_ID`|
 | 
			
		||||
 | 
			
		||||
### script_bLink
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|input|INTEGER|连线输入端的`CK_ID`,不能确认此`CK_ID`是`bOut`还是`bIn`,由于连线也可以是从`parent`的`bIn`连接到子元素的`bIn`|
 | 
			
		||||
|output|INTEGER|连线输出端的`CK_ID`,不能确认是`bOut`还是`bIn`,理由同上|
 | 
			
		||||
|delay|INTEGER|连线时延`CKBehaviorLink::GetActivationDelay()`|
 | 
			
		||||
|input_obj|INTEGER|输入端所属Behavior的`CK_ID`|
 | 
			
		||||
|input_type|INTEGER|指示输入端类型,0为bIn,1为bOut|
 | 
			
		||||
|input_index|INTEGER|指示连线位于输入端所在Behavior的第几个bIO口|
 | 
			
		||||
|output_obj|INTEGER|输出端所属Behavior的`CK_ID`|
 | 
			
		||||
|output_type|INTEGER|指示输出端类型,0为bIn,1为bOut|
 | 
			
		||||
|output_index|INTEGER|指示连线位于输出端所在Behavior的第几个bIO口|
 | 
			
		||||
|parent|INTEGER|当前对象所归属的Behavior的`CK_ID`|
 | 
			
		||||
 | 
			
		||||
### script_eLink
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|export_obj|INTEGER|需要被导出的`pIn`或`pOut`的`CK_ID`|
 | 
			
		||||
|internal_obj|INTEGER|导出连线中`pIn`或`pOut`所属Behavior中层次较深者的`CK_ID`|
 | 
			
		||||
|is_in|INTEGER|指示连线是对`pIn`还是`pOut`进行导出,如果是`pIn`则设置为1,否则设置为0|
 | 
			
		||||
|index|INTEGER|导出连线`pIn`或`pOut`在所属Behavior中层次较深者中的参数序号|
 | 
			
		||||
|parent|INTEGER|导出连线中`pIn`或`pOut`所属Behavior中层次较浅者的`CK_ID`,同时也就是导出连线所归属的Behavior的`CK_ID`|
 | 
			
		||||
 | 
			
		||||
导出连线eLink是一种将父级的pIn或pOut链接至器内部Behavior的pIn与pOut的连线。pIn只能链接pIn,pOut只能链接pOut。导出连线一旦链接完成,则意味着两端的pIn或pOut将具有相同的`CK_ID`。
 | 
			
		||||
 | 
			
		||||
### script_pAttr
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|thisobj|INTEGER|当前对象的`CK_ID`|
 | 
			
		||||
|name|TEXT|pAttr名称|
 | 
			
		||||
|type|TEXT|Attribute的类型名|
 | 
			
		||||
|type_guid|TEXT|Attribute类型的GUID|
 | 
			
		||||
 | 
			
		||||
### script_pIn
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|thisobj|INTEGER|当前对象的`CK_ID`|
 | 
			
		||||
|index|INTEGER|pIn在所属Behavior中的序号|
 | 
			
		||||
|name|TEXT|名称|
 | 
			
		||||
|type|TEXT|类型名|
 | 
			
		||||
|type_guid|TEXT|类型GUID|
 | 
			
		||||
|parent|INTEGER|当前对象所归属的Behavior或Operator的`CK_ID`|
 | 
			
		||||
|direct_source|INTEGER|`CKParameterIn::GetDirectSource()`|
 | 
			
		||||
|shared_source|INTEGER|`CKParameterIn::GetSharedSource()`|
 | 
			
		||||
 | 
			
		||||
### script_pLink
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|input|INTEGER|pLink起点parameter的`CK_ID`|
 | 
			
		||||
|output|INTEGER|pLink终点parameter的`CK_ID`|
 | 
			
		||||
|input_obj|INTEGER|起点parameter所属behavior或operator的`CK_ID`|
 | 
			
		||||
|input_type|INTEGER|起点来源类型|
 | 
			
		||||
|input_is_bb|INTEGER|指示起点parameter所属是Behavior还是Operator,如果是Behavior,则填写为1,否则为0|
 | 
			
		||||
|input_index|INTEGER|起点parameter所属Behavior的序号值|
 | 
			
		||||
|output_obj|INTEGER|终点parameter所属behavior或operator的`CK_ID`|
 | 
			
		||||
|output_type|INTEGER|终点来源类型|
 | 
			
		||||
|output_is_bb|INTEGER|指示终点parameter所属是Behavior还是Operator|
 | 
			
		||||
|output_index|INTEGER|终点parameter所属Behavior的序号值|
 | 
			
		||||
|parent|INTEGER|当前对象所归属的Behavior的`CK_ID`|
 | 
			
		||||
 | 
			
		||||
`input_type`与`output_type`使用下列数值:
 | 
			
		||||
 | 
			
		||||
* pIn:0
 | 
			
		||||
* pOut:1
 | 
			
		||||
* pLocal:2
 | 
			
		||||
* pTarget:3
 | 
			
		||||
* pAttr:4
 | 
			
		||||
 | 
			
		||||
当其值不是`pIn`或`pOut`中任何一个时,忽略对应输入或输出的`is_bb`与`index`值。
 | 
			
		||||
 | 
			
		||||
### script_pLocal
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|thisobj|INTEGER|当前对象的`CK_ID`|
 | 
			
		||||
|name|TEXT|名称|
 | 
			
		||||
|type|TEXT|类型名|
 | 
			
		||||
|type_guid|TEXT|类型GUID|
 | 
			
		||||
|is_setting|INTEGER|是否是所属Behavior的Setting,调用所属Behavior的`CKBehavior::IsLocalParameterSetting()`|
 | 
			
		||||
|parent|INTEGER|当前对象所归属的Behavior的`CK_ID`|
 | 
			
		||||
 | 
			
		||||
### script_pOper
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|thisobj|INTEGER|当前对象的`CK_ID`|
 | 
			
		||||
|op|TEXT|名称|
 | 
			
		||||
|op_guid|TEXT|Operator采用的转换函数的GUID|
 | 
			
		||||
|parent|INTEGER|当前对象所归属的Behavior的`CK_ID`|
 | 
			
		||||
 | 
			
		||||
### script_pOut
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|thisobj|INTEGER|当前对象的`CK_ID`|
 | 
			
		||||
|index|INTEGER|在所属Behavior中的序号|
 | 
			
		||||
|name|TEXT|名称|
 | 
			
		||||
|type|TEXT|类型名|
 | 
			
		||||
|type_guid|TEXT|类型GUID|
 | 
			
		||||
|parent|INTEGER|当前对象所归属的Behavior或Operator的`CK_ID`|
 | 
			
		||||
 | 
			
		||||
### script_pTarget
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|thisobj|INTEGER|当前对象的`CK_ID`|
 | 
			
		||||
|name|TEXT|名称|
 | 
			
		||||
|type|TEXT|类型名|
 | 
			
		||||
|type_guid|TEXT|类型GUID|
 | 
			
		||||
|parent|INTEGER|当前对象所归属的Behavior的`CK_ID`|
 | 
			
		||||
|direct_source|INTEGER|`CKParameterIn::GetDirectSource()`|
 | 
			
		||||
|shared_source|INTEGER|`CKParameterIn::GetSharedSource()`|
 | 
			
		||||
 | 
			
		||||
与`pIn`类似,仅缺少`index`描述,因为对于一个Behavior,pTarget至多只能有1个。
 | 
			
		||||
 | 
			
		||||
### msg
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|index|INTEGER|message的标号|
 | 
			
		||||
|name|TEXT|message的名称|
 | 
			
		||||
 | 
			
		||||
### array
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|thisobj|INTEGER|当前对象的`CK_ID`|
 | 
			
		||||
|name|TEXT|表的名称|
 | 
			
		||||
|rows|INTEGER|表的行数|
 | 
			
		||||
|columns|INTEGER|表的列数|
 | 
			
		||||
 | 
			
		||||
### array_header
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|index|INTEGER|当前表头的是第几列|
 | 
			
		||||
|name|TEXT|名称|
 | 
			
		||||
|type|INTEGER|列类型,`CKDataArray::GetColumnType`|
 | 
			
		||||
|param_type|TEXT|列的类型|
 | 
			
		||||
|param_type_guid|TEXT|列的类型的GUID|
 | 
			
		||||
|parent|INTEGER|表头所属表的`CK_ID`|
 | 
			
		||||
 | 
			
		||||
当列类型为Parameter时,`param_type`和`param_type_guid`为其所属CKParameterType的类型文本和GUID,当列类型为Object时,`param_type`和`param_type_guid`均无效,因为无法确认对应CKObject的类型。列类型为其它类型时,`param_type`和`param_type_guid`也均无效。
 | 
			
		||||
 | 
			
		||||
### array_cell
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|row|INTEGER|当前单元格所在行|
 | 
			
		||||
|column|INTEGER|当前单元格所在列|
 | 
			
		||||
|showcase|TEXT|单元格可视化文本|
 | 
			
		||||
|inner_param|INTEGER|单元格内部数据,为对应CKParameter或CKObject的`CK_ID`|
 | 
			
		||||
|parent|INTEGER|单元格所属表的`CK_ID`|
 | 
			
		||||
 | 
			
		||||
当且仅当对应列的类型为Parameter或Object时,`inner_param`才有效。
 | 
			
		||||
 | 
			
		||||
### data
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|field|TEXT|键值对的键|
 | 
			
		||||
|data|TEXT|键值对的值|
 | 
			
		||||
|parent|INTEGER|键值对所描述对象的`CK_ID`|
 | 
			
		||||
 | 
			
		||||
## env.db 格式
 | 
			
		||||
 | 
			
		||||
env.db导出的是当前Virtools环境的数据,与文档无关,这部分如果是多个文件共用一个环境,那么只需要导出和在`Decorator`里综合一次即可
 | 
			
		||||
 | 
			
		||||
表列表:
 | 
			
		||||
 | 
			
		||||
- attr:attribute
 | 
			
		||||
- op:operator,parameter转换的定义
 | 
			
		||||
- param:parameter的定义
 | 
			
		||||
- plugin:当前环境插件
 | 
			
		||||
- variable:全局变量数据
 | 
			
		||||
 | 
			
		||||
### attr
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|index|INTEGER|序号,总数由`CKAttributeManager::GetAttributeCount()`获取|
 | 
			
		||||
|name|TEXT|`CKAttributeManager::GetAttributeNameByType()`|
 | 
			
		||||
|category_index|INTEGER|`CKAttributeManager::GetAttributeCategoryIndex()`|
 | 
			
		||||
|category_name|TEXT|`CKAttributeManager::GetAttributeCategory()`|
 | 
			
		||||
|flags|INTEGER|`CKAttributeManager::GetAttributeFlags()`|
 | 
			
		||||
|param_index|INTEGER|`CKAttributeManager::GetAttributeParameterType()`|
 | 
			
		||||
|compatible_classid|INTEGER|`CKAttributeManager::GetAttributeCompatibleClassId()`|
 | 
			
		||||
|default_value|TEXT|`CKAttributeManager::GetAttributeDefaultValue()`|
 | 
			
		||||
 | 
			
		||||
### op
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|funcptr|INTEGER|`CKOperationDesc::Fct`|
 | 
			
		||||
|in1_guid|TEXT|`CKOperationDesc::P1Guid`|
 | 
			
		||||
|in2_guid|TEXT|`CKOperationDesc::P2Guid`|
 | 
			
		||||
|out_guid|TEXT|`CKOperationDesc::ResGuid`|
 | 
			
		||||
|op_guid|TEXT|`CKParameterManager::OperationCodeToGuid()`|
 | 
			
		||||
|op_name|TEXT|`CKParameterManager::OperationCodeToName`|
 | 
			
		||||
|op_code|INTEGER|序号,总数由`CKParameterManager::GetParameterOperationCount()`获取|
 | 
			
		||||
 | 
			
		||||
### param
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|index|INTEGER|`CKParameterTypeDesc::Index`|
 | 
			
		||||
|guid|TEXT|`CKParameterTypeDesc::Guid`|
 | 
			
		||||
|derived_from|TEXT|`CKParameterTypeDesc::DerivedFrom`|
 | 
			
		||||
|type_name|TEXT|`CKParameterTypeDesc::TypeName`|
 | 
			
		||||
|default_size|INTEGER|`CKParameterTypeDesc::DefaultSize`|
 | 
			
		||||
|func_CreateDefault|INTEGER|`CKParameterTypeDesc::CreateDefaultFunction`|
 | 
			
		||||
|func_Delete|INTEGER|`CKParameterTypeDesc::DeleteFunction`|
 | 
			
		||||
|func_SaveLoad|INTEGER|`CKParameterTypeDesc::SaveLoadFunction`|
 | 
			
		||||
|func_Check|INTEGER|`CKParameterTypeDesc::CheckFunction`|
 | 
			
		||||
|func_Copy|INTEGER|`CKParameterTypeDesc::CopyFunction`|
 | 
			
		||||
|func_String|INTEGER|`CKParameterTypeDesc::StringFunction`|
 | 
			
		||||
|func_UICreator|INTEGER|`CKParameterTypeDesc::UICreatorFunction`|
 | 
			
		||||
|creator_dll_index|INTEGER|`CKParameterTypeDesc::CreatorDll`的`CKPluginEntry::m_PluginDllIndex`|
 | 
			
		||||
|creator_plugin_index|INTEGER|`CKParameterTypeDesc::CreatorDll`的`CKPluginEntry::m_PositionInDll`|
 | 
			
		||||
|dw_param|INTEGER|`CKParameterTypeDesc::dwParam`|
 | 
			
		||||
|dw_flags|INTEGER|`CKParameterTypeDesc::dwFlags`|
 | 
			
		||||
|cid|INTEGER|`CKParameterTypeDesc::Cid`|
 | 
			
		||||
|saver_manager|TEXT|`CKParameterTypeDesc::Saver_Manager`|
 | 
			
		||||
 | 
			
		||||
### plugin
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|dll_index|INTEGER|`CKPluginEntry::m_PluginDllIndex`|
 | 
			
		||||
|dll_name|TEXT|以`CKPluginEntry::m_PluginDllIndex`为参,使用`CKPluginManager::GetPluginDllInfo()`,获得的`CKPluginDll::m_DllFileName`|
 | 
			
		||||
|plugin_index|INTEGER|`CKPluginEntry::m_PositionInDll`|
 | 
			
		||||
|active|INTEGER|`CKPluginEntry::m_Active`|
 | 
			
		||||
|guid|TEXT|`CKPluginEntry::m_PluginInfo`的`CKPluginInfo::m_GUID`|
 | 
			
		||||
|desc|TEXT|`CKPluginEntry::m_Description`|
 | 
			
		||||
|author|TEXT|`CKPluginEntry::m_Author`|
 | 
			
		||||
|summary|TEXT|`CKPluginEntry::m_Summary`|
 | 
			
		||||
|version|INTEGER|`CKPluginEntry::m_Version`|
 | 
			
		||||
|func_init|INTEGER|`CKPluginEntry::m_InitInstanceFct`|
 | 
			
		||||
|func_exit|INTEGER|`CKPluginEntry::m_ExitInstanceFct`|
 | 
			
		||||
 | 
			
		||||
### variable
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|name|TEXT|`CKVariableManager::Iterator::GetName()`|
 | 
			
		||||
|description|TEXT|`CKVariableManager::Variable::GetDescription()`|
 | 
			
		||||
|flags|INTEGER|`CKVariableManager::Variable::GetFlags()`|
 | 
			
		||||
|type|INTEGER|`CKVariableManager::Variable::GetType()`|
 | 
			
		||||
|representation|TEXT|`CKVariableManager::Variable::GetRepresentation()`|
 | 
			
		||||
|data|TEXT|`CKVariableManager::Variable::GetStringValue()`|
 | 
			
		||||
 | 
			
		||||
## composition.db 格式
 | 
			
		||||
 | 
			
		||||
composition.db是`Decorator`输出的所有被综合的文档与接下来三个数据库分别的内部的编号的的对应表(为每一个被综合的数据库分配一个编号,但是因为有些部分文档共用一个Virtools环境等,就需要将这些编号转换成共用的)  
 | 
			
		||||
使用此表是为了保证网页URL基于编号的命名方式可以在三个表中正常通行,而不会出现在这个表中的编号在另一个表里指示的是另一个Virtools文件。  
 | 
			
		||||
因此在查询其他数据库前需要先读取此数据库获得对应各个数据库的内部编号,进而在剩下的数据库中以内部编号继续查询。
 | 
			
		||||
 | 
			
		||||
表只有一个:composition。
 | 
			
		||||
 | 
			
		||||
## decorated.db 格式
 | 
			
		||||
 | 
			
		||||
decorated.db是`Decorator`输出的脚本综合的数据库,包含了所有脚本的连线和图形位置。
 | 
			
		||||
 | 
			
		||||
表列表:
 | 
			
		||||
 | 
			
		||||
- block:behavior的图形结构
 | 
			
		||||
- cell:类似local parameter的结构
 | 
			
		||||
- graph:脚本schematic图形
 | 
			
		||||
- link:脚本内的所有连线
 | 
			
		||||
- param:脚本里的parameter的数据
 | 
			
		||||
 | 
			
		||||
### block
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|parent_graph|INTEGER||
 | 
			
		||||
|thisobj|INTEGER||
 | 
			
		||||
|name|TEXT||
 | 
			
		||||
|assist_text|TEXT||
 | 
			
		||||
|pin-ptarget|TEXT||
 | 
			
		||||
|pin-pin|TEXT||
 | 
			
		||||
|pin-pout|TEXT||
 | 
			
		||||
|pin-bin|TEXT||
 | 
			
		||||
|pin-bout|TEXT||
 | 
			
		||||
|x|REAL||
 | 
			
		||||
|y|REAL||
 | 
			
		||||
|width|REAL||
 | 
			
		||||
|height|REAL||
 | 
			
		||||
|expandable|INTEGER||
 | 
			
		||||
 | 
			
		||||
### cell
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|parent_graph|INTEGER||
 | 
			
		||||
|thisobj|INTEGER||
 | 
			
		||||
|name|TEXT||
 | 
			
		||||
|assist_text|TEXT||
 | 
			
		||||
|x|REAL||
 | 
			
		||||
|y|REAL||
 | 
			
		||||
|type|INTEGER||
 | 
			
		||||
 | 
			
		||||
### graph
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|graph|INTEGER||
 | 
			
		||||
|graph_name|TEXT||
 | 
			
		||||
|width|INTEGER||
 | 
			
		||||
|height|INTEGER||
 | 
			
		||||
|index|INTEGER||
 | 
			
		||||
|parent|TEXT||
 | 
			
		||||
 | 
			
		||||
### param
 | 
			
		||||
 | 
			
		||||
param为原来的info
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|target|INTEGER||
 | 
			
		||||
|attach_bb|INTEGER||
 | 
			
		||||
|is_setting|INTEGER||
 | 
			
		||||
|name|TEXT||
 | 
			
		||||
|field|TEXT||
 | 
			
		||||
|data|TEXT||
 | 
			
		||||
 | 
			
		||||
### link
 | 
			
		||||
 | 
			
		||||
|字段|类型|含义|
 | 
			
		||||
|:---|:---|:---|
 | 
			
		||||
|parent_graph|INTEGER||
 | 
			
		||||
|delay|INTEGER||
 | 
			
		||||
|start_interface|INTEGER||
 | 
			
		||||
|end_interface|INTEGER||
 | 
			
		||||
|startobj|INTEGER||
 | 
			
		||||
|endobj|INTEGER||
 | 
			
		||||
|start_type|INTEGER||
 | 
			
		||||
|end_type|INTEGER||
 | 
			
		||||
|start_index|INTEGER||
 | 
			
		||||
|end_index|INTEGER||
 | 
			
		||||
|x1|REAL||
 | 
			
		||||
|y1|REAL||
 | 
			
		||||
|x2|REAL||
 | 
			
		||||
|y2|REAL||
 | 
			
		||||
 | 
			
		||||
## sheet.db 格式
 | 
			
		||||
 | 
			
		||||
sheet.db是`Decorator`输出的文档数据综合的数据库,包含了所有脚本的连线和图形位置。
 | 
			
		||||
 | 
			
		||||
表列表:
 | 
			
		||||
 | 
			
		||||
- data:同下
 | 
			
		||||
- header:同下
 | 
			
		||||
- body:同下
 | 
			
		||||
- param:与data.db几乎一致
 | 
			
		||||
 | 
			
		||||
## query.db 格式
 | 
			
		||||
 | 
			
		||||
query.db是`Decorator`输出的数据查询综合的数据库,包含了所有脚本内的数据部分,还有Virtools环境的可查询数据。
 | 
			
		||||
 | 
			
		||||
表列表:
 | 
			
		||||
- msg:从data.db - msg综合
 | 
			
		||||
- attr:同下
 | 
			
		||||
- op:同下
 | 
			
		||||
- param:同下
 | 
			
		||||
- plugin:同下
 | 
			
		||||
- variable:从env.db综合
 | 
			
		||||
		Reference in New Issue
	
	Block a user