// Singu Note: The following callbacks are not found upstream
void LLParticipantList::onVolumeChange(const LLSD& param)
{
	// Singu Note: Allow modifying own voice volume during a voice session (Which is valued at half of what it should be)
	const LLUUID& speaker_id = mAvatarList->getValue().asUUID();
	if (gAgentID == speaker_id)
	{
		gSavedSettings.setF32("AudioLevelMic", param.asFloat()*2);
	}
	else
	{
		LLVoiceClient::getInstance()->setUserVolume(speaker_id, param.asFloat());
	}
}
void onHoverSliderMoved(const LLSD& val)
{
	F32 value = val.asFloat();
	LLVector3 offset(0.0, 0.0, llclamp(value,MIN_HOVER_Z,MAX_HOVER_Z));
	LL_INFOS("Avatar") << "setting hover from slider moved" << offset[2] << LL_ENDL;
	gAgentAvatarp->setHoverOffset(offset, false);
}
// Do send-to-the-server work when slider drag completes, or new
// value entered as text.
void onHoverSliderFinalCommit(const LLSD& val)
{
	F32 value = val.asFloat();
	gSavedPerAccountSettings.setF32("AvatarHoverOffsetZ", value);

	LLVector3 offset(0.0, 0.0, llclamp(value,MIN_HOVER_Z,MAX_HOVER_Z));
	LL_INFOS("Avatar") << "setting hover from slider final commit " << offset[2] << LL_ENDL;
	gAgentAvatarp->setHoverOffset(offset, true); // will send update this time.
}
void wlfPanel_AdvSettings::onChangeDayTime(const LLSD& value)
{
	// deactivate animator
	LLWLParamManager& inst(LLWLParamManager::instance());
	inst.mAnimator.deactivate();

	F32 val = value.asFloat() + 0.25f;
	if (val > 1.0f) --val;

	inst.mAnimator.setDayTime((F64)val);
	inst.mAnimator.update(inst.mCurParams);
}
bool handleStateMachineMaxTimeChanged(const LLSD& newvalue)
{
	F32 StateMachineMaxTime = newvalue.asFloat();
	AIEngine::setMaxCount(StateMachineMaxTime);
	return true;
}