SuperScriptMaterializer/docs/DevDocument_ZH.md
yyc12345 4ce7021054 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.
2024-05-22 22:05:55 +08:00

16 KiB
Raw Blame History

开发帮助

此文档将叙述一些开发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_behaviorbehavior本身包括behavior graph和prototype behavior之类的
  • script_bInbehavior的行为输入
  • script_bOutbehavior的行为输出
  • script_eLinkexport link
  • script_pAttrattribute类型的parameter
  • script_pInbehavior的parameter输入
  • script_pLinkparameter link
  • script_pLocallocal parameter
  • script_pOperparameter operator
  • script_pOutbehavior的parameter输出
  • script_pTargetbehavior的target输入实际上是一个特殊的parameter输入
  • msg文档内定义的message标号与数值的对应
  • array文档里的每个CKDataArray
  • array_headerCKDataArray的表头
  • array_cellCKDataArray的数据体
  • 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
字段 类型 含义
input INTEGER 连线输入端的CK_ID,不能确认此CK_IDbOut还是bIn,由于连线也可以是从parentbIn连接到子元素的bIn
output INTEGER 连线输出端的CK_ID,不能确认是bOut还是bIn,理由同上
delay INTEGER 连线时延CKBehaviorLink::GetActivationDelay()
input_obj INTEGER 输入端所属Behavior的CK_ID
input_type INTEGER 指示输入端类型0为bIn1为bOut
input_index INTEGER 指示连线位于输入端所在Behavior的第几个bIO口
output_obj INTEGER 输出端所属Behavior的CK_ID
output_type INTEGER 指示输出端类型0为bIn1为bOut
output_index INTEGER 指示连线位于输出端所在Behavior的第几个bIO口
parent INTEGER 当前对象所归属的Behavior的CK_ID
字段 类型 含义
export_obj INTEGER 需要被导出的pInpOutCK_ID
internal_obj INTEGER 导出连线中pInpOut所属Behavior中层次较深者的CK_ID
is_in INTEGER 指示连线是对pIn还是pOut进行导出,如果是pIn则设置为1否则设置为0
index INTEGER 导出连线pInpOut在所属Behavior中层次较深者中的参数序号
parent INTEGER 导出连线中pInpOut所属Behavior中层次较浅者的CK_ID同时也就是导出连线所归属的Behavior的CK_ID

导出连线eLink是一种将父级的pIn或pOut链接至器内部Behavior的pIn与pOut的连线。pIn只能链接pInpOut只能链接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()
字段 类型 含义
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_typeoutput_type使用下列数值:

  • pIn0
  • pOut1
  • pLocal2
  • pTarget3
  • pAttr4

当其值不是pInpOut中任何一个时,忽略对应输入或输出的is_bbindex值。

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描述因为对于一个BehaviorpTarget至多只能有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_typeparam_type_guid为其所属CKParameterType的类型文本和GUID当列类型为Object时param_typeparam_type_guid均无效因为无法确认对应CKObject的类型。列类型为其它类型时param_typeparam_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里综合一次即可

表列表:

  • attrattribute
  • opoperatorparameter转换的定义
  • paramparameter的定义
  • 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::CreatorDllCKPluginEntry::m_PluginDllIndex
creator_plugin_index INTEGER CKParameterTypeDesc::CreatorDllCKPluginEntry::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_PluginInfoCKPluginInfo::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输出的脚本综合的数据库,包含了所有脚本的连线和图形位置。

表列表:

  • blockbehavior的图形结构
  • 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
字段 类型 含义
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综合