Merge git://github.com/Shyotl/SingularityViewer

This commit is contained in:
Siana Gearz
2011-05-08 14:46:28 +02:00
5 changed files with 84 additions and 8 deletions

View File

@@ -13707,6 +13707,17 @@
<key>Value</key> <key>Value</key>
<integer>1</integer> <integer>1</integer>
</map> </map>
<key>WarnFirstPhysicsWearable</key>
<map>
<key>Comment</key>
<string>Enables Physics Wearable warning dialog</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>WatchdogEnabled</key> <key>WatchdogEnabled</key>
<map> <map>
<key>Comment</key> <key>Comment</key>

View File

@@ -7733,7 +7733,8 @@ void LLAgent::sendAgentSetAppearance()
} }
const bool wearing_physics = !!getWearable(WT_PHYSICS); static bool send_physics_params = false;
send_physics_params |= !!getWearable(WT_PHYSICS);
S32 transmitted_params = 0; S32 transmitted_params = 0;
for (LLViewerVisualParam* param = (LLViewerVisualParam*)mAvatarObject->getFirstVisualParam(); for (LLViewerVisualParam* param = (LLViewerVisualParam*)mAvatarObject->getFirstVisualParam();
param; param;
@@ -7741,17 +7742,17 @@ void LLAgent::sendAgentSetAppearance()
{ {
if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) // do not transmit params of group VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) // do not transmit params of group VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT
{ {
msg->nextBlockFast(_PREHASH_VisualParam );
// We don't send the param ids. Instead, we assume that the receiver has the same params in the same sequence.
const F32 param_value = param->getWeight();
const U8 new_weight = F32_to_U8(param_value, param->getMinWeight(), param->getMaxWeight());
msg->addU8Fast(_PREHASH_ParamValue, new_weight );
//A hack to prevent ruthing on older viewers when phys wearables aren't being worn. //A hack to prevent ruthing on older viewers when phys wearables aren't being worn.
if(!wearing_physics && param->getID() >= 10000) if(!send_physics_params && param->getID() >= 10000)
{ {
break; break;
} }
msg->nextBlockFast(_PREHASH_VisualParam );
// We don't send the param ids. Instead, we assume that the receiver has the same params in the same sequence.
const F32 param_value = param->getWeight();
const U8 new_weight = F32_to_U8(param_value, param->getMinWeight(), param->getMaxWeight());
msg->addU8Fast(_PREHASH_ParamValue, new_weight );
transmitted_params++; transmitted_params++;
} }
} }
@@ -7892,6 +7893,30 @@ struct LLSetWearableData
LLWearable* mNewWearable; LLWearable* mNewWearable;
}; };
static bool isFirstPhysicsWearable(EWearableType type, LLInventoryItem *new_item, LLWearable *new_wearable)
{
if (type == WT_PHYSICS && gSavedSettings.getWarning("FirstPhysicsWearable"))
{
class WearableDelayedCallback
{
public:
static void setDelayedWearable( const LLSD& notification, const LLSD& response, LLUUID item_id, LLWearable *wearable )
{
if(LLNotification::getSelectedOption(notification, response) == 0) //User selected wear
{
gSavedSettings.setWarning("FirstPhysicsWearable",FALSE);
LLInventoryItem *item = gInventory.getItem(item_id);
if(item)
gAgent.setWearable(item,wearable); //re-enter.
}
}
};
LLNotifications::instance().add("FirstPhysicsWearable",LLSD(),LLSD(),boost::bind(WearableDelayedCallback::setDelayedWearable, _1, _2, new_item->getUUID(),new_wearable));
return true;
}
return false;
}
BOOL LLAgent::needsReplacement(EWearableType wearableType, S32 remove) BOOL LLAgent::needsReplacement(EWearableType wearableType, S32 remove)
{ {
return TRUE; return TRUE;
@@ -7961,6 +7986,11 @@ void LLAgent::setWearableOutfit(
} }
} }
if (isFirstPhysicsWearable(type, new_item, new_wearable))
{
return;
}
mWearableEntry[ type ].mItemID = new_item->getUUID(); mWearableEntry[ type ].mItemID = new_item->getUUID();
mWearableEntry[ type ].mWearable = new_wearable; mWearableEntry[ type ].mWearable = new_wearable;
} }
@@ -8025,6 +8055,11 @@ void LLAgent::setWearable( LLInventoryItem* new_item, LLWearable* new_wearable )
} }
// [/RLVa:KB] // [/RLVa:KB]
if (isFirstPhysicsWearable(type, new_item, new_wearable))
{
return;
}
if( old_wearable ) if( old_wearable )
{ {
const LLUUID& old_item_id = mWearableEntry[ type ].mItemID; const LLUUID& old_item_id = mWearableEntry[ type ].mItemID;

View File

@@ -1791,6 +1791,7 @@ bool LLAppViewer::initConfiguration()
LLFirstUse::addConfigVariable("FirstSculptedPrim"); LLFirstUse::addConfigVariable("FirstSculptedPrim");
LLFirstUse::addConfigVariable("FirstVoice"); LLFirstUse::addConfigVariable("FirstVoice");
LLFirstUse::addConfigVariable("FirstMedia"); LLFirstUse::addConfigVariable("FirstMedia");
LLFirstUse::addConfigVariable("FirstPhysicsWearable");
// [RLVa:KB] - Checked: RLVa-1.0.3a (2009-09-10) | Added: RLVa-1.0.3a // [RLVa:KB] - Checked: RLVa-1.0.3a (2009-09-10) | Added: RLVa-1.0.3a
//LLFirstUse::addConfigVariable(RLV_SETTING_FIRSTUSE_DETACH); //LLFirstUse::addConfigVariable(RLV_SETTING_FIRSTUSE_DETACH);

View File

@@ -989,6 +989,12 @@ void LLViewerMediaImpl::updateImagesMediaStreams()
LLViewerMediaTexture* placeholder_image = (LLViewerMediaTexture*)LLViewerTextureManager::findTexture( mTextureId ); LLViewerMediaTexture* placeholder_image = (LLViewerMediaTexture*)LLViewerTextureManager::findTexture( mTextureId );
if(!placeholder_image)
{
return NULL;
}
placeholder_image->getLastReferencedTimer()->reset();
if (mNeedsNewTexture if (mNeedsNewTexture
|| placeholder_image->getUseMipMaps() || placeholder_image->getUseMipMaps()
|| ! placeholder_image->mIsMediaTexture || ! placeholder_image->mIsMediaTexture

View File

@@ -6940,5 +6940,28 @@ No
<notification icon="notifytip.tga" name="BlockedChatterAvatar" type="notifytip">Blocked chat-spam from avatar [FULL_NAME] ([SOURCE])</notification> <notification icon="notifytip.tga" name="BlockedChatterAvatar" type="notifytip">Blocked chat-spam from avatar [FULL_NAME] ([SOURCE])</notification>
<notification icon="notifytip.tga" name="BlockedChatterObjects" type="notifytip">Blocked chat-spam from objects owned by [OWNER] ([SOURCE])</notification> <notification icon="notifytip.tga" name="BlockedChatterObjects" type="notifytip">Blocked chat-spam from objects owned by [OWNER] ([SOURCE])</notification>
<notification
icon="notify.tga"
name="FirstPhysicsWearable"
priority="high"
type="notify">
By wearing a Physics Wearable certain server behavior will be enabled that many older viewers are incompatable with. On such viewers you may display incorrectly (often as 'Ruth').
If you wish to keep compatability with old viewers then you must not wear a Physics Wearable during your session. If you have already worn one during this session remove it and reconnect.
Click 'Wear' to attach the Physics Wearable, or click 'Cancel' if you wish to maintain compatability with legacy clients.
<unique/>
<form name="form">
<button
index="0"
name="Wear"
text="Wear"/>
<button
index="1"
name="Cancel"
text="Cancel"/>
</form>
</notification>
</notifications> </notifications>