145
个编辑
更改
影子坐标
,→影子的实质
这种实现方式也注定了不可能通过Virtools 3.5的原生操作来实现自主添加影子,只能被动地借用原版具有影子坐标的物体(CK3dEntity)来实现影子。但是可以通过{{zh|VSL}}和Virtools SDK编写的脚本与插件来实现。
<pre>CK3dEntity* obj = (CK3dEntity*)ctx->GetObjectByName("NAME");
DWORD objFlag = obj->GetMoveableFlags();
objFlag |=8;
obj->SetMoveableFlags(objFlag);</pre>
使用Virtools内编写[[Action]]为物体加上影子的代码可以参见下文(VSL):
<pre>int f = ent.GetMoveableFlags();
if ( f / 8 % 2 == 1 ) {
f = f-8;
} else {
f = f+8;
}
ent.SetMoveableFlags(f);</pre>
此方法可稳定使物体具有影子坐标。虽然这种通过添加标识的方法没有任何理论基础(没有Virtools 2.1文档,无法得知此数值的含义,以及没有通过翻阅代码获得有关此数值的用途),但是因为在实践中可稳定复现,并且较之前替换原版关卡的Mesh而言更加具有科学性。因此此假设当成为经验公式。