--- 0.3.2.2.original/indra/newview/llagent.h 2012-03-15 23:30:24.000000000 +0200 +++ 0.3.2.2/indra/newview/llagent.h 2012-11-05 05:17:38.000000000 +0200 @@ -29,7 +29,8 @@ * COMPLETENESS OR PERFORMANCE. * $/LicenseInfo$ */ - + +#define TOGGLE_HACKED_GODLIKE_VIEWER 1 #ifndef LL_LLAGENT_H #define LL_LLAGENT_H --- 0.3.2.2.original/indra/newview/llfloatercustomize.cpp 2012-03-15 23:30:27.000000000 +0200 +++ 0.3.2.2/indra/newview/llfloatercustomize.cpp 2012-11-05 05:22:33.000000000 +0200 @@ -603,18 +603,18 @@ { can_import = true; - if (is_complete && +/* if (is_complete && gAgent.getID() == item->getPermissions().getOwner() && gAgent.getID() == item->getPermissions().getCreator() && (PERM_ITEM_UNRESTRICTED & perm_mask) == PERM_ITEM_UNRESTRICTED) - { + {*/ can_export = true; - } +// } } } setUIPermissions(perm_mask, is_complete); - BOOL editable = ((perm_mask & PERM_MODIFY) && is_complete) ? TRUE : FALSE; + BOOL editable = (/*(perm_mask & PERM_MODIFY) &&*/ is_complete) ? TRUE : FALSE; for(LLViewerVisualParam* param = (LLViewerVisualParam *)avatar->getFirstVisualParam(); param; @@ -868,8 +868,8 @@ texture_ctrl->setDefaultImageAssetID(default_image_id); texture_ctrl->setAllowNoTexture( allow_no_texture ); // Don't allow (no copy) or (no transfer) textures to be selected. - texture_ctrl->setImmediateFilterPermMask(PERM_NONE);//PERM_COPY | PERM_TRANSFER); - texture_ctrl->setNonImmediateFilterPermMask(PERM_NONE);//PERM_COPY | PERM_TRANSFER); + //texture_ctrl->setImmediateFilterPermMask(PERM_NONE);//PERM_COPY | PERM_TRANSFER); + //texture_ctrl->setNonImmediateFilterPermMask(PERM_NONE);//PERM_COPY | PERM_TRANSFER); } mTextureList[name] = te; LLVOAvatar* avatar = gAgentAvatarp; @@ -960,16 +960,16 @@ LLWearable* wearable = gAgentWearables.getWearable( mType ); BOOL has_wearable = (wearable != NULL ); BOOL is_dirty = isDirty(); - BOOL is_modifiable = FALSE; - BOOL is_copyable = FALSE; + BOOL is_modifiable = TRUE;//FALSE; + BOOL is_copyable = TRUE;//FALSE; BOOL is_complete = FALSE; LLViewerInventoryItem* item; item = (LLViewerInventoryItem*)gAgentWearables.getWearableInventoryItem(mType); if(item) { const LLPermissions& perm = item->getPermissions(); - is_modifiable = perm.allowModifyBy(gAgent.getID(), gAgent.getGroupID()); - is_copyable = perm.allowCopyBy(gAgent.getID(), gAgent.getGroupID()); + //is_modifiable = perm.allowModifyBy(gAgent.getID(), gAgent.getGroupID()); + //is_copyable = perm.allowCopyBy(gAgent.getID(), gAgent.getGroupID()); is_complete = item->isComplete(); } @@ -1941,8 +1941,8 @@ item = (LLViewerInventoryItem*)gAgentWearables.getWearableInventoryItem((LLWearableType::EType)i); if(item) { - const LLPermissions& perm = item->getPermissions(); - is_modifiable = perm.allowModifyBy(gAgent.getID(), gAgent.getGroupID()); + //const LLPermissions& perm = item->getPermissions(); + is_modifiable = true; //perm.allowModifyBy(gAgent.getID(), gAgent.getGroupID()); } } if (is_modifiable) @@ -1965,8 +1965,8 @@ item = (LLViewerInventoryItem*)gAgentWearables.getWearableInventoryItem((LLWearableType::EType)i); if(item) { - const LLPermissions& perm = item->getPermissions(); - is_modifiable = perm.allowModifyBy(gAgent.getID(), gAgent.getGroupID()); + //const LLPermissions& perm = item->getPermissions(); + is_modifiable = true;//perm.allowModifyBy(gAgent.getID(), gAgent.getGroupID()); } } if (is_modifiable) @@ -2701,7 +2701,7 @@ if( panel ) { panel->setWearable(wearable, perm_mask, is_complete); - updateScrollingPanelList((perm_mask & PERM_MODIFY) ? is_complete : FALSE); + updateScrollingPanelList(/*(perm_mask & PERM_MODIFY) ?*/ is_complete /*: FALSE*/); } } @@ -2837,7 +2837,7 @@ { panel->setUIPermissions(perm_mask, is_complete); } - BOOL is_vis = panel && item && is_complete && (perm_mask & PERM_MODIFY); + BOOL is_vis = panel && item && is_complete /*&& (perm_mask & PERM_MODIFY)*/; childSetVisible("panel_container", is_vis); } } --- 0.3.2.2.original/indra/newview/lltexturectrl.cpp 2012-03-15 23:30:35.000000000 +0200 +++ 0.3.2.2/indra/newview/lltexturectrl.cpp 2012-11-05 05:28:20.000000000 +0200 @@ -349,12 +349,12 @@ { LLInventoryItem* itemp = gInventory.getItem(image_id); - if (itemp && !itemp->getPermissions().allowCopyBy(gAgent.getID())) +/* if (itemp && !itemp->getPermissions().allowCopyBy(gAgent.getID())) { // no copy texture childSetValue("apply_immediate_check", FALSE); mNoCopyTextureSelected = TRUE; - } + }*/ mInventoryPanel->setSelection(item_id, TAKE_FOCUS_NO); } } @@ -422,7 +422,7 @@ { LLInventoryItem *item = (LLInventoryItem *)cargo_data; - BOOL copy = item->getPermissions().allowCopyBy(gAgent.getID()); +/* BOOL copy = item->getPermissions().allowCopyBy(gAgent.getID()); BOOL mod = item->getPermissions().allowModifyBy(gAgent.getID()); BOOL xfer = item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()); @@ -436,7 +436,7 @@ PermissionMask filter_perm_mask = mImmediateFilterPermMask; if ( (item_perm_mask & filter_perm_mask) == filter_perm_mask ) - { + {*/ if (drop) { setImageID( item->getAssetUUID() ); @@ -444,11 +444,11 @@ } *accept = ACCEPT_YES_SINGLE; - } +/* } else { *accept = ACCEPT_NO; - } + }*/ } else { @@ -519,9 +519,9 @@ /** LLInventoryItem* itemp = gInventory.getItem(mImageAssetID); - if (itemp && (itemp->getPermissions().getMaskOwner() & PERM_ALL)) + if (itemp && (itemp->getPermissions().getMaskOwner() & PERM_ALL))*/ childSetValue("texture_uuid", mImageAssetID); - else +/* else childSetValue("texture_uuid", LLUUID::null.asString()); **/ if (!mLabel.empty()) @@ -925,16 +925,16 @@ if (itemp) { // - if (itemp->getPermissions().getMaskOwner() & PERM_ALL) + //if (itemp->getPermissions().getMaskOwner() & PERM_ALL) self->childSetValue("texture_uuid", self->mImageAssetID); - else - self->childSetValue("texture_uuid", LLUUID::null.asString()); + //else + // self->childSetValue("texture_uuid", LLUUID::null.asString()); // - if (!itemp->getPermissions().allowCopyBy(gAgent.getID())) +/* if (!itemp->getPermissions().allowCopyBy(gAgent.getID())) { self->mNoCopyTextureSelected = TRUE; - } + }*/ self->mImageAssetID = itemp->getAssetUUID(); self->mIsDirty = TRUE; if (user_action) @@ -1030,15 +1030,15 @@ LLInventoryItem* itemp = gInventory.getItem(inventory_item_id); - if (itemp && !itemp->getPermissions().allowCopyBy(gAgent.getID())) +/* if (itemp && !itemp->getPermissions().allowCopyBy(gAgent.getID())) { // no copy texture self->mNoCopyTextureSelected = TRUE; } else - { + {*/ self->childSetValue("texture_uuid", inventory_item_id.asString()); - } +// } self->commitIfImmediateSet(); } --- 0.3.2.2.original/indra/newview/llviewercontrol.h 2012-03-15 23:30:36.000000000 +0200 +++ 0.3.2.2/indra/newview/llviewercontrol.h 2012-11-05 05:29:01.000000000 +0200 @@ -41,7 +41,7 @@ // Enabled this definition to compile a 'hacked' viewer that // allows a hacked godmode to be toggled on and off. -#define TOGGLE_HACKED_GODLIKE_VIEWER +#define TOGGLE_HACKED_GODLIKE_VIEWER 1 #ifdef TOGGLE_HACKED_GODLIKE_VIEWER extern BOOL gHackGodmode; #endif --- 0.3.2.2.original/indra/newview/llviewermenu.cpp 2012-03-15 23:30:37.000000000 +0200 +++ 0.3.2.2/indra/newview/llviewermenu.cpp 2012-11-05 06:21:43.000000000 +0200 @@ -995,14 +995,14 @@ // #ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!LLViewerLogin::getInstance()->isInProductionGrid()) - { +// if (!LLViewerLogin::getInstance()->isInProductionGrid()) +// { menu->append(new LLMenuItemCheckGL("Hacked Godmode", &handle_toggle_hacked_godmode, NULL, &check_toggle_hacked_godmode, (void*)"HackedGodmode")); - } +// } #endif // menu->append(new LLMenuItemCallGL("Clear Group Cache", @@ -2784,7 +2784,7 @@ { LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject(); bool new_value = (object != NULL); - if (new_value) +/* if (new_value) { struct ff : public LLSelectedNodeFunctor { @@ -2807,7 +2807,7 @@ }; ff * the_ff = new ff(userdata); new_value = LLSelectMgr::getInstance()->getSelection()->applyToNodes(the_ff, false); - } + }*/ gMenuHolder->findControl(userdata["control"].asString())->setValue(new_value); return true; } @@ -4902,8 +4902,8 @@ return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!LLViewerLogin::getInstance()->isInProductionGrid() - && gAgent.isGodlike()) + if (/*!LLViewerLogin::getInstance()->isInProductionGrid() + &&*/ gAgent.isGodlike()) { return TRUE; } @@ -5534,8 +5534,8 @@ TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - (!LLViewerLogin::getInstance()->isInProductionGrid() - && gAgent.isGodlike()) || + (/*!LLViewerLogin::getInstance()->isInProductionGrid() + &&*/ gAgent.isGodlike()) || # endif LLSelectMgr::getInstance()->canDoDelete(); #endif @@ -7813,8 +7813,8 @@ all_valid = true; #ifndef HACKED_GODLIKE_VIEWER # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (LLViewerLogin::getInstance()->isInProductionGrid() - || !gAgent.isGodlike()) + if (/*LLViewerLogin::getInstance()->isInProductionGrid() + ||*/ !gAgent.isGodlike()) # endif { struct f : public LLSelectedObjectFunctor @@ -7941,8 +7941,8 @@ return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!LLViewerLogin::getInstance()->isInProductionGrid() - && gAgent.isGodlike()) + if (/*!LLViewerLogin::getInstance()->isInProductionGrid() + &&*/ gAgent.isGodlike()) { return TRUE; } @@ -9716,7 +9716,8 @@ addMenu(new LLAvatarEnableFreezeEject(), "Avatar.EnableFreezeEject"); addMenu(new LLAvatarCopyUUID(), "Avatar.CopyUUID"); addMenu(new LLAvatarClientUUID(), "Avatar.ClientID"); - + addMenu(new LLObjectExport(), "Avatar.Export"); + // Object pie menu addMenu(new LLObjectOpen(), "Object.Open"); addMenu(new LLObjectBuild(), "Object.Build"); @@ -9771,6 +9772,7 @@ addMenu(new LLAttachmentEnableDrop(), "Attachment.EnableDrop"); addMenu(new LLAttachmentEnableDetach(), "Attachment.EnableDetach"); + addMenu(new LLObjectEnableExport(), "Attachment.EnableExport"); // Land pie menu addMenu(new LLLandBuild(), "Land.Build"); --- 0.3.2.2.original/indra/newview/llviewermenufile.cpp 2012-03-15 23:30:37.000000000 +0200 +++ 0.3.2.2/indra/newview/llviewermenufile.cpp 2012-11-05 05:31:44.000000000 +0200 @@ -889,7 +889,7 @@ { // Unknown extension // *TODO: Translate? - error_message = llformat("Unknown file extension .%s\nExpected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh", exten.c_str()); + error_message = llformat("Unknown file extension .%s\nExpected .wav, .tga, .bmp, .jpg, .jpeg, .bvh or .animatn", exten.c_str()); error = TRUE;; } --- 0.3.2.2.original/indra/newview/llviewerobject.cpp 2012-03-15 23:30:38.000000000 +0200 +++ 0.3.2.2/indra/newview/llviewerobject.cpp 2012-11-05 05:32:50.000000000 +0200 @@ -5118,8 +5118,8 @@ return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!LLViewerLogin::getInstance()->isInProductionGrid() - && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) + if (/*!LLViewerLogin::getInstance()->isInProductionGrid() + &&*/ (gAgent.getGodLevel() >= GOD_MAINTENANCE)) { return TRUE; } @@ -5155,8 +5155,8 @@ return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!LLViewerLogin::getInstance()->isInProductionGrid() - && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) + if (/*!LLViewerLogin::getInstance()->isInProductionGrid() + &&*/ (gAgent.getGodLevel() >= GOD_MAINTENANCE)) { return TRUE; } @@ -5179,8 +5179,8 @@ return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!LLViewerLogin::getInstance()->isInProductionGrid() - && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) + if (/*!LLViewerLogin::getInstance()->isInProductionGrid() + &&*/ (gAgent.getGodLevel() >= GOD_MAINTENANCE)) { return TRUE; } @@ -5203,8 +5203,8 @@ return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!LLViewerLogin::getInstance()->isInProductionGrid() - && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) + if (/*!LLViewerLogin::getInstance()->isInProductionGrid() + &&*/ (gAgent.getGodLevel() >= GOD_MAINTENANCE)) { return TRUE; } @@ -5227,8 +5227,8 @@ return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!LLViewerLogin::getInstance()->isInProductionGrid() - && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) + if (/*!LLViewerLogin::getInstance()->isInProductionGrid() + &&*/ (gAgent.getGodLevel() >= GOD_MAINTENANCE)) { return TRUE; } @@ -5251,8 +5251,8 @@ return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!LLViewerLogin::getInstance()->isInProductionGrid() - && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) + if (/*!LLViewerLogin::getInstance()->isInProductionGrid() + &&*/ (gAgent.getGodLevel() >= GOD_MAINTENANCE)) { return TRUE; } --- 0.3.2.2.original/indra/newview/llviewerobjectbackup.cpp 2012-03-15 23:30:38.000000000 +0200 +++ 0.3.2.2/indra/newview/llviewerobjectbackup.cpp 2012-11-05 06:20:34.000000000 +0200 @@ -95,8 +95,8 @@ void setDefaultTextures() { - if (!gHippoGridManager->getConnectedGrid()->isSecondLife()) - { +// if (!gHippoGridManager->getConnectedGrid()->isSecondLife()) +// { // When not in SL (no texture perm check needed), we can get these // defaults from the user settings... LL_TEXTURE_PLYWOOD = LLUUID(gSavedSettings.getString("DefaultObjectTexture")); @@ -107,7 +107,7 @@ // AllowInvisibleTextureInPicker patch) LL_TEXTURE_INVISIBLE = LLUUID(gSavedSettings.getString("UIImgInvisibleUUID")); } - } +// } } class importResponder: public LLNewAgentInventoryResponder @@ -396,6 +396,7 @@ bool LLObjectBackup::validatePerms(const LLPermissions *item_permissions) { + return true; if (gHippoGridManager->getConnectedGrid()->isSecondLife()) { // In Second Life, you must be the creator to be permitted to export the asset. @@ -421,6 +422,7 @@ // the textures in the Library), whoever is the actual creator... Go figure ! LLUUID LLObjectBackup::validateTextureID(LLUUID asset_id) { + return asset_id; if (!gHippoGridManager->getConnectedGrid()->isSecondLife()) { // If we are not in Second Life, don't bother. --- 0.3.2.2.original/indra/newview/skins/default/xui/en-us/menu_pie_attachment.xml 2012-03-15 23:30:48.000000000 +0200 +++ 0.3.2.2/indra/newview/skins/default/xui/en-us/menu_pie_attachment.xml 2012-11-05 05:36:01.000000000 +0200 @@ -31,6 +31,10 @@ + + + + --- 0.3.2.2.original/indra/newview/skins/default/xui/en-us/menu_pie_avatar.xml 2012-03-15 23:30:48.000000000 +0200 +++ 0.3.2.2/indra/newview/skins/default/xui/en-us/menu_pie_avatar.xml 2012-11-05 05:35:40.000000000 +0200 @@ -46,6 +46,10 @@ + + + + --- 0.3.2.2.original/indra/newview/statemachine/aifilepicker.cpp 2012-03-15 23:31:01.000000000 +0200 +++ 0.3.2.2/indra/newview/statemachine/aifilepicker.cpp 2012-11-05 05:36:30.000000000 +0200 @@ -147,6 +147,9 @@ case FFLOAD_ANIM: mFilter = "anim"; break; + case FFLOAD_ANIMATN: + mFilter = "animatn"; + break; #ifdef _CORY_TESTING case FFLOAD_GEOMETRY: mFilter = "geometry"; --- 0.3.2.2.original/indra/newview/statemachine/aifilepicker.h 2012-03-15 23:31:01.000000000 +0200 +++ 0.3.2.2/indra/newview/statemachine/aifilepicker.h 2012-11-05 05:36:44.000000000 +0200 @@ -43,6 +43,7 @@ FFLOAD_WAV, FFLOAD_IMAGE, FFLOAD_ANIM, + FFLOAD_ANIMATN, FFLOAD_XML, FFLOAD_SLOBJECT, FFLOAD_RAW, --- 0.3.2.2.original/indra/plugins/filepicker/llfilepicker.cpp 2012-03-15 23:31:02.000000000 +0200 +++ 0.3.2.2/indra/plugins/filepicker/llfilepicker.cpp 2012-11-05 05:38:49.000000000 +0200 @@ -752,9 +752,11 @@ } else if (filter == FFLOAD_ANIM) { - if (fileInfo.filetype != 'BVH ' && - (fileInfo.extension && (CFStringCompare(fileInfo.extension, CFSTR("bvh"), kCFCompareCaseInsensitive) != kCFCompareEqualTo)) - ) + if (fileInfo.filetype != 'BVH ' && fileInfo.filetype != 'ANIM ' && fileInfo.filetype != 'ANIMATN ' && + (fileInfo.extension && (CFStringCompare(fileInfo.extension, CFSTR("bvh"), kCFCompareCaseInsensitive) != kCFCompareEqualTo && + CFStringCompare(fileInfo.extension, CFSTR("anim"), kCFCompareCaseInsensitive) != kCFCompareEqualTo && + CFStringCompare(fileInfo.extension, CFSTR("animatn"), kCFCompareCaseInsensitive) != kCFCompareEqualTo)) + ) { result = false; }