Remove more old stuff
This commit is contained in:
@@ -115,7 +115,6 @@ set(viewer_SOURCE_FILES
|
||||
llanimstatelabels.cpp
|
||||
llappearancemgr.cpp
|
||||
llappviewer.cpp
|
||||
llassetconverter.cpp
|
||||
llassetuploadqueue.cpp
|
||||
llassetuploadresponders.cpp
|
||||
llattachmentsmgr.cpp
|
||||
@@ -304,7 +303,6 @@ set(viewer_SOURCE_FILES
|
||||
llinventorypanel.cpp
|
||||
lljoystickbutton.cpp
|
||||
lllandmarklist.cpp
|
||||
lllocalinventory.cpp
|
||||
lllogchat.cpp
|
||||
llloginhandler.cpp
|
||||
llmainlooprepeater.cpp
|
||||
@@ -620,7 +618,6 @@ set(viewer_HEADER_FILES
|
||||
llappearance.h
|
||||
llappearancemgr.h
|
||||
llappviewer.h
|
||||
llassetconverter.h
|
||||
llassetuploadqueue.h
|
||||
llassetuploadresponders.h
|
||||
llattachmentsmgr.h
|
||||
@@ -809,7 +806,6 @@ set(viewer_HEADER_FILES
|
||||
lljoystickbutton.h
|
||||
lllandmarklist.h
|
||||
lllightconstants.h
|
||||
lllocalinventory.h
|
||||
lllogchat.h
|
||||
llloginhandler.h
|
||||
llmainlooprepeater.h
|
||||
|
||||
@@ -235,28 +235,6 @@
|
||||
<key>Value</key>
|
||||
<real>0.0</real>
|
||||
</map>
|
||||
<key>AscentUseSystemFolder</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Enables the System folder for setting and non-permanent asset storage.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>AscentSystemTemporary</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>When enabled, temporary uploads are put in the System Asset folder (if System Folder exists).</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>AscentShowFriendsTag</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
||||
@@ -223,8 +223,8 @@ void LLPrefsAscentSys::refreshValues()
|
||||
{
|
||||
//General -----------------------------------------------------------------------------
|
||||
mDoubleClickTeleport = gSavedSettings.getBOOL("DoubleClickTeleport");
|
||||
mResetCameraAfterTP = gSavedSettings.getBOOL("OptionRotateCamAfterLocalTP");
|
||||
mOffsetTPByUserHeight = gSavedSettings.getBOOL("OptionOffsetTPByAgentHeight");
|
||||
mResetCameraAfterTP = gSavedSettings.getBOOL("OptionRotateCamAfterLocalTP");
|
||||
mOffsetTPByUserHeight = gSavedSettings.getBOOL("OptionOffsetTPByAgentHeight");
|
||||
mClearBeaconAfterTeleport = gSavedSettings.getBOOL("ClearBeaconAfterTeleport");
|
||||
mLiruFlyAfterTeleport = gSavedSettings.getBOOL("LiruFlyAfterTeleport");
|
||||
mLiruContinueFlying = gSavedSettings.getBOOL("LiruContinueFlyingOnUnsit");
|
||||
@@ -235,14 +235,12 @@ void LLPrefsAscentSys::refreshValues()
|
||||
mAlwaysShowFly = gSavedSettings.getBOOL("AscentFlyAlwaysEnabled");
|
||||
mDisableMinZoom = gSavedSettings.getBOOL("AscentDisableMinZoomDist");
|
||||
mPowerUser = gSavedSettings.getBOOL("AscentPowerfulWizard");
|
||||
mUseSystemFolder = gSavedSettings.getBOOL("AscentUseSystemFolder");
|
||||
mUploadToSystem = gSavedSettings.getBOOL("AscentSystemTemporary");
|
||||
mFetchInventoryOnLogin = gSavedSettings.getBOOL("FetchInventoryOnLogin");
|
||||
mEnableLLWind = gSavedSettings.getBOOL("WindEnabled");
|
||||
mEnableClouds = gSavedSettings.getBOOL("CloudsEnabled");
|
||||
mEnableClassicClouds = gSavedSettings.getBOOL("SkyUseClassicClouds");
|
||||
mEnableClassicClouds = gSavedSettings.getBOOL("SkyUseClassicClouds");
|
||||
mSpeedRez = gSavedSettings.getBOOL("SpeedRez");
|
||||
mSpeedRezInterval = gSavedSettings.getU32("SpeedRezInterval");
|
||||
mSpeedRezInterval = gSavedSettings.getU32("SpeedRezInterval");
|
||||
|
||||
//Command Line ------------------------------------------------------------------------
|
||||
mCmdLine = gSavedSettings.getBOOL("AscentCmdLine");
|
||||
@@ -303,7 +301,6 @@ void LLPrefsAscentSys::refresh()
|
||||
childSetEnabled("offset_teleport_check", mDoubleClickTeleport);
|
||||
childSetValue("power_user_check", mPowerUser);
|
||||
childSetValue("power_user_confirm_check", mPowerUser);
|
||||
childSetEnabled("temp_in_system_check", mUseSystemFolder);
|
||||
childSetEnabled("speed_rez_interval", mSpeedRez);
|
||||
childSetEnabled("speed_rez_seconds", mSpeedRez);
|
||||
|
||||
@@ -377,8 +374,8 @@ void LLPrefsAscentSys::cancel()
|
||||
{
|
||||
//General -----------------------------------------------------------------------------
|
||||
gSavedSettings.setBOOL("DoubleClickTeleport", mDoubleClickTeleport);
|
||||
gSavedSettings.setBOOL("OptionRotateCamAfterLocalTP", mResetCameraAfterTP);
|
||||
gSavedSettings.setBOOL("OptionOffsetTPByAgentHeight", mOffsetTPByUserHeight);
|
||||
gSavedSettings.setBOOL("OptionRotateCamAfterLocalTP", mResetCameraAfterTP);
|
||||
gSavedSettings.setBOOL("OptionOffsetTPByAgentHeight", mOffsetTPByUserHeight);
|
||||
gSavedSettings.setBOOL("ClearBeaconAfterTeleport", mClearBeaconAfterTeleport);
|
||||
gSavedSettings.setBOOL("LiruFlyAfterTeleport", mLiruFlyAfterTeleport);
|
||||
gSavedSettings.setBOOL("LiruContinueFlyingOnUnsit", mLiruContinueFlying);
|
||||
@@ -388,14 +385,12 @@ void LLPrefsAscentSys::cancel()
|
||||
gSavedSettings.setBOOL("AscentBuildAlwaysEnabled", mBuildAlwaysEnabled);
|
||||
gSavedSettings.setBOOL("AscentFlyAlwaysEnabled", mAlwaysShowFly);
|
||||
gSavedSettings.setBOOL("AscentDisableMinZoomDist", mDisableMinZoom);
|
||||
gSavedSettings.setBOOL("AscentUseSystemFolder", mUseSystemFolder);
|
||||
gSavedSettings.setBOOL("AscentSystemTemporary", mUploadToSystem);
|
||||
gSavedSettings.setBOOL("FetchInventoryOnLogin", mFetchInventoryOnLogin);
|
||||
gSavedSettings.setBOOL("WindEnabled", mEnableLLWind);
|
||||
gSavedSettings.setBOOL("CloudsEnabled", mEnableClouds);
|
||||
gSavedSettings.setBOOL("SkyUseClassicClouds", mEnableClassicClouds);
|
||||
gSavedSettings.setBOOL("SkyUseClassicClouds", mEnableClassicClouds);
|
||||
gSavedSettings.setBOOL("SpeedRez", mSpeedRez);
|
||||
gSavedSettings.setU32("SpeedRezInterval", mSpeedRezInterval);
|
||||
gSavedSettings.setU32("SpeedRezInterval", mSpeedRezInterval);
|
||||
|
||||
//Command Line ------------------------------------------------------------------------
|
||||
gSavedSettings.setBOOL("AscentCmdLine", mCmdLine);
|
||||
|
||||
@@ -54,8 +54,8 @@ protected:
|
||||
|
||||
//General -----------------------------------------------------------------------------
|
||||
BOOL mDoubleClickTeleport;
|
||||
BOOL mResetCameraAfterTP;
|
||||
BOOL mOffsetTPByUserHeight;
|
||||
BOOL mResetCameraAfterTP;
|
||||
BOOL mOffsetTPByUserHeight;
|
||||
bool mClearBeaconAfterTeleport;
|
||||
bool mLiruFlyAfterTeleport;
|
||||
bool mLiruContinueFlying;
|
||||
@@ -66,14 +66,12 @@ protected:
|
||||
BOOL mAlwaysShowFly;
|
||||
BOOL mDisableMinZoom;
|
||||
BOOL mPowerUser;
|
||||
BOOL mUseSystemFolder;
|
||||
BOOL mUploadToSystem;
|
||||
BOOL mFetchInventoryOnLogin;
|
||||
BOOL mEnableLLWind;
|
||||
BOOL mEnableClouds;
|
||||
BOOL mEnableClassicClouds;
|
||||
BOOL mEnableClassicClouds;
|
||||
BOOL mSpeedRez;
|
||||
U32 mSpeedRezInterval;
|
||||
U32 mSpeedRezInterval;
|
||||
|
||||
//Command Line ------------------------------------------------------------------------
|
||||
BOOL mCmdLine;
|
||||
|
||||
@@ -1,112 +0,0 @@
|
||||
// <edit>
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
#include "llvfs.h"
|
||||
#include "llapr.h"
|
||||
#include "llvfile.h"
|
||||
#include "llassetconverter.h"
|
||||
#include "llviewertexturelist.h"
|
||||
#include "llvorbisencode.h"
|
||||
#include "llwearable.h"
|
||||
#include "llbvhloader.h"
|
||||
#include <boost/bind.hpp>
|
||||
struct conversion_s
|
||||
{
|
||||
std::string extension;
|
||||
LLAssetType::EType type;
|
||||
boost::function<bool(const std::string&, const std::string&)> conv_fn;
|
||||
}conversion_list[] =
|
||||
{
|
||||
{ "bmp", LLAssetType::AT_TEXTURE, boost::bind(&LLViewerTextureList::createUploadFile,_1,_2,IMG_CODEC_BMP) },
|
||||
{ "tga", LLAssetType::AT_TEXTURE, boost::bind(&LLViewerTextureList::createUploadFile,_1,_2,IMG_CODEC_TGA) },
|
||||
{ "jpg", LLAssetType::AT_TEXTURE, boost::bind(&LLViewerTextureList::createUploadFile,_1,_2,IMG_CODEC_JPEG)},
|
||||
{ "jpeg", LLAssetType::AT_TEXTURE, boost::bind(&LLViewerTextureList::createUploadFile,_1,_2,IMG_CODEC_JPEG)},
|
||||
{ "png", LLAssetType::AT_TEXTURE, boost::bind(&LLViewerTextureList::createUploadFile,_1,_2,IMG_CODEC_PNG) },
|
||||
{ "jp2", LLAssetType::AT_TEXTURE, &LLAssetConverter::copyFile },
|
||||
{ "j2k", LLAssetType::AT_TEXTURE, &LLAssetConverter::copyFile },
|
||||
{ "j2c", LLAssetType::AT_TEXTURE, &LLAssetConverter::copyFile },
|
||||
{ "wav", LLAssetType::AT_SOUND, &encode_vorbis_file },
|
||||
{ "ogg", LLAssetType::AT_SOUND, &LLAssetConverter::copyFile },
|
||||
{ "bvh", LLAssetType::AT_ANIMATION, &LLAssetConverter::copyBVH },
|
||||
{ "animatn", LLAssetType::AT_ANIMATION, &LLAssetConverter::copyFile },
|
||||
{ "gesture", LLAssetType::AT_GESTURE, &LLAssetConverter::copyFile },
|
||||
{ "notecard", LLAssetType::AT_NOTECARD, &LLAssetConverter::copyFile },
|
||||
{ "lsl", LLAssetType::AT_LSL_TEXT, &LLAssetConverter::copyFile },
|
||||
//tmp ?
|
||||
};
|
||||
|
||||
// static
|
||||
extern std::string STATUS[];
|
||||
LLAssetType::EType LLAssetConverter::convert(const std::string &src_filename, const std::string &filename)
|
||||
{
|
||||
std::string exten = gDirUtilp->getExtension(src_filename);
|
||||
for(U32 i = 0;i < sizeof(conversion_list) / sizeof(conversion_list[0]); ++i)
|
||||
{
|
||||
if(conversion_list[i].extension == exten)
|
||||
{
|
||||
return conversion_list[i].conv_fn(src_filename, filename) ?
|
||||
conversion_list[i].type : LLAssetType::AT_NONE;
|
||||
}
|
||||
}
|
||||
LLWearableType::EType wear_type = LLWearableType::typeNameToType(exten);
|
||||
if(wear_type != LLWearableType::WT_NONE && copyFile(src_filename, filename))
|
||||
{
|
||||
return LLWearableType::getAssetType(wear_type);
|
||||
}
|
||||
|
||||
llwarns << "Unhandled extension" << llendl;
|
||||
return LLAssetType::AT_NONE;
|
||||
}
|
||||
bool LLAssetConverter::copyFile(const std::string &src_filename, const std::string &dst_filename)
|
||||
{
|
||||
S32 src_size;
|
||||
|
||||
LLAPRFile src_fp(src_filename, LL_APR_RB, &src_size);
|
||||
if(!src_fp.getFileHandle()) return false;
|
||||
|
||||
LLAPRFile dst_fp(dst_filename, LL_APR_WB);
|
||||
if(!dst_fp.getFileHandle()) return false;
|
||||
|
||||
std::vector<char> buffer(src_size + 1);
|
||||
|
||||
src_fp.read(&buffer[0], src_size);
|
||||
dst_fp.write(&buffer[0], src_size);
|
||||
|
||||
return true;
|
||||
}
|
||||
bool LLAssetConverter::copyBVH(const std::string &src_filename, const std::string &dst_filename)
|
||||
{
|
||||
S32 file_size;
|
||||
|
||||
LLAPRFile fp(src_filename, LL_APR_RB, &file_size);
|
||||
if(!fp.getFileHandle()) return false;
|
||||
|
||||
std::vector<char> buffer(file_size + 1);
|
||||
|
||||
ELoadStatus load_status = E_ST_OK;
|
||||
S32 line_number = 0;
|
||||
|
||||
LLBVHLoader* loaderp = new LLBVHLoader(&buffer[0], load_status, line_number);
|
||||
|
||||
if(load_status == E_ST_NO_XLT_FILE)
|
||||
{
|
||||
llwarns << "NOTE: No translation table found." << llendl;
|
||||
}
|
||||
else if(load_status != E_ST_OK)
|
||||
{
|
||||
llwarns << "ERROR: [line: " << line_number << "] " << STATUS[load_status].c_str() << llendl;
|
||||
}
|
||||
|
||||
buffer.resize(loaderp->getOutputSize());
|
||||
|
||||
LLDataPackerBinaryBuffer dp((U8*)&buffer[0], buffer.size());
|
||||
loaderp->serialize(dp);
|
||||
|
||||
delete loaderp;
|
||||
|
||||
LLAPRFile apr_file(dst_filename, LL_APR_RB, &file_size);
|
||||
if(!apr_file.getFileHandle()) return false;
|
||||
|
||||
apr_file.write(&buffer[0], buffer.size());
|
||||
return true;
|
||||
}
|
||||
// </edit>
|
||||
@@ -1,16 +0,0 @@
|
||||
// <edit>
|
||||
#ifndef LL_LLASSETCONVERTER_H
|
||||
#define LL_LLASSETCONVERTER_H
|
||||
|
||||
#include "llcommon.h"
|
||||
#include "llassettype.h"
|
||||
|
||||
class LLAssetConverter
|
||||
{
|
||||
public:
|
||||
static LLAssetType::EType convert(const std::string &src_filename, const std::string &filename);
|
||||
static bool copyFile(const std::string &src_filename, const std::string &dest_filename);
|
||||
static bool copyBVH(const std::string &src_filename, const std::string &dst_filename);
|
||||
};
|
||||
#endif
|
||||
// </edit>
|
||||
@@ -6,7 +6,6 @@
|
||||
#include "llscrolllistctrl.h"
|
||||
#include "llfloaterbvhpreview.h"
|
||||
#include "llvoavatar.h"
|
||||
#include "lllocalinventory.h"
|
||||
#include "llviewercamera.h"
|
||||
#include "llviewerwindow.h"
|
||||
#include "lltoolmgr.h"
|
||||
|
||||
@@ -1,561 +0,0 @@
|
||||
// <edit>
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
|
||||
#include "lllocalinventory.h"
|
||||
|
||||
#include "llviewerinventory.h"
|
||||
#include "llviewercontrol.h"
|
||||
|
||||
#include "llpreviewsound.h"
|
||||
#include "llpreviewanim.h"
|
||||
#include "llpreviewtexture.h"
|
||||
#include "llpreviewgesture.h"
|
||||
#include "llpreviewlandmark.h"
|
||||
|
||||
#include "llappviewer.h"
|
||||
|
||||
#include "lluictrlfactory.h"
|
||||
#include "llcombobox.h"
|
||||
#include "llnotificationsutil.h"
|
||||
|
||||
#include "llagent.h" // gAgent
|
||||
#include "llviewerwindow.h" // alertXml
|
||||
|
||||
|
||||
LLUUID LLLocalInventory::addItem(std::string name, int type, LLUUID asset_id, bool open_automatically)
|
||||
{
|
||||
LLUUID item_id = addItem(name, type, asset_id);
|
||||
if(open_automatically) open(item_id);
|
||||
return item_id;
|
||||
}
|
||||
|
||||
LLUUID LLLocalInventory::addItem(std::string name, int type, LLUUID asset_id)
|
||||
{
|
||||
LLUUID item_id;
|
||||
item_id.generate();
|
||||
LLPermissions* perms = new LLPermissions();
|
||||
perms->set(LLPermissions::DEFAULT);
|
||||
perms->setOwnerAndGroup(LLUUID::null, LLUUID::null, LLUUID::null, false);
|
||||
perms->setMaskBase(0);
|
||||
perms->setMaskEveryone(0);
|
||||
perms->setMaskGroup(0);
|
||||
perms->setMaskNext(0);
|
||||
perms->setMaskOwner(0);
|
||||
LLViewerInventoryItem* item = new LLViewerInventoryItem(
|
||||
item_id,
|
||||
gSystemFolderAssets,
|
||||
*perms,
|
||||
asset_id,
|
||||
(LLAssetType::EType)type,
|
||||
(LLInventoryType::EType)type,
|
||||
name,
|
||||
"",
|
||||
LLSaleInfo::DEFAULT,
|
||||
0,
|
||||
time_corrected());
|
||||
addItem(item);
|
||||
return item_id;
|
||||
}
|
||||
|
||||
void LLLocalInventory::addItem(LLViewerInventoryItem* item)
|
||||
{
|
||||
//gInventory.addPretendItem(item);
|
||||
LLInventoryModel::update_map_t update;
|
||||
++update[item->getParentUUID()];
|
||||
gInventory.accountForUpdate(update);
|
||||
gInventory.updateItem(item);
|
||||
gInventory.notifyObservers();
|
||||
}
|
||||
|
||||
void LLLocalInventory::open(LLUUID item_id)
|
||||
{
|
||||
LLViewerInventoryItem* item = gInventory.getItem(item_id);
|
||||
if(!item)
|
||||
{
|
||||
llwarns << "Trying to open non-existent item" << llendl;
|
||||
return;
|
||||
}
|
||||
|
||||
LLAssetType::EType type = item->getType();
|
||||
|
||||
if(type == LLAssetType::AT_SOUND)
|
||||
{
|
||||
S32 left, top;
|
||||
gFloaterView->getNewFloaterPosition(&left, &top);
|
||||
LLRect rect = gSavedSettings.getRect("PreviewSoundRect");
|
||||
rect.translate(left - rect.mLeft, top - rect.mTop);
|
||||
LLPreviewSound* floaterp;
|
||||
floaterp = new LLPreviewSound("Preview sound",
|
||||
rect,
|
||||
"",
|
||||
item_id);
|
||||
floaterp->setFocus(TRUE);
|
||||
gFloaterView->adjustToFitScreen(floaterp, FALSE);
|
||||
}
|
||||
else if(type == LLAssetType::AT_ANIMATION)
|
||||
{
|
||||
S32 left, top;
|
||||
gFloaterView->getNewFloaterPosition(&left, &top);
|
||||
LLRect rect = gSavedSettings.getRect("PreviewAnimRect");
|
||||
rect.translate(left - rect.mLeft, top - rect.mTop);
|
||||
LLPreviewAnim* floaterp;
|
||||
floaterp = new LLPreviewAnim("Preview anim",
|
||||
rect,
|
||||
"",
|
||||
item_id,
|
||||
LLPreviewAnim::NONE);
|
||||
floaterp->setFocus(TRUE);
|
||||
gFloaterView->adjustToFitScreen(floaterp, FALSE);
|
||||
}
|
||||
else if(type == LLAssetType::AT_TEXTURE)
|
||||
{
|
||||
S32 left, top;
|
||||
gFloaterView->getNewFloaterPosition(&left, &top);
|
||||
LLRect rect = gSavedSettings.getRect("PreviewTextureRect");
|
||||
rect.translate( left - rect.mLeft, top - rect.mTop );
|
||||
|
||||
LLPreviewTexture* preview;
|
||||
preview = new LLPreviewTexture("preview texture",
|
||||
rect,
|
||||
"Preview texture",
|
||||
item_id,
|
||||
LLUUID::null,
|
||||
FALSE);
|
||||
//preview->setSourceID(source_id);
|
||||
preview->setFocus(TRUE);
|
||||
|
||||
gFloaterView->adjustToFitScreen(preview, FALSE);
|
||||
}
|
||||
else if(type == LLAssetType::AT_GESTURE)
|
||||
{
|
||||
// If only the others were like this
|
||||
LLPreviewGesture::show("preview gesture", item_id, LLUUID::null, TRUE);
|
||||
}
|
||||
else if(type == LLAssetType::AT_LANDMARK)
|
||||
{
|
||||
S32 left, top;
|
||||
gFloaterView->getNewFloaterPosition(&left, &top);
|
||||
LLRect rect = gSavedSettings.getRect("PreviewLandmarkRect");
|
||||
rect.translate( left - rect.mLeft, top - rect.mTop );
|
||||
|
||||
LLPreviewLandmark* preview;
|
||||
preview = new LLPreviewLandmark("preview landmark",
|
||||
rect,
|
||||
"Preview landmark",
|
||||
item_id);
|
||||
preview->setFocus(TRUE);
|
||||
|
||||
gFloaterView->adjustToFitScreen(preview, FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
llwarns << "Dunno how to open type " << type << llendl;
|
||||
}
|
||||
}
|
||||
|
||||
//static
|
||||
void LLLocalInventory::loadInvCache(std::string filename)
|
||||
{
|
||||
std::string extension = gDirUtilp->getExtension(filename);
|
||||
std::string inv_filename = filename;
|
||||
if(extension == "gz")
|
||||
{
|
||||
LLUUID random;
|
||||
random.generate();
|
||||
inv_filename = filename.substr(0, filename.length() - 3) + "." + random.asString();
|
||||
|
||||
if(!gunzip_file(filename, inv_filename))
|
||||
{
|
||||
// failure... message?
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
LLInventoryModel::cat_array_t cats;
|
||||
LLInventoryModel::item_array_t items;
|
||||
bool is_cache_obsolete = false;
|
||||
if(LLInventoryModel::loadFromFile(inv_filename, cats, items, is_cache_obsolete))
|
||||
{
|
||||
// create a container category for everything
|
||||
LLViewerInventoryCategory* container = new LLViewerInventoryCategory(gAgent.getID());
|
||||
container->rename(gDirUtilp->getBaseFileName(filename, false));
|
||||
LLUUID container_id;
|
||||
container_id.generate();
|
||||
container->setUUID(container_id);
|
||||
container->setParent(gSystemFolderRoot);
|
||||
container->setPreferredType(LLFolderType::FT_NONE);
|
||||
LLInventoryModel::update_map_t container_update;
|
||||
++container_update[container->getParentUUID()];
|
||||
gInventory.accountForUpdate(container_update);
|
||||
gInventory.updateCategory(container);
|
||||
gInventory.notifyObservers();
|
||||
|
||||
LLViewerInventoryCategory* orphaned_items = new LLViewerInventoryCategory(gAgent.getID());
|
||||
orphaned_items->rename("Orphaned Items");
|
||||
LLUUID orphaned_items_id;
|
||||
|
||||
orphaned_items_id.generate();
|
||||
orphaned_items->setUUID(orphaned_items_id);
|
||||
orphaned_items->setParent(container_id);
|
||||
orphaned_items->setPreferredType(LLFolderType::FT_NONE);
|
||||
|
||||
LLInventoryModel::update_map_t orphaned_items_update;
|
||||
++orphaned_items_update[orphaned_items->getParentUUID()];
|
||||
gInventory.accountForUpdate(orphaned_items_update);
|
||||
gInventory.updateCategory(orphaned_items);
|
||||
gInventory.notifyObservers();
|
||||
|
||||
//conflict handling
|
||||
std::map<LLUUID,LLUUID> conflicting_cats;
|
||||
int dropped_cats = 0;
|
||||
int dropped_items = 0;
|
||||
|
||||
// Add all categories
|
||||
LLInventoryModel::cat_array_t::iterator cat_iter = cats.begin();
|
||||
LLInventoryModel::cat_array_t::iterator cat_end = cats.end();
|
||||
for(; cat_iter != cat_end; ++cat_iter)
|
||||
{
|
||||
// Conditionally change its parent
|
||||
// Note: Should I search for missing parent id's?
|
||||
|
||||
//if the parent is null, it goes in the very root of the tree!
|
||||
if((*cat_iter)->getParentUUID().isNull())
|
||||
{
|
||||
(*cat_iter)->setParent(container_id);
|
||||
}
|
||||
// If the parent exists and outside of pretend inventory, generate a new uuid
|
||||
else if(gInventory.getCategory((*cat_iter)->getParentUUID()))
|
||||
{
|
||||
if(!gInventory.isObjectDescendentOf((*cat_iter)->getParentUUID(), gSystemFolderRoot, TRUE))
|
||||
{
|
||||
std::map<LLUUID,LLUUID>::iterator itr = conflicting_cats.find((*cat_iter)->getParentUUID());
|
||||
if(itr == conflicting_cats.end())
|
||||
{
|
||||
dropped_cats++;
|
||||
continue;
|
||||
}
|
||||
(*cat_iter)->setParent(itr->second);
|
||||
}
|
||||
} else {
|
||||
//well balls, this is orphaned.
|
||||
(*cat_iter)->setParent(orphaned_items_id);
|
||||
}
|
||||
// If this category already exists, generate a new uuid
|
||||
if(gInventory.getCategory((*cat_iter)->getUUID()))
|
||||
{
|
||||
LLUUID cat_random;
|
||||
cat_random.generate();
|
||||
conflicting_cats[(*cat_iter)->getUUID()] = cat_random;
|
||||
(*cat_iter)->setUUID(cat_random);
|
||||
}
|
||||
|
||||
LLInventoryModel::update_map_t update;
|
||||
++update[(*cat_iter)->getParentUUID()];
|
||||
gInventory.accountForUpdate(update);
|
||||
gInventory.updateCategory(*cat_iter);
|
||||
gInventory.notifyObservers();
|
||||
}
|
||||
|
||||
// Add all items
|
||||
LLInventoryModel::item_array_t::iterator item_iter = items.begin();
|
||||
LLInventoryModel::item_array_t::iterator item_end = items.end();
|
||||
for(; item_iter != item_end; ++item_iter)
|
||||
{
|
||||
// Conditionally change its parent
|
||||
// Note: Should I search for missing parent id's?
|
||||
|
||||
//if the parent is null, it goes in the very root of the tree!
|
||||
if((*item_iter)->getParentUUID().isNull())
|
||||
{
|
||||
(*item_iter)->setParent(container_id);
|
||||
}
|
||||
|
||||
// If the parent exists and outside of pretend inventory, generate a new uuid
|
||||
if(gInventory.getCategory((*item_iter)->getParentUUID()))
|
||||
{
|
||||
if(!gInventory.isObjectDescendentOf((*item_iter)->getParentUUID(), gSystemFolderRoot, TRUE))
|
||||
{
|
||||
std::map<LLUUID,LLUUID>::iterator itr = conflicting_cats.find((*item_iter)->getParentUUID());
|
||||
if(itr == conflicting_cats.end())
|
||||
{
|
||||
dropped_items++;
|
||||
continue;
|
||||
}
|
||||
(*item_iter)->setParent(itr->second);
|
||||
}
|
||||
} else {
|
||||
//well balls, this is orphaned.
|
||||
(*item_iter)->setParent(orphaned_items_id);
|
||||
}
|
||||
// Avoid conflicts with real inventory...
|
||||
// If this item id already exists, generate a new uuid
|
||||
if(gInventory.getItem((*item_iter)->getUUID()))
|
||||
{
|
||||
LLUUID item_random;
|
||||
item_random.generate();
|
||||
(*item_iter)->setUUID(item_random);
|
||||
}
|
||||
|
||||
LLInventoryModel::update_map_t update;
|
||||
++update[(*item_iter)->getParentUUID()];
|
||||
gInventory.accountForUpdate(update);
|
||||
gInventory.updateItem(*item_iter);
|
||||
gInventory.notifyObservers();
|
||||
}
|
||||
|
||||
// Quality time
|
||||
if(dropped_items || dropped_cats)
|
||||
{
|
||||
std::ostringstream message;
|
||||
message << "Some items were ignored due to conflicts:\n\n";
|
||||
if(dropped_cats) message << dropped_cats << " folders\n";
|
||||
if(dropped_items) message << dropped_items << " items\n";
|
||||
|
||||
LLSD args;
|
||||
args["ERROR_MESSAGE"] = message.str();
|
||||
LLNotificationsUtil::add("ErrorMessage", args);
|
||||
}
|
||||
conflicting_cats.clear();// srsly dont think this is need but w/e :D
|
||||
}
|
||||
|
||||
// remove temporary unzipped file
|
||||
if(extension == "gz")
|
||||
{
|
||||
LLFile::remove(inv_filename);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//static
|
||||
void LLLocalInventory::saveInvCache(std::string filename, LLFolderView* folder)
|
||||
{
|
||||
LLInventoryModel* model = &gInventory;
|
||||
std::set<LLUUID> selected_items = folder->getSelectionList();
|
||||
if(selected_items.size() < 1)
|
||||
{
|
||||
// No items selected? Wtfboom
|
||||
return;
|
||||
}
|
||||
LLInventoryModel::cat_array_t cats;
|
||||
LLInventoryModel::item_array_t items;
|
||||
// Make complete lists of child categories and items
|
||||
std::set<LLUUID>::iterator sel_iter = selected_items.begin();
|
||||
std::set<LLUUID>::iterator sel_end = selected_items.end();
|
||||
for( ; sel_iter != sel_end; ++sel_iter)
|
||||
{
|
||||
LLInventoryCategory* cat = model->getCategory(*sel_iter);
|
||||
if(cat)
|
||||
{
|
||||
climb(cat, cats, items);
|
||||
}
|
||||
}
|
||||
// And what about items inside a folder that wasn't selected?
|
||||
// I guess I will just add selected items, so long as they aren't already added
|
||||
for(sel_iter = selected_items.begin(); sel_iter != sel_end; ++sel_iter)
|
||||
{
|
||||
LLInventoryItem* item = model->getItem(*sel_iter);
|
||||
if(item)
|
||||
{
|
||||
if(std::find(items.begin(), items.end(), item) == items.end())
|
||||
{
|
||||
items.push_back(LLPointer<LLViewerInventoryItem>((LLViewerInventoryItem*)item));
|
||||
LLInventoryCategory* parent = model->getCategory(item->getParentUUID());
|
||||
if(std::find(cats.begin(), cats.end(), parent) == cats.end())
|
||||
{
|
||||
cats.push_back(LLPointer<LLViewerInventoryCategory>((LLViewerInventoryCategory*)parent));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
LLInventoryModel::saveToFile(filename, cats, items);
|
||||
}
|
||||
|
||||
// static
|
||||
void LLLocalInventory::climb(LLInventoryCategory* cat,
|
||||
LLInventoryModel::cat_array_t& cats,
|
||||
LLInventoryModel::item_array_t& items)
|
||||
{
|
||||
LLInventoryModel* model = &gInventory;
|
||||
|
||||
// Add this category
|
||||
cats.push_back(LLPointer<LLViewerInventoryCategory>((LLViewerInventoryCategory*)cat));
|
||||
|
||||
LLInventoryModel::cat_array_t *direct_cats;
|
||||
LLInventoryModel::item_array_t *direct_items;
|
||||
model->getDirectDescendentsOf(cat->getUUID(), direct_cats, direct_items);
|
||||
|
||||
// Add items
|
||||
LLInventoryModel::item_array_t::iterator item_iter = direct_items->begin();
|
||||
LLInventoryModel::item_array_t::iterator item_end = direct_items->end();
|
||||
for( ; item_iter != item_end; ++item_iter)
|
||||
{
|
||||
items.push_back(*item_iter);
|
||||
}
|
||||
|
||||
// Do subcategories
|
||||
LLInventoryModel::cat_array_t::iterator cat_iter = direct_cats->begin();
|
||||
LLInventoryModel::cat_array_t::iterator cat_end = direct_cats->end();
|
||||
for( ; cat_iter != cat_end; ++cat_iter)
|
||||
{
|
||||
climb(*cat_iter, cats, items);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
LLUUID LLFloaterNewLocalInventory::sLastCreatorId = LLUUID::null;
|
||||
|
||||
LLFloaterNewLocalInventory::LLFloaterNewLocalInventory()
|
||||
: LLFloater()
|
||||
{
|
||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_new_local_inventory.xml");
|
||||
}
|
||||
|
||||
LLFloaterNewLocalInventory::~LLFloaterNewLocalInventory()
|
||||
{
|
||||
}
|
||||
|
||||
BOOL LLFloaterNewLocalInventory::postBuild(void)
|
||||
{
|
||||
// Fill in default values
|
||||
|
||||
getChild<LLLineEditor>("creator_id_line")->setText(std::string("00000000-0000-0000-0000-000000000000"));
|
||||
getChild<LLLineEditor>("owner_id_line")->setText(gAgent.getID().asString());
|
||||
getChild<LLLineEditor>("asset_id_line")->setText(std::string("00000000-0000-0000-0000-000000000000"));
|
||||
getChild<LLLineEditor>("name_line")->setText(std::string(""));
|
||||
getChild<LLLineEditor>("desc_line")->setText(std::string(""));
|
||||
|
||||
// Set up callbacks
|
||||
|
||||
childSetAction("ok_btn", onClickOK, this);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// static
|
||||
void LLFloaterNewLocalInventory::onClickOK(void* user_data)
|
||||
{
|
||||
LLFloaterNewLocalInventory* floater = (LLFloaterNewLocalInventory*)user_data;
|
||||
|
||||
LLUUID item_id;
|
||||
item_id.generate();
|
||||
|
||||
std::string name = floater->getChild<LLLineEditor>("name_line")->getText();
|
||||
std::string desc = floater->getChild<LLLineEditor>("desc_line")->getText();
|
||||
LLUUID asset_id = LLUUID(floater->getChild<LLLineEditor>("asset_id_line")->getText());
|
||||
LLUUID creator_id = LLUUID(floater->getChild<LLLineEditor>("creator_id_line")->getText());
|
||||
LLUUID owner_id = LLUUID(floater->getChild<LLLineEditor>("owner_id_line")->getText());
|
||||
|
||||
LLAssetType::EType type = LLAssetType::lookup(floater->getChild<LLComboBox>("type_combo")->getValue().asString());
|
||||
LLInventoryType::EType inv_type = LLInventoryType::IT_NONE;
|
||||
switch(type)
|
||||
{
|
||||
case LLAssetType::AT_TEXTURE:
|
||||
case LLAssetType::AT_TEXTURE_TGA:
|
||||
case LLAssetType::AT_IMAGE_TGA:
|
||||
case LLAssetType::AT_IMAGE_JPEG:
|
||||
inv_type = LLInventoryType::IT_TEXTURE;
|
||||
break;
|
||||
case LLAssetType::AT_SOUND:
|
||||
case LLAssetType::AT_SOUND_WAV:
|
||||
inv_type = LLInventoryType::IT_SOUND;
|
||||
break;
|
||||
case LLAssetType::AT_CALLINGCARD:
|
||||
inv_type = LLInventoryType::IT_CALLINGCARD;
|
||||
break;
|
||||
case LLAssetType::AT_LANDMARK:
|
||||
inv_type = LLInventoryType::IT_LANDMARK;
|
||||
break;
|
||||
case LLAssetType::AT_SCRIPT:
|
||||
inv_type = LLInventoryType::IT_LSL;
|
||||
break;
|
||||
case LLAssetType::AT_CLOTHING:
|
||||
inv_type = LLInventoryType::IT_WEARABLE;
|
||||
break;
|
||||
case LLAssetType::AT_OBJECT:
|
||||
inv_type = LLInventoryType::IT_OBJECT;
|
||||
break;
|
||||
case LLAssetType::AT_NOTECARD:
|
||||
inv_type = LLInventoryType::IT_NOTECARD;
|
||||
break;
|
||||
case LLAssetType::AT_CATEGORY:
|
||||
inv_type = LLInventoryType::IT_CATEGORY;
|
||||
break;
|
||||
//No longer asset types.
|
||||
/*case LLFolderType::FT_ROOT_CATEGORY:
|
||||
case LLFolderType::FT_TRASH:
|
||||
case LLFolderType::FT_SNAPSHOT_CATEGORY:
|
||||
case LLFolderType::FT_LOST_AND_FOUND:
|
||||
inv_type = LLInventoryType::IT_ROOT_CATEGORY;
|
||||
break;*/
|
||||
case LLAssetType::AT_LSL_TEXT:
|
||||
case LLAssetType::AT_LSL_BYTECODE:
|
||||
inv_type = LLInventoryType::IT_LSL;
|
||||
break;
|
||||
case LLAssetType::AT_BODYPART:
|
||||
inv_type = LLInventoryType::IT_WEARABLE;
|
||||
break;
|
||||
case LLAssetType::AT_ANIMATION:
|
||||
inv_type = LLInventoryType::IT_ANIMATION;
|
||||
break;
|
||||
case LLAssetType::AT_GESTURE:
|
||||
inv_type = LLInventoryType::IT_GESTURE;
|
||||
break;
|
||||
//case LLAssetType::AT_SIMSTATE:
|
||||
default:
|
||||
//inv_type = LLInventoryType::IT_CALLINGCARD;
|
||||
break;
|
||||
}
|
||||
|
||||
if(inv_type == LLInventoryType::IT_NONE)
|
||||
return;
|
||||
|
||||
LLPermissions* perms = new LLPermissions();
|
||||
perms->init(creator_id, owner_id, LLUUID::null, LLUUID::null);
|
||||
|
||||
LLViewerInventoryItem* item = new LLViewerInventoryItem(
|
||||
item_id,
|
||||
gSystemFolderRoot,
|
||||
*perms,
|
||||
asset_id,
|
||||
type,
|
||||
inv_type,
|
||||
name,
|
||||
desc,
|
||||
LLSaleInfo::DEFAULT,
|
||||
0,
|
||||
0);
|
||||
|
||||
LLLocalInventory::addItem(item);
|
||||
if(floater->childGetValue("chk_open"))
|
||||
{
|
||||
LLLocalInventory::open(item_id);
|
||||
}
|
||||
|
||||
LLFloaterNewLocalInventory::sLastCreatorId = creator_id;
|
||||
floater->close();
|
||||
}
|
||||
|
||||
|
||||
|
||||
// </edit>
|
||||
@@ -1,45 +0,0 @@
|
||||
// <edit>
|
||||
#ifndef LL_LLLOCALINVENTORY_H
|
||||
#define LL_LLLOCALINVENTORY_H
|
||||
|
||||
#include "llviewerinventory.h"
|
||||
|
||||
#include "llfloater.h"
|
||||
|
||||
#include "llfolderview.h"
|
||||
#include "llinventorymodel.h" // cat_array_t, item_array_t
|
||||
|
||||
class LLLocalInventory
|
||||
{
|
||||
public:
|
||||
static LLUUID addItem(std::string name, int type, LLUUID asset_id, bool open);
|
||||
static LLUUID addItem(std::string name, int type, LLUUID asset_id);
|
||||
static void addItem(LLViewerInventoryItem* item);
|
||||
static void open(LLUUID item_id);
|
||||
static void loadInvCache(std::string filename);
|
||||
static void saveInvCache(std::string filename, LLFolderView* folder);
|
||||
static void climb(LLInventoryCategory* cat,
|
||||
LLInventoryModel::cat_array_t& cats,
|
||||
LLInventoryModel::item_array_t& items);
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
class LLFloaterNewLocalInventory
|
||||
: public LLFloater
|
||||
{
|
||||
public:
|
||||
LLFloaterNewLocalInventory();
|
||||
BOOL postBuild(void);
|
||||
|
||||
static void onClickOK(void* user_data);
|
||||
static LLUUID sLastCreatorId;
|
||||
|
||||
private:
|
||||
virtual ~LLFloaterNewLocalInventory();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
// </edit>
|
||||
@@ -2193,41 +2193,6 @@ bool idle_startup()
|
||||
}
|
||||
display_startup();
|
||||
|
||||
// <edit> testing adding a local inventory folder...
|
||||
if (gSavedSettings.getBOOL("AscentUseSystemFolder"))
|
||||
{
|
||||
LLViewerInventoryCategory* system_folder = new LLViewerInventoryCategory(gAgent.getID());
|
||||
system_folder->rename(std::string("System Inventory"));
|
||||
LLUUID system_folder_id = LLUUID("00000000-0000-0000-0000-000000000001");//"FFFFFFFF-0000-F113-7357-000000000001");
|
||||
system_folder->setUUID(system_folder_id);
|
||||
gSystemFolderRoot = system_folder_id;
|
||||
system_folder->setParent(LLUUID::null);
|
||||
system_folder->setPreferredType(LLFolderType::FT_NONE);
|
||||
gInventory.addCategory(system_folder);
|
||||
|
||||
LLViewerInventoryCategory* settings_folder = new LLViewerInventoryCategory(gAgent.getID());
|
||||
settings_folder->rename(std::string("Settings"));
|
||||
LLUUID settings_folder_id;
|
||||
settings_folder_id.generate();
|
||||
settings_folder->setUUID(settings_folder_id);
|
||||
gSystemFolderSettings = settings_folder_id;
|
||||
settings_folder->setParent(gSystemFolderRoot);
|
||||
settings_folder->setPreferredType(LLFolderType::FT_NONE);
|
||||
gInventory.addCategory(settings_folder);
|
||||
|
||||
LLViewerInventoryCategory* assets_folder = new LLViewerInventoryCategory(gAgent.getID());
|
||||
assets_folder->rename(std::string("Assets"));
|
||||
LLUUID assets_folder_id;
|
||||
assets_folder_id.generate();
|
||||
assets_folder->setUUID(assets_folder_id);
|
||||
gSystemFolderAssets = assets_folder_id;
|
||||
assets_folder->setParent(gSystemFolderRoot);
|
||||
assets_folder->setPreferredType(LLFolderType::FT_NONE);
|
||||
gInventory.addCategory(assets_folder);
|
||||
}
|
||||
display_startup();
|
||||
// </edit>
|
||||
|
||||
LLSD buddy_list = response["buddy-list"];
|
||||
if(buddy_list.isDefined())
|
||||
{
|
||||
|
||||
@@ -71,7 +71,6 @@
|
||||
#include "lltrans.h"
|
||||
// <edit>
|
||||
#include "llmenugl.h"
|
||||
#include "lllocalinventory.h"
|
||||
// </edit>
|
||||
|
||||
// tag: vaa emerald local_asset_browser [begin]
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
<panel border="true" left="1" bottom="-408" height="408" width="500" label="General" name="User Interface">
|
||||
<check_box left="10" bottom_delta="-25" control_name="DoubleClickTeleport" follows="top" initial_value="false"
|
||||
label="Enable teleporting via double-click in-world" tool_tip="Double-clicking on an object/person will teleport you to that location." name="double_click_teleport_check"/>
|
||||
<check_box left="20" bottom_delta="-18" control_name="OptionRotateCamAfterLocalTP" follows="top" initial_value="false"
|
||||
label="Reset camera after teleporting" tool_tip="Centers the camera behind you after a local teleport." name="center_after_teleport_check"/>
|
||||
<check_box left="20" bottom_delta="-18" control_name="OptionRotateCamAfterLocalTP" follows="top" initial_value="false"
|
||||
label="Reset camera after teleporting" tool_tip="Centers the camera behind you after a local teleport." name="center_after_teleport_check"/>
|
||||
<check_box bottom_delta="-18" control_name="OptionOffsetTPByAgentHeight" follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
|
||||
label="Offset TP target by half agent height" tool_tip="Tries to aim the TP so that your feet land at the point you're aiming for." name="offset_teleport_check"/>
|
||||
<check_box left="10" follows="top" bottom_delta="-18" control_name="ClearBeaconAfterTeleport" name="clear_beacon_after_tp" label="Clear red destination beacon after teleporting"/>
|
||||
@@ -28,10 +28,6 @@
|
||||
label="Enable Power User functionality" tool_tip="Adds features deemed too dangerous for normal use. These features can wreak havoc or do bad things if misused - Mostly to yourself or your belongings. If you're sure, activate the checkbox below as well." name="power_user_check"/>
|
||||
<check_box bottom_delta="-18" enabled="true" follows="top" left="20" initial_value="true"
|
||||
label="Confirm Power User functionality" tool_tip="Confirms Power User activation. Turn this on at your own risk, and use any features it enables responsibly. Singularity devs won't replace anything you break. We recommend having a backup copy of anything to be victim to these powers. Unlike most checkboxes, you must click Apply or OK before this will activate." name="power_user_confirm_check"/>
|
||||
<check_box bottom_delta="-18" control_name="AscentUseSystemFolder" follows="top" left="10" initial_value="true"
|
||||
label="Enable Ascent System Inventory (Requires Restart)" tool_tip="Creates a new folder in the inventory for storing settings files and non-permanent assets." name="system_folder_check"/>
|
||||
<check_box bottom_delta="-18" control_name="AscentSystemTemporary" follows="top" left="20" initial_value="false"
|
||||
label="Temporary uploads go in the System Asset folder." tool_tip="Puts temporary uploads in the Asset folder which separates them from actual uploads, making them easier to find." name="temp_in_system_check"/>
|
||||
<check_box bottom_delta="-18" control_name="FetchInventoryOnLogin" follows="top" left="10" initial_value="true"
|
||||
label="Automatically fetch the inventory in the background after login" tool_tip="Inventory will preload when you log in, so you don't have to wait for it to load when doing an initial search." name="fetch_inventory_on_login_check"/>
|
||||
<check_box bottom_delta="-18" control_name="WindEnabled" follows="left|top" initial_value="false" label="Enable Wind Effects" name="enable_wind"/>
|
||||
@@ -117,9 +113,9 @@
|
||||
<combo_item name="Rubber" value="Rubber">Rubber</combo_item>
|
||||
</combo_box>
|
||||
<text bottom="-19" left_delta="85" name="text_box7" halign="center" width="115">Next Owner Perms</text>
|
||||
<check_box follows="top" height="16" initial_value="false" label="Copy permission" tool_tip="Next owner can make copies of creations" name="next_owner_copy" control_name="NextOwnerCopy"/>
|
||||
<check_box follows="top" height="16" initial_value="false" label="Modify permission" tool_tip="Next owner can edit creations" name="next_owner_modify" control_name="NextOwnerModify"/>
|
||||
<check_box follows="top" height="16" initial_value="true" label="Transfer permission" tool_tip="Next owner can give(or sell) creations" name="next_owner_transfer" control_name="NextOwnerTransfer"/>
|
||||
<check_box follows="top" height="16" initial_value="false" label="Copy permission" tool_tip="Next owner can make copies of creations" name="next_owner_copy" control_name="NextOwnerCopy"/>
|
||||
<check_box follows="top" height="16" initial_value="false" label="Modify permission" tool_tip="Next owner can edit creations" name="next_owner_modify" control_name="NextOwnerModify"/>
|
||||
<check_box follows="top" height="16" initial_value="true" label="Transfer permission" tool_tip="Next owner can give(or sell) creations" name="next_owner_transfer" control_name="NextOwnerTransfer"/>
|
||||
<check_box bottom="-131" left="5" follows="top" height="16" label="Phantom" name="EmPhantomToggle" control_name="EmeraldBuildPrefs_Phantom"/>
|
||||
<check_box follows="top" height="16" label="Physical" name="EmPhysicalToggle" control_name="EmeraldBuildPrefs_Physical"/>
|
||||
<check_box follows="top" height="16" label="Temporary" name="EmTemporaryToggle" control_name="EmeraldBuildPrefs_Temporary"/>
|
||||
@@ -136,7 +132,7 @@
|
||||
<combo_item name="High" value="High">High</combo_item>
|
||||
</combo_box>
|
||||
<check_box name="EmeraldBuildPrefsEmbedItem" left="5" bottom_delta="-20" follows="top" initial_value="false" label="Put an item into new objects" control_name="EmeraldBuildPrefs_EmbedItem"/>
|
||||
<drop_target control_name="EmeraldBuildPrefs_Item" bottom_delta="-5" left="10" height="15" name="build_item_add_disp_rect" width="270"/>
|
||||
<drop_target control_name="EmeraldBuildPrefs_Item" bottom_delta="-5" left="10" height="15" name="build_item_add_disp_rect" width="270"/>
|
||||
<check_box bottom_delta="4" follows="top" left_delta="274" label="Highlight selected prims" name="EmBuildPrefsRenderHighlight_toggle" control_name="RenderHighlightSelections"/>
|
||||
<check_box bottom_delta="-20" follows="top" initial_value="false" label="Axis arrow on root prim position" tool_tip="Default behaviour is to show the axis on the center of mass of a linkset. If enabled, the axis will be shown on the root prim of the linkset instead." name="EmBuildPrefsActualRoot_toggle" control_name="AscentBuildPrefs_ActualRoot"/>
|
||||
</panel>
|
||||
|
||||
Reference in New Issue
Block a user