本文整理汇总了C++中CKBehavior::GetLocalParameterWriteDataPtr方法的典型用法代码示例。如果您正苦于以下问题:C++ CKBehavior::GetLocalParameterWriteDataPtr方法的具体用法?C++ CKBehavior::GetLocalParameterWriteDataPtr怎么用?C++ CKBehavior::GetLocalParameterWriteDataPtr使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CKBehavior
的用法示例。
在下文中一共展示了CKBehavior::GetLocalParameterWriteDataPtr方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: TextureSinusCallBackObject
CKERROR TextureSinusCallBackObject(const CKBehaviorContext& behcontext)
{
CKBehavior* beh = behcontext.Behavior;
switch(behcontext.CallbackMessage) {
#ifdef macintosh
case CKM_BEHAVIORLOAD:
{
CKMesh *mesh = (CKMesh*) beh->GetInputParameterObject(4);
if(!mesh)
return 0;
int nbvert = mesh->GetModifierUVCount();
// we get the saved uv's
DWORD *savedUV = (DWORD *) beh->GetLocalParameterWriteDataPtr(0);
for(int i=0; i<nbvert*2; i++) {
savedUV[i] = ENDIANSWAP32(savedUV[i]);
}
}
break;
#endif
case CKM_BEHAVIORATTACH:
{
// we get the mesh vertices
CKMesh *mesh = (CKMesh*) beh->GetInputParameterObject(4);
if(!mesh) return 0;
CKDWORD Stride;
VxUV *uvarray = (VxUV*) mesh->GetModifierUVs(&Stride);
int nbvert = mesh->GetModifierUVCount();
VxUV *savedUV;
savedUV = new VxUV[nbvert];
for(int i=0 ; i<nbvert ; i++, uvarray = (VxUV*)((BYTE*)uvarray + Stride) ) {
savedUV[i] = *uvarray;
}
beh->SetLocalParameterValue(0, savedUV, nbvert * sizeof(VxUV) );
delete[] savedUV;
}
break;
case CKM_BEHAVIORDETACH:
{
// we get the mesh vertices
if(!beh) return 0;
CKMesh *mesh = (CKMesh*) beh->GetInputParameterObject(4);
if(!mesh) return 0;
CKDWORD Stride;
VxUV *uvarray = (VxUV*) mesh->GetModifierUVs(&Stride);
int nbvert = mesh->GetModifierUVCount();
VxUV *savePos = (VxUV*) beh->GetLocalParameterWriteDataPtr(0);
if(!savePos) return 0;
for(int i=0 ; i<nbvert ; i++, uvarray = (VxUV*)((BYTE*)uvarray + Stride) ) {
*uvarray = savePos[i];
}
mesh->ModifierUVMove();
}
}
return CKBR_OK;
}