void MotionMaster::ResumeSplineChain(SplineChainResumeInfo const& info) { if (info.Empty()) { TC_LOG_ERROR("movement.motionmaster", "MotionMaster::ResumeSplineChain: '%s', tried to resume a spline chain from empty info.", _owner->GetGUID().ToString().c_str()); return; } Mutate(new SplineChainMovementGenerator(info), MOTION_SLOT_ACTIVE); }
void MotionMaster::ResumeSplineChain(SplineChainResumeInfo const& info) { if (info.Empty()) { TC_LOG_ERROR("misc", "MotionMaster::ResumeSplineChain: unit with entry %u tried to resume a spline chain from empty info.", _owner->GetEntry()); return; } Mutate(new SplineChainMovementGenerator(info), MOTION_SLOT_ACTIVE); }
/* static */ void SplineChainMovementGenerator::GetResumeInfo(SplineChainResumeInfo& info, Unit const* owner, Optional<uint32> id) { std::function<bool(MovementGenerator const*)> criteria = [id](MovementGenerator const* movement) -> bool { if (movement->GetMovementGeneratorType() == SPLINE_CHAIN_MOTION_TYPE) return (!id || static_cast<SplineChainMovementGenerator const*>(movement)->GetId() == *id); return false; }; if (MovementGenerator const* activeGenerator = owner->GetMotionMaster()->GetMovementGenerator(criteria)) info = static_cast<SplineChainMovementGenerator const*>(activeGenerator)->GetResumeInfo(owner); else info.Clear(); }