//----------------------------------------------------------------------------- // validateLoopOut() //----------------------------------------------------------------------------- BOOL LLFloaterAnimPreview::validateLoopOut(LLUICtrl* spin, void* data) { LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data; if (!previewp->getEnabled()) return FALSE; F32 loop_out_value = (F32)previewp->childGetValue("loop_out_point").asReal(); F32 loop_in_value = (F32)previewp->childGetValue("loop_in_point").asReal(); if (loop_out_value < 0.f) { loop_out_value = 0.f; } else if (loop_out_value > 100.f) { loop_out_value = 100.f; } else if (loop_out_value < loop_in_value) { loop_out_value = loop_in_value; } previewp->childSetValue("loop_out_point", LLSD(loop_out_value)); return TRUE; }
//----------------------------------------------------------------------------- // onCommitLoopOut() //----------------------------------------------------------------------------- void LLFloaterAnimPreview::onCommitLoopOut(LLUICtrl* ctrl, void* data) { LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data; if (!previewp->getEnabled()) return; LLVOAvatar* avatarp; if (previewp->mInWorld) { if (!gAgent.getAvatarObject()) { return; } avatarp = gAgent.getAvatarObject(); } else { if (!previewp->mAnimPreview) { return; } avatarp = previewp->mAnimPreview->getDummyAvatar(); } LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID); if (motionp) { motionp->setLoopOut((F32)previewp->childGetValue("loop_out_point").asReal() * 0.01f * motionp->getDuration()); previewp->resetMotion(); previewp->childSetValue("loop_check", LLSD(TRUE)); onCommitLoop(ctrl, data); } }
//----------------------------------------------------------------------------- // validateEaseOut() //----------------------------------------------------------------------------- BOOL LLFloaterAnimPreview::validateEaseOut(LLUICtrl* spin, void* data) { LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data; if (!previewp->getEnabled()) return FALSE; LLVOAvatar* avatarp; if (previewp->mInWorld) { if (!gAgent.getAvatarObject()) { return FALSE; } avatarp = gAgent.getAvatarObject(); } else { if (!previewp->mAnimPreview) { return FALSE; } avatarp = previewp->mAnimPreview->getDummyAvatar(); } LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID); if (!motionp->getLoop()) { F32 new_ease_out = llclamp((F32)previewp->childGetValue("ease_out_time").asReal(), 0.f, motionp->getDuration() - motionp->getEaseInDuration()); previewp->childSetValue("ease_out_time", LLSD(new_ease_out)); } return TRUE; }
//----------------------------------------------------------------------------- // validateEaseIn() //----------------------------------------------------------------------------- BOOL LLFloaterAnimPreview::validateEaseIn(LLUICtrl* spin, void* data) { LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data; if (!previewp->getEnabled()) return FALSE; LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar(); LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID); if (!motionp->getLoop()) { F32 new_ease_in = llclamp((F32)previewp->childGetValue("ease_in_time").asReal(), 0.f, motionp->getDuration() - motionp->getEaseOutDuration()); previewp->childSetValue("ease_in_time", LLSD(new_ease_in)); } return TRUE; }
//----------------------------------------------------------------------------- // onCommitLoopIn() //----------------------------------------------------------------------------- void LLFloaterAnimPreview::onCommitLoopIn(LLUICtrl* ctrl, void* data) { LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data; if (!previewp->getEnabled()) return; LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar(); LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID); if (motionp) { motionp->setLoopIn((F32)previewp->childGetValue("loop_in_point").asReal() / 100.f); previewp->resetMotion(); previewp->childSetValue("loop_check", LLSD(TRUE)); onCommitLoop(ctrl, data); } }