本文整理汇总了C++中Control::GetRotationController方法的典型用法代码示例。如果您正苦于以下问题:C++ Control::GetRotationController方法的具体用法?C++ Control::GetRotationController怎么用?C++ Control::GetRotationController使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Control
的用法示例。
在下文中一共展示了Control::GetRotationController方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: AdjustRotKeys
// ADJUSTROTKEYS
void AdjustRotKeys(INode *node)
{
Control *controller = node->GetTMController();
Control *rotControl = controller->GetRotationController();
IKeyControl *rotKeyCont = GetKeyControlInterface(rotControl);
int numKeys = rotKeyCont->GetNumKeys();
for(int i = 0; i < numKeys; i++)
{
ITCBKey key;
rotKeyCont->GetKey(i, &key);
key.cont = 0;
rotKeyCont->SetKey(i, &key);
}
}
示例2: WriteModifiers
/**
* @brief
* Writes the scene node modifiers
*/
void PLSceneNode::WriteModifiers(XmlElement &cSceneElement, const String &sApplicationDrive, const String &sApplicationDir)
{
// Is there a 3ds Max node? (no 3ds Max node, no properties)
INode *pMaxNode = GetMaxNode();
if (pMaxNode) {
// Has this 3ds Max node a target?
if (pMaxNode->GetTarget()) {
// Write down the scene node modifier
WriteTargetRotationModifier(cSceneElement, *pMaxNode->GetTarget(), false);
}
// Are there any position, rotation, scale keyframes?
bool bPositionKeyframes = false;
bool bRotationKeyframes = false;
bool bScaleKeyframes = false;
// Check 3ds Max node controllers
Control *pTMController = pMaxNode->GetTMController();
if (pTMController) {
// Position controller
Control *pController = pTMController->GetPositionController();
if (pController) {
// Are there any position keyframes?
bPositionKeyframes = PLTools::HasKeyControlInterface(*pController);
if (!bPositionKeyframes) {
// Is there a path controller?
IPathPosition *pPathController = GetIPathConstInterface(pController);
if (pPathController && pPathController->GetNumTargets() > 0) {
INode *pTarget = pPathController->GetNode(0);
if (pTarget) {
// Get path filename
const String sPathFilename = PLTools::GetResourceFilename(PLTools::ResourcePath, String(pTarget->GetName()) + ".path");
// Get the percentage along the path
float fPercentageAlongPath = 0.0f;
{
IParamBlock2 *pIParamBlock2 = pPathController->GetParamBlock(path_params);
int nRefNum = pIParamBlock2 ? pIParamBlock2->GetControllerRefNum(path_percent) : -1;
RefTargetHandle cRefTargetHandle = (nRefNum >= 0) ? pIParamBlock2->GetReference(nRefNum) : nullptr;
if (cRefTargetHandle)
fPercentageAlongPath = pIParamBlock2->GetFloat(path_percent, 0);
}
{ // Add scene node modifier
XmlElement *pModifierElement = new XmlElement("Modifier");
pModifierElement->SetAttribute("Class", "PLScene::SNMPositionPath");
pModifierElement->SetAttribute("Filename", sPathFilename);
pModifierElement->SetAttribute("Progress", String::Format("%f", fPercentageAlongPath));
// [TODO] Any change to setup speed inside 3ds Max?
static const float fSpeed = 0.03f;
// Automatic animation playback?
if (g_SEOptions.bAnimationPlayback)
pModifierElement->SetAttribute("Speed", String::Format("%f", (pPathController->GetFlip() ? -fSpeed : fSpeed)));
else
pModifierElement->SetAttribute("Speed", "0.0");
// Link modifier element
cSceneElement.LinkEndChild(*pModifierElement);
}
// Follow?
if (pPathController->GetFollow()) {
// Add scene node modifier
XmlElement *pModifierElement = new XmlElement("Modifier");
pModifierElement->SetAttribute("Class", "PLScene::SNMRotationMoveDirection");
// Link modifier element
cSceneElement.LinkEndChild(*pModifierElement);
}
}
}
}
}
// Rotation controller
pController = pTMController->GetRotationController();
if (pController) {
// Are there any rotation keyframes?
bRotationKeyframes = PLTools::HasKeyControlInterface(*pController);
if (!bRotationKeyframes) {
// Is there a look at controller?
ILookAtConstRotation *pLookAtController = GetILookAtConstInterface(pController);
if (pLookAtController && pLookAtController->GetNumTargets() > 0) {
INode *pTarget = pLookAtController->GetNode(0);
if (pTarget) {
// Check look at controller
bool bFlip = (pLookAtController->GetTargetAxisFlip() != 0);
// Write down the scene node modifier
WriteTargetRotationModifier(cSceneElement, *pTarget, bFlip);
}
}
}
}
//.........这里部分代码省略.........