Fixed several compile errors with VS2005
This commit is contained in:
@@ -221,9 +221,9 @@ else (STANDALONE)
|
||||
)
|
||||
endif (STANDALONE)
|
||||
|
||||
if($ENV{OPENSIM_RULES} EQUAL 1)
|
||||
if(1 EQUAL 1)
|
||||
add_definitions(-DOPENSIM_RULES=1)
|
||||
endif($ENV{OPENSIM_RULES} EQUAL 1)
|
||||
endif(1 EQUAL 1)
|
||||
|
||||
if(SERVER)
|
||||
include_directories(${LIBS_PREBUILT_DIR}/include/havok)
|
||||
|
||||
@@ -1,64 +1,64 @@
|
||||
// <edit>
|
||||
#include "linden_common.h"
|
||||
#include "lldelayeduidelete.h"
|
||||
#define DELETE_DELAY 0.1f
|
||||
#define DELETES_PER_DELAY 512
|
||||
std::list<LLDeleteJob*> LLDeleteScheduler::sJobs;
|
||||
LLDeleteScheduler::LLDeleteScheduler() : LLEventTimer(DELETE_DELAY)
|
||||
{
|
||||
}
|
||||
void LLDeleteScheduler::addViewDeleteJob(std::list<LLView*> views)
|
||||
{
|
||||
if(!views.empty())
|
||||
{
|
||||
LLViewDeleteJob* job = new LLViewDeleteJob(views);
|
||||
sJobs.push_back(job);
|
||||
}
|
||||
}
|
||||
BOOL LLDeleteScheduler::tick() // IMPORTANT: never return TRUE
|
||||
{
|
||||
if(!sJobs.empty())
|
||||
{
|
||||
U32 completed = 0;
|
||||
do
|
||||
{
|
||||
LLDeleteJob* job = sJobs.front();
|
||||
if(job->work(completed))
|
||||
{
|
||||
delete job;
|
||||
sJobs.pop_front();
|
||||
}
|
||||
} while((completed < DELETES_PER_DELAY) && !sJobs.empty());
|
||||
}
|
||||
return FALSE; // EVER
|
||||
}
|
||||
BOOL LLDeleteJob::work(U32& completed)
|
||||
{
|
||||
llwarns << "THIS IS SPOSED TO BE OVERRIDDEN" << llendl;
|
||||
return TRUE;
|
||||
}
|
||||
LLViewDeleteJob::LLViewDeleteJob(std::list<LLView*> views)
|
||||
: mList(views)
|
||||
{
|
||||
}
|
||||
LLViewDeleteJob::~LLViewDeleteJob()
|
||||
{
|
||||
}
|
||||
BOOL LLViewDeleteJob::work(U32& completed)
|
||||
{
|
||||
do
|
||||
{
|
||||
if(!mList.empty())
|
||||
{
|
||||
LLView* view = mList.front();
|
||||
delete view;
|
||||
mList.pop_front();
|
||||
}
|
||||
else
|
||||
{
|
||||
return TRUE; // job done
|
||||
}
|
||||
} while(++completed < DELETES_PER_DELAY);
|
||||
return FALSE;
|
||||
}
|
||||
// </edit>
|
||||
// <edit>
|
||||
#include "linden_common.h"
|
||||
#include "lldelayeduidelete.h"
|
||||
#define DELETE_DELAY 0.1f
|
||||
#define DELETES_PER_DELAY 512
|
||||
std::list<LLDeleteJob*> LLDeleteScheduler::sJobs;
|
||||
LLDeleteScheduler::LLDeleteScheduler() : LLEventTimer(DELETE_DELAY)
|
||||
{
|
||||
}
|
||||
void LLDeleteScheduler::addViewDeleteJob(std::list<LLView*> views)
|
||||
{
|
||||
if(!views.empty())
|
||||
{
|
||||
LLViewDeleteJob* job = new LLViewDeleteJob(views);
|
||||
sJobs.push_back(job);
|
||||
}
|
||||
}
|
||||
BOOL LLDeleteScheduler::tick() // IMPORTANT: never return TRUE
|
||||
{
|
||||
if(!sJobs.empty())
|
||||
{
|
||||
U32 completed = 0;
|
||||
do
|
||||
{
|
||||
LLDeleteJob* job = sJobs.front();
|
||||
if(job->work(completed))
|
||||
{
|
||||
delete job;
|
||||
sJobs.pop_front();
|
||||
}
|
||||
} while((completed < DELETES_PER_DELAY) && !sJobs.empty());
|
||||
}
|
||||
return FALSE; // EVER
|
||||
}
|
||||
BOOL LLDeleteJob::work(U32& completed)
|
||||
{
|
||||
llwarns << "THIS IS SPOSED TO BE OVERRIDDEN" << llendl;
|
||||
return TRUE;
|
||||
}
|
||||
LLViewDeleteJob::LLViewDeleteJob(std::list<LLView*> views)
|
||||
: mList(views)
|
||||
{
|
||||
}
|
||||
LLViewDeleteJob::~LLViewDeleteJob()
|
||||
{
|
||||
}
|
||||
BOOL LLViewDeleteJob::work(U32& completed)
|
||||
{
|
||||
do
|
||||
{
|
||||
if(!mList.empty())
|
||||
{
|
||||
LLView* view = mList.front();
|
||||
delete view;
|
||||
mList.pop_front();
|
||||
}
|
||||
else
|
||||
{
|
||||
return TRUE; // job done
|
||||
}
|
||||
} while(++completed < DELETES_PER_DELAY);
|
||||
return FALSE;
|
||||
}
|
||||
// </edit>
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
// <edit>
|
||||
#ifndef LL_LLDELAYEDUIDELETE_H
|
||||
#define LL_LLDELAYEDUIDELETE_H
|
||||
#include "lltimer.h"
|
||||
#include "llview.h"
|
||||
class LLDeleteJob
|
||||
{
|
||||
public:
|
||||
virtual BOOL work(U32& completed);
|
||||
};
|
||||
class LLViewDeleteJob : public LLDeleteJob
|
||||
{
|
||||
public:
|
||||
LLViewDeleteJob(std::list<LLView*> views);
|
||||
virtual ~LLViewDeleteJob();
|
||||
virtual BOOL work(U32& completed);
|
||||
private:
|
||||
std::list<LLView*> mList;
|
||||
};
|
||||
class LLDeleteScheduler : public LLEventTimer
|
||||
{
|
||||
public:
|
||||
LLDeleteScheduler();
|
||||
void addViewDeleteJob(std::list<LLView*> views);
|
||||
BOOL tick();
|
||||
private:
|
||||
static std::list<LLDeleteJob*> sJobs;
|
||||
};
|
||||
static LLDeleteScheduler* gDeleteScheduler;
|
||||
#endif
|
||||
// </edit>
|
||||
// <edit>
|
||||
#ifndef LL_LLDELAYEDUIDELETE_H
|
||||
#define LL_LLDELAYEDUIDELETE_H
|
||||
#include "lltimer.h"
|
||||
#include "llview.h"
|
||||
class LLDeleteJob
|
||||
{
|
||||
public:
|
||||
virtual BOOL work(U32& completed);
|
||||
};
|
||||
class LLViewDeleteJob : public LLDeleteJob
|
||||
{
|
||||
public:
|
||||
LLViewDeleteJob(std::list<LLView*> views);
|
||||
virtual ~LLViewDeleteJob();
|
||||
virtual BOOL work(U32& completed);
|
||||
private:
|
||||
std::list<LLView*> mList;
|
||||
};
|
||||
class LLDeleteScheduler : public LLEventTimer
|
||||
{
|
||||
public:
|
||||
LLDeleteScheduler();
|
||||
void addViewDeleteJob(std::list<LLView*> views);
|
||||
BOOL tick();
|
||||
private:
|
||||
static std::list<LLDeleteJob*> sJobs;
|
||||
};
|
||||
static LLDeleteScheduler* gDeleteScheduler;
|
||||
#endif
|
||||
// </edit>
|
||||
|
||||
@@ -95,10 +95,10 @@
|
||||
#include "lltexturefetch.h"
|
||||
#include "llimageworker.h"
|
||||
|
||||
// <edit>
|
||||
#include "lldelayeduidelete.h"
|
||||
#include "llbuildnewviewsscheduler.h"
|
||||
// </edit>
|
||||
// <edit>
|
||||
#include "lldelayeduidelete.h"
|
||||
#include "llbuildnewviewsscheduler.h"
|
||||
// </edit>
|
||||
// The files below handle dependencies from cleanup.
|
||||
#include "llkeyframemotion.h"
|
||||
#include "llworldmap.h"
|
||||
@@ -245,9 +245,9 @@ F32 gLogoutMaxTime = LOGOUT_REQUEST_TIME;
|
||||
|
||||
LLUUID gInventoryLibraryOwner;
|
||||
LLUUID gInventoryLibraryRoot;
|
||||
// <edit>
|
||||
LLUUID gLocalInventoryRoot;
|
||||
// </edit>
|
||||
// <edit>
|
||||
LLUUID gLocalInventoryRoot;
|
||||
// </edit>
|
||||
|
||||
BOOL gDisconnected = FALSE;
|
||||
|
||||
@@ -291,9 +291,9 @@ const std::string ERROR_MARKER_FILE_NAME("SecondLife.error_marker");
|
||||
const std::string LLERROR_MARKER_FILE_NAME("SecondLife.llerror_marker");
|
||||
const std::string LOGOUT_MARKER_FILE_NAME("SecondLife.logout_marker");
|
||||
static BOOL gDoDisconnect = FALSE;
|
||||
// <edit>
|
||||
//static BOOL gBusyDisconnect = FALSE;
|
||||
// </edit>
|
||||
// <edit>
|
||||
//static BOOL gBusyDisconnect = FALSE;
|
||||
// </edit>
|
||||
static std::string gLaunchFileOnQuit;
|
||||
|
||||
// Used on Win32 for other apps to identify our window (eg, win_setup)
|
||||
@@ -575,10 +575,10 @@ bool LLAppViewer::init()
|
||||
|
||||
initLogging();
|
||||
|
||||
// <edit>
|
||||
gDeleteScheduler = new LLDeleteScheduler();
|
||||
gBuildNewViewsScheduler = new LLBuildNewViewsScheduler();
|
||||
// </edit>
|
||||
// <edit>
|
||||
gDeleteScheduler = new LLDeleteScheduler();
|
||||
gBuildNewViewsScheduler = new LLBuildNewViewsScheduler();
|
||||
// </edit>
|
||||
//
|
||||
// OK to write stuff to logs now, we've now crash reported if necessary
|
||||
//
|
||||
@@ -594,19 +594,19 @@ bool LLAppViewer::init()
|
||||
writeSystemInfo();
|
||||
|
||||
// Build a string representing the current version number.
|
||||
// <edit> meh
|
||||
/*
|
||||
// </edit>
|
||||
// <edit> meh
|
||||
/*
|
||||
// </edit>
|
||||
gCurrentVersion = llformat("%s %d.%d.%d.%d",
|
||||
gSavedSettings.getString("VersionChannelName").c_str(),
|
||||
LL_VERSION_MAJOR,
|
||||
LL_VERSION_MINOR,
|
||||
LL_VERSION_PATCH,
|
||||
LL_VERSION_BUILD );
|
||||
// <edit>
|
||||
*/
|
||||
gCurrentVersion = gSavedSettings.getString("SpecifiedChannel");
|
||||
// </edit>
|
||||
// <edit>
|
||||
*/
|
||||
gCurrentVersion = gSavedSettings.getString("SpecifiedChannel");
|
||||
// </edit>
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
@@ -940,7 +940,7 @@ bool LLAppViewer::mainLoop()
|
||||
pauseMainloopTimeout(); // *TODO: Remove. Messages shouldn't be stalling for 20+ seconds!
|
||||
|
||||
LLFastTimer t3(LLFastTimer::FTM_IDLE);
|
||||
// <edit> bad_alloc!! </edit>
|
||||
// <edit> bad_alloc!! </edit>
|
||||
idle();
|
||||
|
||||
if (gAres != NULL && gAres->isInitialized())
|
||||
@@ -1223,11 +1223,11 @@ bool LLAppViewer::cleanup()
|
||||
// such that we can suck rectangle information out of
|
||||
// it.
|
||||
cleanupSavedSettings();
|
||||
llinfos << "Settings patched up" << llendflush;
|
||||
|
||||
// <edit> moving this to below.
|
||||
/*
|
||||
// </edit>
|
||||
llinfos << "Settings patched up" << llendflush;
|
||||
|
||||
// <edit> moving this to below.
|
||||
/*
|
||||
// </edit>
|
||||
// delete some of the files left around in the cache.
|
||||
removeCacheFiles("*.wav");
|
||||
removeCacheFiles("*.tmp");
|
||||
@@ -1236,9 +1236,9 @@ bool LLAppViewer::cleanup()
|
||||
removeCacheFiles("*.dsf");
|
||||
removeCacheFiles("*.bodypart");
|
||||
removeCacheFiles("*.clothing");
|
||||
// <edit>
|
||||
*/
|
||||
// </edit>
|
||||
// <edit>
|
||||
*/
|
||||
// </edit>
|
||||
|
||||
llinfos << "Cache files removed" << llendflush;
|
||||
|
||||
@@ -1367,18 +1367,18 @@ bool LLAppViewer::cleanup()
|
||||
}
|
||||
|
||||
removeMarkerFile(); // Any crashes from here on we'll just have to ignore
|
||||
// <edit> moved this stuff from above to make it conditional here...
|
||||
if(!anotherInstanceRunning())
|
||||
{
|
||||
removeCacheFiles("*.wav");
|
||||
removeCacheFiles("*.tmp");
|
||||
removeCacheFiles("*.lso");
|
||||
removeCacheFiles("*.out");
|
||||
removeCacheFiles("*.dsf");
|
||||
removeCacheFiles("*.bodypart");
|
||||
removeCacheFiles("*.clothing");
|
||||
}
|
||||
// </edit>
|
||||
// <edit> moved this stuff from above to make it conditional here...
|
||||
if(!anotherInstanceRunning())
|
||||
{
|
||||
removeCacheFiles("*.wav");
|
||||
removeCacheFiles("*.tmp");
|
||||
removeCacheFiles("*.lso");
|
||||
removeCacheFiles("*.out");
|
||||
removeCacheFiles("*.dsf");
|
||||
removeCacheFiles("*.bodypart");
|
||||
removeCacheFiles("*.clothing");
|
||||
}
|
||||
// </edit>
|
||||
|
||||
writeDebugInfo();
|
||||
|
||||
@@ -2188,9 +2188,9 @@ bool LLAppViewer::initWindow()
|
||||
|
||||
// always start windowed
|
||||
BOOL ignorePixelDepth = gSavedSettings.getBOOL("IgnorePixelDepth");
|
||||
// <edit>
|
||||
//gViewerWindow = new LLViewerWindow(gWindowTitle, "Second Life",
|
||||
gViewerWindow = new LLViewerWindow("Inertia", "Second Life",
|
||||
// <edit>
|
||||
//gViewerWindow = new LLViewerWindow(gWindowTitle, "Second Life",
|
||||
gViewerWindow = new LLViewerWindow("Inertia", "Second Life",
|
||||
// </edit>
|
||||
gSavedSettings.getS32("WindowX"), gSavedSettings.getS32("WindowY"),
|
||||
gSavedSettings.getS32("WindowWidth"), gSavedSettings.getS32("WindowHeight"),
|
||||
@@ -2320,10 +2320,10 @@ void LLAppViewer::writeSystemInfo()
|
||||
{
|
||||
gDebugInfo["SLLog"] = LLError::logFileName();
|
||||
|
||||
// <edit>
|
||||
//gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("VersionChannelName");
|
||||
gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("SpecifiedChannel");
|
||||
// </edit>
|
||||
// <edit>
|
||||
//gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("VersionChannelName");
|
||||
gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("SpecifiedChannel");
|
||||
// </edit>
|
||||
gDebugInfo["ClientInfo"]["MajorVersion"] = LL_VERSION_MAJOR;
|
||||
gDebugInfo["ClientInfo"]["MinorVersion"] = LL_VERSION_MINOR;
|
||||
gDebugInfo["ClientInfo"]["PatchVersion"] = LL_VERSION_PATCH;
|
||||
@@ -2419,10 +2419,10 @@ void LLAppViewer::handleViewerCrash()
|
||||
|
||||
//We already do this in writeSystemInfo(), but we do it again here to make /sure/ we have a version
|
||||
//to check against no matter what
|
||||
// <edit>
|
||||
//gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("VersionChannelName");
|
||||
gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("SpecifiedChannel");
|
||||
// </edit>
|
||||
// <edit>
|
||||
//gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("VersionChannelName");
|
||||
gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("SpecifiedChannel");
|
||||
// </edit>
|
||||
|
||||
gDebugInfo["ClientInfo"]["MajorVersion"] = LL_VERSION_MAJOR;
|
||||
gDebugInfo["ClientInfo"]["MinorVersion"] = LL_VERSION_MINOR;
|
||||
@@ -3123,9 +3123,9 @@ void LLAppViewer::badNetworkHandler()
|
||||
|
||||
// Flush all of our caches on exit in the case of disconnect due to
|
||||
// invalid packets.
|
||||
// <edit>
|
||||
if(1) return;
|
||||
// </edit>
|
||||
// <edit>
|
||||
if(1) return;
|
||||
// </edit>
|
||||
|
||||
mPurgeOnExit = TRUE;
|
||||
|
||||
@@ -3342,10 +3342,10 @@ void LLAppViewer::idle()
|
||||
// *FIX: (???) SAMANTHA
|
||||
if (viewer_stats_timer.getElapsedTimeF32() >= SEND_STATS_PERIOD && !gDisconnected)
|
||||
{
|
||||
// <edit> we are not transmitting session stats
|
||||
//llinfos << "Transmitting sessions stats" << llendl;
|
||||
//send_stats();
|
||||
// </edit>
|
||||
// <edit> we are not transmitting session stats
|
||||
//llinfos << "Transmitting sessions stats" << llendl;
|
||||
//send_stats();
|
||||
// </edit>
|
||||
viewer_stats_timer.reset();
|
||||
}
|
||||
|
||||
@@ -4083,10 +4083,10 @@ void LLAppViewer::handleLoginComplete()
|
||||
initMainloopTimeout("Mainloop Init");
|
||||
|
||||
// Store some data to DebugInfo in case of a freeze.
|
||||
// <edit>
|
||||
//gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("VersionChannelName");
|
||||
gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("SpecifiedChannel");
|
||||
// </edit>
|
||||
// <edit>
|
||||
//gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("VersionChannelName");
|
||||
gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("SpecifiedChannel");
|
||||
// </edit>
|
||||
|
||||
gDebugInfo["ClientInfo"]["MajorVersion"] = LL_VERSION_MAJOR;
|
||||
gDebugInfo["ClientInfo"]["MinorVersion"] = LL_VERSION_MINOR;
|
||||
|
||||
@@ -307,9 +307,9 @@ extern F32 gSimFrames;
|
||||
|
||||
extern LLUUID gInventoryLibraryOwner;
|
||||
extern LLUUID gInventoryLibraryRoot;
|
||||
// <edit>
|
||||
extern LLUUID gLocalInventoryRoot;
|
||||
// </edit>
|
||||
// <edit>
|
||||
extern LLUUID gLocalInventoryRoot;
|
||||
// </edit>
|
||||
|
||||
extern BOOL gDisconnected;
|
||||
|
||||
|
||||
@@ -1,140 +1,140 @@
|
||||
// <edit>
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
#include "llbuildnewviewsscheduler.h"
|
||||
#include "llinventorybridge.h"
|
||||
#define BUILD_DELAY 0.1f
|
||||
#define BUILD_PER_DELAY 512
|
||||
std::list<LLBuildNewViewsScheduler::job> LLBuildNewViewsScheduler::sJobs;
|
||||
LLBuildNewViewsScheduler::LLBuildNewViewsScheduler() : LLEventTimer(BUILD_DELAY)
|
||||
{
|
||||
}
|
||||
void LLBuildNewViewsScheduler::addJob(LLInventoryPanel* inventory_panel, LLInventoryObject* inventory_object)
|
||||
{
|
||||
LLBuildNewViewsScheduler::job j;
|
||||
j.mInventoryPanel = inventory_panel;
|
||||
j.mInventoryObject = inventory_object;
|
||||
sJobs.push_back(j);
|
||||
}
|
||||
void LLBuildNewViewsScheduler::cancel(LLInventoryPanel* inventory_panel)
|
||||
{
|
||||
for(std::list<LLBuildNewViewsScheduler::job>::iterator iter = sJobs.begin();
|
||||
iter != sJobs.end(); )
|
||||
{
|
||||
LLInventoryPanel* job_panel = (*iter).mInventoryPanel;
|
||||
if(job_panel == inventory_panel)
|
||||
{
|
||||
iter = sJobs.erase(iter);
|
||||
}
|
||||
else
|
||||
{
|
||||
++iter;
|
||||
}
|
||||
}
|
||||
}
|
||||
BOOL LLBuildNewViewsScheduler::tick()
|
||||
{
|
||||
U32 i = 0;
|
||||
while(!sJobs.empty() && (i < BUILD_PER_DELAY))
|
||||
{
|
||||
LLBuildNewViewsScheduler::job j = sJobs.front();
|
||||
buildNewViews(j.mInventoryPanel, j.mInventoryObject);
|
||||
sJobs.pop_front();
|
||||
++i;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
void LLBuildNewViewsScheduler::buildNewViews(LLInventoryPanel* panelp, LLInventoryObject* objectp)
|
||||
{
|
||||
LLFolderViewItem* itemp = NULL;
|
||||
|
||||
if (objectp)
|
||||
{
|
||||
if (objectp->getType() <= LLAssetType::AT_NONE ||
|
||||
objectp->getType() >= LLAssetType::AT_COUNT)
|
||||
{
|
||||
llwarns << "called with objectp->mType == "
|
||||
<< ((S32) objectp->getType())
|
||||
<< " (shouldn't happen)" << llendl;
|
||||
}
|
||||
else if (objectp->getType() == LLAssetType::AT_CATEGORY) // build new view for category
|
||||
{
|
||||
LLInvFVBridge* new_listener = LLInvFVBridge::createBridge(objectp->getType(),
|
||||
LLInventoryType::IT_CATEGORY,
|
||||
panelp,
|
||||
objectp->getUUID());
|
||||
|
||||
if (new_listener)
|
||||
{
|
||||
LLFolderViewFolder* folderp = new LLFolderViewFolder(new_listener->getDisplayName(),
|
||||
new_listener->getIcon(),
|
||||
panelp->getRootFolder(),
|
||||
new_listener);
|
||||
|
||||
folderp->setItemSortOrder(panelp->getSortOrder());
|
||||
itemp = folderp;
|
||||
}
|
||||
}
|
||||
else // build new view for item
|
||||
{
|
||||
LLInventoryItem* item = (LLInventoryItem*)objectp;
|
||||
LLInvFVBridge* new_listener = LLInvFVBridge::createBridge(
|
||||
item->getType(),
|
||||
item->getInventoryType(),
|
||||
panelp,
|
||||
item->getUUID(),
|
||||
item->getFlags());
|
||||
if (new_listener)
|
||||
{
|
||||
itemp = new LLFolderViewItem(new_listener->getDisplayName(),
|
||||
new_listener->getIcon(),
|
||||
new_listener->getCreationDate(),
|
||||
panelp->getRootFolder(),
|
||||
new_listener);
|
||||
}
|
||||
}
|
||||
|
||||
LLFolderViewFolder* parent_folder = (LLFolderViewFolder*)panelp->getRootFolder()->getItemByID(objectp->getParentUUID());
|
||||
|
||||
if (itemp)
|
||||
{
|
||||
itemp->mDelayedDelete = TRUE;
|
||||
if (parent_folder)
|
||||
{
|
||||
itemp->addToFolder(parent_folder, panelp->getRootFolder());
|
||||
}
|
||||
else
|
||||
{
|
||||
llwarns << "Couldn't find parent folder for child " << itemp->getLabel() << llendl;
|
||||
delete itemp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!objectp || (objectp && (objectp->getType() == LLAssetType::AT_CATEGORY)))
|
||||
{
|
||||
LLViewerInventoryCategory::cat_array_t* categories;
|
||||
LLViewerInventoryItem::item_array_t* items;
|
||||
|
||||
panelp->getModel()->lockDirectDescendentArrays((objectp != NULL) ? objectp->getUUID() : LLUUID::null, categories, items);
|
||||
if(categories)
|
||||
{
|
||||
S32 count = categories->count();
|
||||
for(S32 i = 0; i < count; ++i)
|
||||
{
|
||||
LLInventoryCategory* cat = categories->get(i);
|
||||
addJob(panelp, cat);
|
||||
}
|
||||
}
|
||||
if(items)
|
||||
{
|
||||
S32 count = items->count();
|
||||
for(S32 i = 0; i < count; ++i)
|
||||
{
|
||||
LLInventoryItem* item = items->get(i);
|
||||
addJob(panelp, item);
|
||||
}
|
||||
}
|
||||
panelp->getModel()->unlockDirectDescendentArrays(objectp->getUUID());
|
||||
}
|
||||
}
|
||||
// </edit>
|
||||
// <edit>
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
#include "llbuildnewviewsscheduler.h"
|
||||
#include "llinventorybridge.h"
|
||||
#define BUILD_DELAY 0.1f
|
||||
#define BUILD_PER_DELAY 512
|
||||
std::list<LLBuildNewViewsScheduler::job> LLBuildNewViewsScheduler::sJobs;
|
||||
LLBuildNewViewsScheduler::LLBuildNewViewsScheduler() : LLEventTimer(BUILD_DELAY)
|
||||
{
|
||||
}
|
||||
void LLBuildNewViewsScheduler::addJob(LLInventoryPanel* inventory_panel, LLInventoryObject* inventory_object)
|
||||
{
|
||||
LLBuildNewViewsScheduler::job j;
|
||||
j.mInventoryPanel = inventory_panel;
|
||||
j.mInventoryObject = inventory_object;
|
||||
sJobs.push_back(j);
|
||||
}
|
||||
void LLBuildNewViewsScheduler::cancel(LLInventoryPanel* inventory_panel)
|
||||
{
|
||||
for(std::list<LLBuildNewViewsScheduler::job>::iterator iter = sJobs.begin();
|
||||
iter != sJobs.end(); )
|
||||
{
|
||||
LLInventoryPanel* job_panel = (*iter).mInventoryPanel;
|
||||
if(job_panel == inventory_panel)
|
||||
{
|
||||
iter = sJobs.erase(iter);
|
||||
}
|
||||
else
|
||||
{
|
||||
++iter;
|
||||
}
|
||||
}
|
||||
}
|
||||
BOOL LLBuildNewViewsScheduler::tick()
|
||||
{
|
||||
U32 i = 0;
|
||||
while(!sJobs.empty() && (i < BUILD_PER_DELAY))
|
||||
{
|
||||
LLBuildNewViewsScheduler::job j = sJobs.front();
|
||||
buildNewViews(j.mInventoryPanel, j.mInventoryObject);
|
||||
sJobs.pop_front();
|
||||
++i;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
void LLBuildNewViewsScheduler::buildNewViews(LLInventoryPanel* panelp, LLInventoryObject* objectp)
|
||||
{
|
||||
LLFolderViewItem* itemp = NULL;
|
||||
|
||||
if (objectp)
|
||||
{
|
||||
if (objectp->getType() <= LLAssetType::AT_NONE ||
|
||||
objectp->getType() >= LLAssetType::AT_COUNT)
|
||||
{
|
||||
llwarns << "called with objectp->mType == "
|
||||
<< ((S32) objectp->getType())
|
||||
<< " (shouldn't happen)" << llendl;
|
||||
}
|
||||
else if (objectp->getType() == LLAssetType::AT_CATEGORY) // build new view for category
|
||||
{
|
||||
LLInvFVBridge* new_listener = LLInvFVBridge::createBridge(objectp->getType(),
|
||||
LLInventoryType::IT_CATEGORY,
|
||||
panelp,
|
||||
objectp->getUUID());
|
||||
|
||||
if (new_listener)
|
||||
{
|
||||
LLFolderViewFolder* folderp = new LLFolderViewFolder(new_listener->getDisplayName(),
|
||||
new_listener->getIcon(),
|
||||
panelp->getRootFolder(),
|
||||
new_listener);
|
||||
|
||||
folderp->setItemSortOrder(panelp->getSortOrder());
|
||||
itemp = folderp;
|
||||
}
|
||||
}
|
||||
else // build new view for item
|
||||
{
|
||||
LLInventoryItem* item = (LLInventoryItem*)objectp;
|
||||
LLInvFVBridge* new_listener = LLInvFVBridge::createBridge(
|
||||
item->getType(),
|
||||
item->getInventoryType(),
|
||||
panelp,
|
||||
item->getUUID(),
|
||||
item->getFlags());
|
||||
if (new_listener)
|
||||
{
|
||||
itemp = new LLFolderViewItem(new_listener->getDisplayName(),
|
||||
new_listener->getIcon(),
|
||||
new_listener->getCreationDate(),
|
||||
panelp->getRootFolder(),
|
||||
new_listener);
|
||||
}
|
||||
}
|
||||
|
||||
LLFolderViewFolder* parent_folder = (LLFolderViewFolder*)panelp->getRootFolder()->getItemByID(objectp->getParentUUID());
|
||||
|
||||
if (itemp)
|
||||
{
|
||||
itemp->mDelayedDelete = TRUE;
|
||||
if (parent_folder)
|
||||
{
|
||||
itemp->addToFolder(parent_folder, panelp->getRootFolder());
|
||||
}
|
||||
else
|
||||
{
|
||||
llwarns << "Couldn't find parent folder for child " << itemp->getLabel() << llendl;
|
||||
delete itemp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!objectp || (objectp && (objectp->getType() == LLAssetType::AT_CATEGORY)))
|
||||
{
|
||||
LLViewerInventoryCategory::cat_array_t* categories;
|
||||
LLViewerInventoryItem::item_array_t* items;
|
||||
|
||||
panelp->getModel()->lockDirectDescendentArrays((objectp != NULL) ? objectp->getUUID() : LLUUID::null, categories, items);
|
||||
if(categories)
|
||||
{
|
||||
S32 count = categories->count();
|
||||
for(S32 i = 0; i < count; ++i)
|
||||
{
|
||||
LLInventoryCategory* cat = categories->get(i);
|
||||
addJob(panelp, cat);
|
||||
}
|
||||
}
|
||||
if(items)
|
||||
{
|
||||
S32 count = items->count();
|
||||
for(S32 i = 0; i < count; ++i)
|
||||
{
|
||||
LLInventoryItem* item = items->get(i);
|
||||
addJob(panelp, item);
|
||||
}
|
||||
}
|
||||
panelp->getModel()->unlockDirectDescendentArrays(objectp->getUUID());
|
||||
}
|
||||
}
|
||||
// </edit>
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
// <edit>
|
||||
#include "llinventoryview.h"
|
||||
#include "llinventory.h"
|
||||
class LLBuildNewViewsScheduler : public LLEventTimer
|
||||
{
|
||||
typedef struct
|
||||
{
|
||||
LLInventoryPanel* mInventoryPanel;
|
||||
LLInventoryObject* mInventoryObject;
|
||||
} job;
|
||||
public:
|
||||
LLBuildNewViewsScheduler();
|
||||
void addJob(LLInventoryPanel* inventory_panel, LLInventoryObject* inventory_object);
|
||||
void cancel(LLInventoryPanel* inventory_panel);
|
||||
BOOL tick();
|
||||
private:
|
||||
static std::list<job> sJobs;
|
||||
void buildNewViews(LLInventoryPanel* panelp, LLInventoryObject* objectp);
|
||||
};
|
||||
static LLBuildNewViewsScheduler* gBuildNewViewsScheduler;
|
||||
// </edit>
|
||||
// <edit>
|
||||
#include "llinventoryview.h"
|
||||
#include "llinventory.h"
|
||||
class LLBuildNewViewsScheduler : public LLEventTimer
|
||||
{
|
||||
typedef struct
|
||||
{
|
||||
LLInventoryPanel* mInventoryPanel;
|
||||
LLInventoryObject* mInventoryObject;
|
||||
} job;
|
||||
public:
|
||||
LLBuildNewViewsScheduler();
|
||||
void addJob(LLInventoryPanel* inventory_panel, LLInventoryObject* inventory_object);
|
||||
void cancel(LLInventoryPanel* inventory_panel);
|
||||
BOOL tick();
|
||||
private:
|
||||
static std::list<job> sJobs;
|
||||
void buildNewViews(LLInventoryPanel* panelp, LLInventoryObject* objectp);
|
||||
};
|
||||
static LLBuildNewViewsScheduler* gBuildNewViewsScheduler;
|
||||
// </edit>
|
||||
|
||||
@@ -200,10 +200,12 @@ BOOL LLFilePicker::setupFilter(ELoadFilter filter)
|
||||
mOFN.lpstrFilter = INVGZ_FILTER \
|
||||
L"\0";
|
||||
break;
|
||||
/*
|
||||
case FFLOAD_AO:
|
||||
mOFN.lpstrFilter = AO_FILTER \
|
||||
L"\0";
|
||||
break;
|
||||
*/
|
||||
// </edit>
|
||||
default:
|
||||
res = FALSE;
|
||||
|
||||
@@ -1,310 +1,310 @@
|
||||
// <edit>
|
||||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
#include "llfloaterexploreanimations.h"
|
||||
#include "lluictrlfactory.h"
|
||||
#include "llscrolllistctrl.h"
|
||||
#include "llfloateranimpreview.h"
|
||||
#include "llvoavatar.h"
|
||||
#include "lllocalinventory.h"
|
||||
// <stuff for jelly roll>
|
||||
#include "llfloatertools.h"
|
||||
#include "llselectmgr.h"
|
||||
// </stuff for jelly roll>
|
||||
|
||||
std::map<LLUUID, std::list<LLAnimHistoryItem*>> LLFloaterExploreAnimations::animHistory;
|
||||
LLFloaterExploreAnimations* LLFloaterExploreAnimations::sInstance;
|
||||
|
||||
|
||||
LLAnimHistoryItem::LLAnimHistoryItem(LLUUID assetid)
|
||||
{
|
||||
mAssetID = assetid;
|
||||
}
|
||||
|
||||
LLFloaterExploreAnimations::LLFloaterExploreAnimations(LLUUID avatarid)
|
||||
: LLFloater()
|
||||
{
|
||||
LLFloaterExploreAnimations::sInstance = this;
|
||||
mAvatarID = avatarid;
|
||||
mAnimPreview = new LLPreviewAnimation(256, 256);
|
||||
mAnimPreview->setZoom(2.0f);
|
||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_explore_animations.xml");
|
||||
}
|
||||
|
||||
void LLFloaterExploreAnimations::close(bool app_quitting)
|
||||
{
|
||||
LLFloater::close(app_quitting);
|
||||
}
|
||||
|
||||
LLFloaterExploreAnimations::~LLFloaterExploreAnimations()
|
||||
{
|
||||
delete mAnimPreview;
|
||||
LLFloaterExploreAnimations::sInstance = NULL;
|
||||
}
|
||||
|
||||
BOOL LLFloaterExploreAnimations::postBuild(void)
|
||||
{
|
||||
childSetCommitCallback("anim_list", onSelectAnimation, this);
|
||||
childSetAction("copy_uuid_btn", onClickCopyUUID, this);
|
||||
childSetAction("open_btn", onClickOpen, this);
|
||||
childSetAction("jelly_roll_btn", onClickJellyRoll, this);
|
||||
update();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void LLFloaterExploreAnimations::update()
|
||||
{
|
||||
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("anim_list");
|
||||
LLUUID selection = list->getSelectedValue().asUUID();
|
||||
list->clearRows(); // do this differently probably
|
||||
|
||||
std::list<LLAnimHistoryItem*> history = animHistory[mAvatarID];
|
||||
std::list<LLAnimHistoryItem*>::iterator iter = history.begin();
|
||||
std::list<LLAnimHistoryItem*>::iterator end = history.end();
|
||||
for( ; iter != end; ++iter)
|
||||
{
|
||||
LLAnimHistoryItem* item = (*iter);
|
||||
|
||||
LLSD element;
|
||||
element["id"] = item->mAssetID;
|
||||
|
||||
LLSD& name_column = element["columns"][0];
|
||||
name_column["column"] = "name";
|
||||
name_column["value"] = item->mAssetID.asString();
|
||||
|
||||
LLSD& info_column = element["columns"][1];
|
||||
info_column["column"] = "info";
|
||||
if(item->mPlaying)
|
||||
info_column["value"] = "Playing";
|
||||
else
|
||||
info_column["value"] = llformat("%.1f min ago", (LLTimer::getElapsedSeconds() - item->mTimeStopped) / 60.f);
|
||||
|
||||
list->addElement(element, ADD_BOTTOM);
|
||||
}
|
||||
|
||||
list->selectByID(selection);
|
||||
}
|
||||
|
||||
void LLFloaterExploreAnimations::draw()
|
||||
{
|
||||
LLFloater::draw();
|
||||
|
||||
LLRect r = getRect();
|
||||
|
||||
gGL.color3f(1.f, 1.f, 1.f);
|
||||
|
||||
gGL.getTexUnit(0)->bind(mAnimPreview->getTexture());
|
||||
|
||||
gGL.begin( LLRender::QUADS );
|
||||
{
|
||||
gGL.texCoord2f(0.f, 1.f);
|
||||
gGL.vertex2i(r.getWidth() - 266, r.getHeight() - 25);
|
||||
gGL.texCoord2f(0.f, 0.f);
|
||||
gGL.vertex2i(r.getWidth() - 266, r.getHeight() - 256);
|
||||
gGL.texCoord2f(1.f, 0.f);
|
||||
gGL.vertex2i(r.getWidth() - 10, r.getHeight() - 256);
|
||||
gGL.texCoord2f(1.f, 1.f);
|
||||
gGL.vertex2i(r.getWidth() - 10, r.getHeight() - 25);
|
||||
}
|
||||
gGL.end();
|
||||
|
||||
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
|
||||
|
||||
//LLVOAvatar* avatarp = mAnimPreview->getDummyAvatar();
|
||||
//if (!avatarp->areAnimationsPaused())
|
||||
//{
|
||||
// mAnimPreview->requestUpdate();
|
||||
//}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// static
|
||||
void LLFloaterExploreAnimations::startAnim(LLUUID avatarid, LLUUID assetid)
|
||||
{
|
||||
std::string asset_str = assetid.asString();
|
||||
if(asset_str.find("17132261-c061") != std::string::npos) return; // dog1
|
||||
else if(asset_str.find("fea558cb-8b9b") != std::string::npos) return; // dog2
|
||||
else if(asset_str.find("50cb5750-0743") != std::string::npos) return; // dog3
|
||||
else if(asset_str.find("-dead-") != std::string::npos) return; // emo
|
||||
|
||||
LLAnimHistoryItem* item = NULL;
|
||||
|
||||
std::list<LLAnimHistoryItem*> history = animHistory[avatarid];
|
||||
std::list<LLAnimHistoryItem*>::iterator iter = history.begin();
|
||||
std::list<LLAnimHistoryItem*>::iterator end = history.end();
|
||||
for( ; iter != end; ++iter)
|
||||
{
|
||||
if((*iter)->mAssetID == assetid)
|
||||
{
|
||||
item = (*iter);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!item)
|
||||
{
|
||||
item = new LLAnimHistoryItem(assetid);
|
||||
item->mAvatarID = avatarid;
|
||||
item->mTimeStarted = LLTimer::getElapsedSeconds();
|
||||
}
|
||||
item->mPlaying = true;
|
||||
history.push_back(item);
|
||||
animHistory[avatarid] = history; // is this really necessary?
|
||||
handleHistoryChange();
|
||||
}
|
||||
|
||||
// static
|
||||
void LLFloaterExploreAnimations::stopAnim(LLUUID avatarid, LLUUID assetid)
|
||||
{
|
||||
std::string asset_str = assetid.asString();
|
||||
if(asset_str.find("17132261-c061") != std::string::npos) return; // dog1
|
||||
else if(asset_str.find("fea558cb-8b9b") != std::string::npos) return; // dog2
|
||||
else if(asset_str.find("50cb5750-0743") != std::string::npos) return; // dog3
|
||||
else if(asset_str.find("-dead-") != std::string::npos) return; // emo
|
||||
|
||||
LLAnimHistoryItem* item = NULL;
|
||||
|
||||
std::list<LLAnimHistoryItem*> history = animHistory[avatarid];
|
||||
std::list<LLAnimHistoryItem*>::iterator iter = history.begin();
|
||||
std::list<LLAnimHistoryItem*>::iterator end = history.end();
|
||||
for( ; iter != end; ++iter)
|
||||
{
|
||||
if((*iter)->mAssetID == assetid)
|
||||
{
|
||||
item = (*iter);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!item)
|
||||
{
|
||||
item = new LLAnimHistoryItem(assetid);
|
||||
item->mAvatarID = avatarid;
|
||||
item->mTimeStarted = LLTimer::getElapsedSeconds();
|
||||
history.push_back(item);
|
||||
}
|
||||
item->mPlaying = false;
|
||||
item->mTimeStopped = LLTimer::getElapsedSeconds();
|
||||
handleHistoryChange();
|
||||
}
|
||||
|
||||
class LLAnimHistoryItemCompare
|
||||
{
|
||||
public:
|
||||
bool operator() (LLAnimHistoryItem* first, LLAnimHistoryItem* second)
|
||||
{
|
||||
if(first->mPlaying)
|
||||
{
|
||||
if(second->mPlaying)
|
||||
{
|
||||
return (first->mTimeStarted > second->mTimeStarted);
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if(second->mPlaying)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return (first->mTimeStopped > second->mTimeStopped);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// static
|
||||
void LLFloaterExploreAnimations::handleHistoryChange()
|
||||
{
|
||||
std::map<LLUUID, std::list<LLAnimHistoryItem*>>::iterator av_iter = animHistory.begin();
|
||||
std::map<LLUUID, std::list<LLAnimHistoryItem*>>::iterator av_end = animHistory.end();
|
||||
for( ; av_iter != av_end; ++av_iter)
|
||||
{
|
||||
std::list<LLAnimHistoryItem*> history = (*av_iter).second;
|
||||
|
||||
// Sort it
|
||||
LLAnimHistoryItemCompare c;
|
||||
history.sort(c);
|
||||
|
||||
// Remove dupes
|
||||
history.unique();
|
||||
|
||||
// Trim it
|
||||
if(history.size() > 32)
|
||||
{
|
||||
history.resize(32);
|
||||
}
|
||||
|
||||
animHistory[(*av_iter).first] = history;
|
||||
}
|
||||
|
||||
// Update floater
|
||||
if(LLFloaterExploreAnimations::sInstance)
|
||||
LLFloaterExploreAnimations::sInstance->update();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// static
|
||||
void LLFloaterExploreAnimations::onSelectAnimation(LLUICtrl* ctrl, void* user_data)
|
||||
{
|
||||
LLFloaterExploreAnimations* floater = (LLFloaterExploreAnimations*)user_data;
|
||||
LLPreviewAnimation* preview = (LLPreviewAnimation*)floater->mAnimPreview;
|
||||
LLScrollListCtrl* list = floater->getChild<LLScrollListCtrl>("anim_list");
|
||||
LLUUID selection = list->getSelectedValue().asUUID();
|
||||
|
||||
preview->getDummyAvatar()->deactivateAllMotions();
|
||||
preview->getDummyAvatar()->startMotion(selection, 0.f);
|
||||
preview->setZoom(2.0f);
|
||||
}
|
||||
|
||||
// static
|
||||
void LLFloaterExploreAnimations::onClickCopyUUID(void* data)
|
||||
{
|
||||
LLFloaterExploreAnimations* floater = (LLFloaterExploreAnimations*)data;
|
||||
LLScrollListCtrl* list = floater->getChild<LLScrollListCtrl>("anim_list");
|
||||
LLUUID selection = list->getSelectedValue().asUUID();
|
||||
gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(selection.asString()));
|
||||
}
|
||||
|
||||
void LLFloaterExploreAnimations::onClickOpen(void* data)
|
||||
{
|
||||
LLFloaterExploreAnimations* floater = (LLFloaterExploreAnimations*)data;
|
||||
LLScrollListCtrl* list = floater->getChild<LLScrollListCtrl>("anim_list");
|
||||
LLUUID selection = list->getSelectedValue().asUUID();
|
||||
LLUUID item = LLLocalInventory::addItem(selection.asString(), LLAssetType::AT_ANIMATION, selection, true);
|
||||
}
|
||||
|
||||
void LLFloaterExploreAnimations::onClickJellyRoll(void* data)
|
||||
{
|
||||
std::string hover_text;
|
||||
LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection();
|
||||
LLObjectSelection::valid_iterator sel_it = selection->valid_begin();
|
||||
LLObjectSelection::valid_iterator sel_end = selection->valid_end();
|
||||
for( ; sel_it != sel_end; ++sel_it)
|
||||
{
|
||||
LLViewerObject* objectp = (*sel_it)->getObject();
|
||||
hover_text = objectp->getDebugText();
|
||||
if(hover_text != "")
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
LLFloaterExploreAnimations* floater = (LLFloaterExploreAnimations*)data;
|
||||
LLScrollListCtrl* list = floater->getChild<LLScrollListCtrl>("anim_list");
|
||||
LLUUID anim_id = list->getSelectedValue().asUUID();
|
||||
|
||||
LLFloaterNewLocalInventory* createy = new LLFloaterNewLocalInventory();
|
||||
createy->childSetText("name_line", hover_text);
|
||||
createy->childSetText("asset_id_line", anim_id.asString());
|
||||
createy->childSetValue("type_combo", "animatn");
|
||||
createy->childSetText("creator_id_line", LLFloaterNewLocalInventory::sLastCreatorId.asString());
|
||||
}
|
||||
|
||||
// </edit>
|
||||
// <edit>
|
||||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
#include "llfloaterexploreanimations.h"
|
||||
#include "lluictrlfactory.h"
|
||||
#include "llscrolllistctrl.h"
|
||||
#include "llfloateranimpreview.h"
|
||||
#include "llvoavatar.h"
|
||||
#include "lllocalinventory.h"
|
||||
// <stuff for jelly roll>
|
||||
#include "llfloatertools.h"
|
||||
#include "llselectmgr.h"
|
||||
// </stuff for jelly roll>
|
||||
|
||||
std::map<LLUUID, std::list<LLAnimHistoryItem*>> LLFloaterExploreAnimations::animHistory;
|
||||
LLFloaterExploreAnimations* LLFloaterExploreAnimations::sInstance;
|
||||
|
||||
|
||||
LLAnimHistoryItem::LLAnimHistoryItem(LLUUID assetid)
|
||||
{
|
||||
mAssetID = assetid;
|
||||
}
|
||||
|
||||
LLFloaterExploreAnimations::LLFloaterExploreAnimations(LLUUID avatarid)
|
||||
: LLFloater()
|
||||
{
|
||||
LLFloaterExploreAnimations::sInstance = this;
|
||||
mAvatarID = avatarid;
|
||||
mAnimPreview = new LLPreviewAnimation(256, 256);
|
||||
mAnimPreview->setZoom(2.0f);
|
||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_explore_animations.xml");
|
||||
}
|
||||
|
||||
void LLFloaterExploreAnimations::close(bool app_quitting)
|
||||
{
|
||||
LLFloater::close(app_quitting);
|
||||
}
|
||||
|
||||
LLFloaterExploreAnimations::~LLFloaterExploreAnimations()
|
||||
{
|
||||
delete mAnimPreview;
|
||||
LLFloaterExploreAnimations::sInstance = NULL;
|
||||
}
|
||||
|
||||
BOOL LLFloaterExploreAnimations::postBuild(void)
|
||||
{
|
||||
childSetCommitCallback("anim_list", onSelectAnimation, this);
|
||||
childSetAction("copy_uuid_btn", onClickCopyUUID, this);
|
||||
childSetAction("open_btn", onClickOpen, this);
|
||||
childSetAction("jelly_roll_btn", onClickJellyRoll, this);
|
||||
update();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void LLFloaterExploreAnimations::update()
|
||||
{
|
||||
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("anim_list");
|
||||
LLUUID selection = list->getSelectedValue().asUUID();
|
||||
list->clearRows(); // do this differently probably
|
||||
|
||||
std::list<LLAnimHistoryItem*> history = animHistory[mAvatarID];
|
||||
std::list<LLAnimHistoryItem*>::iterator iter = history.begin();
|
||||
std::list<LLAnimHistoryItem*>::iterator end = history.end();
|
||||
for( ; iter != end; ++iter)
|
||||
{
|
||||
LLAnimHistoryItem* item = (*iter);
|
||||
|
||||
LLSD element;
|
||||
element["id"] = item->mAssetID;
|
||||
|
||||
LLSD& name_column = element["columns"][0];
|
||||
name_column["column"] = "name";
|
||||
name_column["value"] = item->mAssetID.asString();
|
||||
|
||||
LLSD& info_column = element["columns"][1];
|
||||
info_column["column"] = "info";
|
||||
if(item->mPlaying)
|
||||
info_column["value"] = "Playing";
|
||||
else
|
||||
info_column["value"] = llformat("%.1f min ago", (LLTimer::getElapsedSeconds() - item->mTimeStopped) / 60.f);
|
||||
|
||||
list->addElement(element, ADD_BOTTOM);
|
||||
}
|
||||
|
||||
list->selectByID(selection);
|
||||
}
|
||||
|
||||
void LLFloaterExploreAnimations::draw()
|
||||
{
|
||||
LLFloater::draw();
|
||||
|
||||
LLRect r = getRect();
|
||||
|
||||
gGL.color3f(1.f, 1.f, 1.f);
|
||||
|
||||
gGL.getTexUnit(0)->bind(mAnimPreview->getTexture());
|
||||
|
||||
gGL.begin( LLRender::QUADS );
|
||||
{
|
||||
gGL.texCoord2f(0.f, 1.f);
|
||||
gGL.vertex2i(r.getWidth() - 266, r.getHeight() - 25);
|
||||
gGL.texCoord2f(0.f, 0.f);
|
||||
gGL.vertex2i(r.getWidth() - 266, r.getHeight() - 256);
|
||||
gGL.texCoord2f(1.f, 0.f);
|
||||
gGL.vertex2i(r.getWidth() - 10, r.getHeight() - 256);
|
||||
gGL.texCoord2f(1.f, 1.f);
|
||||
gGL.vertex2i(r.getWidth() - 10, r.getHeight() - 25);
|
||||
}
|
||||
gGL.end();
|
||||
|
||||
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
|
||||
|
||||
//LLVOAvatar* avatarp = mAnimPreview->getDummyAvatar();
|
||||
//if (!avatarp->areAnimationsPaused())
|
||||
//{
|
||||
// mAnimPreview->requestUpdate();
|
||||
//}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// static
|
||||
void LLFloaterExploreAnimations::startAnim(LLUUID avatarid, LLUUID assetid)
|
||||
{
|
||||
std::string asset_str = assetid.asString();
|
||||
if(asset_str.find("17132261-c061") != std::string::npos) return; // dog1
|
||||
else if(asset_str.find("fea558cb-8b9b") != std::string::npos) return; // dog2
|
||||
else if(asset_str.find("50cb5750-0743") != std::string::npos) return; // dog3
|
||||
else if(asset_str.find("-dead-") != std::string::npos) return; // emo
|
||||
|
||||
LLAnimHistoryItem* item = NULL;
|
||||
|
||||
std::list<LLAnimHistoryItem*> history = animHistory[avatarid];
|
||||
std::list<LLAnimHistoryItem*>::iterator iter = history.begin();
|
||||
std::list<LLAnimHistoryItem*>::iterator end = history.end();
|
||||
for( ; iter != end; ++iter)
|
||||
{
|
||||
if((*iter)->mAssetID == assetid)
|
||||
{
|
||||
item = (*iter);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!item)
|
||||
{
|
||||
item = new LLAnimHistoryItem(assetid);
|
||||
item->mAvatarID = avatarid;
|
||||
item->mTimeStarted = LLTimer::getElapsedSeconds();
|
||||
}
|
||||
item->mPlaying = true;
|
||||
history.push_back(item);
|
||||
animHistory[avatarid] = history; // is this really necessary?
|
||||
handleHistoryChange();
|
||||
}
|
||||
|
||||
// static
|
||||
void LLFloaterExploreAnimations::stopAnim(LLUUID avatarid, LLUUID assetid)
|
||||
{
|
||||
std::string asset_str = assetid.asString();
|
||||
if(asset_str.find("17132261-c061") != std::string::npos) return; // dog1
|
||||
else if(asset_str.find("fea558cb-8b9b") != std::string::npos) return; // dog2
|
||||
else if(asset_str.find("50cb5750-0743") != std::string::npos) return; // dog3
|
||||
else if(asset_str.find("-dead-") != std::string::npos) return; // emo
|
||||
|
||||
LLAnimHistoryItem* item = NULL;
|
||||
|
||||
std::list<LLAnimHistoryItem*> history = animHistory[avatarid];
|
||||
std::list<LLAnimHistoryItem*>::iterator iter = history.begin();
|
||||
std::list<LLAnimHistoryItem*>::iterator end = history.end();
|
||||
for( ; iter != end; ++iter)
|
||||
{
|
||||
if((*iter)->mAssetID == assetid)
|
||||
{
|
||||
item = (*iter);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!item)
|
||||
{
|
||||
item = new LLAnimHistoryItem(assetid);
|
||||
item->mAvatarID = avatarid;
|
||||
item->mTimeStarted = LLTimer::getElapsedSeconds();
|
||||
history.push_back(item);
|
||||
}
|
||||
item->mPlaying = false;
|
||||
item->mTimeStopped = LLTimer::getElapsedSeconds();
|
||||
handleHistoryChange();
|
||||
}
|
||||
|
||||
class LLAnimHistoryItemCompare
|
||||
{
|
||||
public:
|
||||
bool operator() (LLAnimHistoryItem* first, LLAnimHistoryItem* second)
|
||||
{
|
||||
if(first->mPlaying)
|
||||
{
|
||||
if(second->mPlaying)
|
||||
{
|
||||
return (first->mTimeStarted > second->mTimeStarted);
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if(second->mPlaying)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return (first->mTimeStopped > second->mTimeStopped);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// static
|
||||
void LLFloaterExploreAnimations::handleHistoryChange()
|
||||
{
|
||||
std::map<LLUUID, std::list<LLAnimHistoryItem*>>::iterator av_iter = animHistory.begin();
|
||||
std::map<LLUUID, std::list<LLAnimHistoryItem*>>::iterator av_end = animHistory.end();
|
||||
for( ; av_iter != av_end; ++av_iter)
|
||||
{
|
||||
std::list<LLAnimHistoryItem*> history = (*av_iter).second;
|
||||
|
||||
// Sort it
|
||||
LLAnimHistoryItemCompare c;
|
||||
history.sort(c);
|
||||
|
||||
// Remove dupes
|
||||
history.unique();
|
||||
|
||||
// Trim it
|
||||
if(history.size() > 32)
|
||||
{
|
||||
history.resize(32);
|
||||
}
|
||||
|
||||
animHistory[(*av_iter).first] = history;
|
||||
}
|
||||
|
||||
// Update floater
|
||||
if(LLFloaterExploreAnimations::sInstance)
|
||||
LLFloaterExploreAnimations::sInstance->update();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// static
|
||||
void LLFloaterExploreAnimations::onSelectAnimation(LLUICtrl* ctrl, void* user_data)
|
||||
{
|
||||
LLFloaterExploreAnimations* floater = (LLFloaterExploreAnimations*)user_data;
|
||||
LLPreviewAnimation* preview = (LLPreviewAnimation*)floater->mAnimPreview;
|
||||
LLScrollListCtrl* list = floater->getChild<LLScrollListCtrl>("anim_list");
|
||||
LLUUID selection = list->getSelectedValue().asUUID();
|
||||
|
||||
preview->getDummyAvatar()->deactivateAllMotions();
|
||||
preview->getDummyAvatar()->startMotion(selection, 0.f);
|
||||
preview->setZoom(2.0f);
|
||||
}
|
||||
|
||||
// static
|
||||
void LLFloaterExploreAnimations::onClickCopyUUID(void* data)
|
||||
{
|
||||
LLFloaterExploreAnimations* floater = (LLFloaterExploreAnimations*)data;
|
||||
LLScrollListCtrl* list = floater->getChild<LLScrollListCtrl>("anim_list");
|
||||
LLUUID selection = list->getSelectedValue().asUUID();
|
||||
gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(selection.asString()));
|
||||
}
|
||||
|
||||
void LLFloaterExploreAnimations::onClickOpen(void* data)
|
||||
{
|
||||
LLFloaterExploreAnimations* floater = (LLFloaterExploreAnimations*)data;
|
||||
LLScrollListCtrl* list = floater->getChild<LLScrollListCtrl>("anim_list");
|
||||
LLUUID selection = list->getSelectedValue().asUUID();
|
||||
LLUUID item = LLLocalInventory::addItem(selection.asString(), LLAssetType::AT_ANIMATION, selection, true);
|
||||
}
|
||||
|
||||
void LLFloaterExploreAnimations::onClickJellyRoll(void* data)
|
||||
{
|
||||
std::string hover_text;
|
||||
LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection();
|
||||
LLObjectSelection::valid_iterator sel_it = selection->valid_begin();
|
||||
LLObjectSelection::valid_iterator sel_end = selection->valid_end();
|
||||
for( ; sel_it != sel_end; ++sel_it)
|
||||
{
|
||||
LLViewerObject* objectp = (*sel_it)->getObject();
|
||||
hover_text = objectp->getDebugText();
|
||||
if(hover_text != "")
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
LLFloaterExploreAnimations* floater = (LLFloaterExploreAnimations*)data;
|
||||
LLScrollListCtrl* list = floater->getChild<LLScrollListCtrl>("anim_list");
|
||||
LLUUID anim_id = list->getSelectedValue().asUUID();
|
||||
|
||||
LLFloaterNewLocalInventory* createy = new LLFloaterNewLocalInventory();
|
||||
createy->childSetText("name_line", hover_text);
|
||||
createy->childSetText("asset_id_line", anim_id.asString());
|
||||
createy->childSetValue("type_combo", "animatn");
|
||||
createy->childSetText("creator_id_line", LLFloaterNewLocalInventory::sLastCreatorId.asString());
|
||||
}
|
||||
|
||||
// </edit>
|
||||
|
||||
@@ -1,58 +1,58 @@
|
||||
// <edit>
|
||||
#ifndef LL_LLFLOATEREXPLOREANIMATIONS_H
|
||||
#define LL_LLFLOATEREXPLOREANIMATIONS_H
|
||||
|
||||
#include "llfloater.h"
|
||||
#include "llfloateranimpreview.h"
|
||||
#include "llviewerwindow.h" // gViewerWindow
|
||||
|
||||
class LLAnimHistoryItem
|
||||
{
|
||||
public:
|
||||
LLAnimHistoryItem(LLUUID assetid);
|
||||
|
||||
LLUUID mAvatarID;
|
||||
LLUUID mAssetID;
|
||||
bool mPlaying;
|
||||
F64 mTimeStarted;
|
||||
F64 mTimeStopped;
|
||||
};
|
||||
|
||||
class LLFloaterExploreAnimations
|
||||
: public LLFloater
|
||||
{
|
||||
public:
|
||||
LLFloaterExploreAnimations(LLUUID avatarid);
|
||||
BOOL postBuild(void);
|
||||
void close(bool app_quitting);
|
||||
|
||||
void update();
|
||||
|
||||
LLUUID mAvatarID;
|
||||
LLPreviewAnimation* mAnimPreview;
|
||||
|
||||
private:
|
||||
virtual ~LLFloaterExploreAnimations();
|
||||
|
||||
|
||||
// static stuff!
|
||||
public:
|
||||
static void onSelectAnimation(LLUICtrl* ctrl, void* user_data);
|
||||
static void onClickCopyUUID(void* data);
|
||||
static void onClickOpen(void* data);
|
||||
static void onClickJellyRoll(void* data);
|
||||
|
||||
static void startAnim(LLUUID avatarid, LLUUID assetid);
|
||||
static void stopAnim(LLUUID avatarid, LLUUID assetid);
|
||||
|
||||
static std::map<LLUUID, std::list<LLAnimHistoryItem*>> animHistory;
|
||||
static LLFloaterExploreAnimations* sInstance;
|
||||
private:
|
||||
static void handleHistoryChange();
|
||||
|
||||
protected:
|
||||
void draw();
|
||||
};
|
||||
|
||||
#endif
|
||||
// </edit>
|
||||
// <edit>
|
||||
#ifndef LL_LLFLOATEREXPLOREANIMATIONS_H
|
||||
#define LL_LLFLOATEREXPLOREANIMATIONS_H
|
||||
|
||||
#include "llfloater.h"
|
||||
#include "llfloateranimpreview.h"
|
||||
#include "llviewerwindow.h" // gViewerWindow
|
||||
|
||||
class LLAnimHistoryItem
|
||||
{
|
||||
public:
|
||||
LLAnimHistoryItem(LLUUID assetid);
|
||||
|
||||
LLUUID mAvatarID;
|
||||
LLUUID mAssetID;
|
||||
bool mPlaying;
|
||||
F64 mTimeStarted;
|
||||
F64 mTimeStopped;
|
||||
};
|
||||
|
||||
class LLFloaterExploreAnimations
|
||||
: public LLFloater
|
||||
{
|
||||
public:
|
||||
LLFloaterExploreAnimations(LLUUID avatarid);
|
||||
BOOL postBuild(void);
|
||||
void close(bool app_quitting);
|
||||
|
||||
void update();
|
||||
|
||||
LLUUID mAvatarID;
|
||||
LLPreviewAnimation* mAnimPreview;
|
||||
|
||||
private:
|
||||
virtual ~LLFloaterExploreAnimations();
|
||||
|
||||
|
||||
// static stuff!
|
||||
public:
|
||||
static void onSelectAnimation(LLUICtrl* ctrl, void* user_data);
|
||||
static void onClickCopyUUID(void* data);
|
||||
static void onClickOpen(void* data);
|
||||
static void onClickJellyRoll(void* data);
|
||||
|
||||
static void startAnim(LLUUID avatarid, LLUUID assetid);
|
||||
static void stopAnim(LLUUID avatarid, LLUUID assetid);
|
||||
|
||||
static std::map<LLUUID, std::list<LLAnimHistoryItem*>> animHistory;
|
||||
static LLFloaterExploreAnimations* sInstance;
|
||||
private:
|
||||
static void handleHistoryChange();
|
||||
|
||||
protected:
|
||||
void draw();
|
||||
};
|
||||
|
||||
#endif
|
||||
// </edit>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,127 +1,127 @@
|
||||
// <edit>
|
||||
/**
|
||||
* @file llimportobject.h
|
||||
*/
|
||||
|
||||
#ifndef LL_LLIMPORTOBJECT_H
|
||||
#define LL_LLIMPORTOBJECT_H
|
||||
|
||||
#include "llviewerobject.h"
|
||||
#include "llfloater.h"
|
||||
|
||||
|
||||
class BuildingSupply : public LLEventTimer
|
||||
{
|
||||
public:
|
||||
BuildingSupply();
|
||||
BOOL tick();
|
||||
};
|
||||
|
||||
class LLImportWearable
|
||||
{
|
||||
public:
|
||||
std::string mName;
|
||||
int mType;
|
||||
std::string mData;
|
||||
|
||||
LLImportWearable(LLSD sd);
|
||||
};
|
||||
|
||||
class LLImportObject : public LLViewerObject
|
||||
{
|
||||
public:
|
||||
//LLImportObject(std::string id, std::string parentId);
|
||||
LLImportObject(std::string id, LLSD prim);
|
||||
|
||||
std::string mId;
|
||||
std::string mParentId;
|
||||
std::string mPrimName;
|
||||
bool importIsAttachment;
|
||||
U32 importAttachPoint;
|
||||
LLVector3 importAttachPos;
|
||||
LLQuaternion importAttachRot;
|
||||
};
|
||||
|
||||
|
||||
class LLXmlImportOptions
|
||||
{
|
||||
public:
|
||||
LLXmlImportOptions(LLXmlImportOptions* options);
|
||||
LLXmlImportOptions(std::string filename);
|
||||
LLXmlImportOptions(LLSD llsd);
|
||||
void init(LLSD llsd);
|
||||
std::string mName;
|
||||
//LLSD mLLSD;
|
||||
std::vector<LLImportObject*> mRootObjects;
|
||||
std::vector<LLImportObject*> mChildObjects;
|
||||
std::vector<LLImportWearable*> mWearables;
|
||||
BOOL mKeepPosition;
|
||||
LLViewerObject* mSupplier;
|
||||
};
|
||||
|
||||
|
||||
class LLXmlImport
|
||||
{
|
||||
public:
|
||||
static void import(LLXmlImportOptions* import_options);
|
||||
static void onNewPrim(LLViewerObject* object);
|
||||
static void onNewItem(LLViewerInventoryItem* item);
|
||||
static void onNewAttachment(LLViewerObject* object);
|
||||
static void Cancel(void* user_data);
|
||||
|
||||
static bool sImportInProgress;
|
||||
static bool sImportHasAttachments;
|
||||
static LLUUID sFolderID;
|
||||
static LLViewerObject* sSupplyParams;
|
||||
static int sPrimsNeeded;
|
||||
static std::vector<LLImportObject*> sPrims; // all prims being imported
|
||||
static std::map<U8, bool> sPt2watch; // attach points that need watching
|
||||
static std::map<std::string, U8> sId2attachpt; // attach points of all attachables
|
||||
static std::map<U8, LLVector3> sPt2attachpos; // positions of all attachables
|
||||
static std::map<U8, LLQuaternion> sPt2attachrot; // rotations of all attachables
|
||||
static int sPrimIndex;
|
||||
static int sAttachmentsDone;
|
||||
static std::map<std::string, U32> sId2localid;
|
||||
static std::map<U32, LLVector3> sRootpositions;
|
||||
static LLXmlImportOptions* sXmlImportOptions;
|
||||
};
|
||||
|
||||
|
||||
class LLFloaterImportProgress
|
||||
: public LLFloater
|
||||
{
|
||||
public:
|
||||
void close(bool app_quitting);
|
||||
static LLFloaterImportProgress* sInstance;
|
||||
static void show();
|
||||
static void update();
|
||||
private:
|
||||
LLFloaterImportProgress();
|
||||
virtual ~LLFloaterImportProgress();
|
||||
};
|
||||
|
||||
|
||||
class LLFloaterXmlImportOptions : public LLFloater
|
||||
{
|
||||
public:
|
||||
LLFloaterXmlImportOptions(LLXmlImportOptions* default_options);
|
||||
BOOL postBuild();
|
||||
LLXmlImportOptions* mDefaultOptions;
|
||||
std::map<LLUUID, LLImportWearable*> mImportWearableMap;
|
||||
std::map<LLUUID, LLImportObject*> mImportObjectMap;
|
||||
private:
|
||||
enum LIST_COLUMN_ORDER
|
||||
{
|
||||
LIST_CHECKED,
|
||||
LIST_TYPE,
|
||||
LIST_NAME,
|
||||
};
|
||||
static void onClickSelectAll(void* user_data);
|
||||
static void onClickSelectObjects(void* user_data);
|
||||
static void onClickSelectWearables(void* user_data);
|
||||
static void onClickOK(void* user_data);
|
||||
static void onClickCancel(void* user_data);
|
||||
};
|
||||
|
||||
#endif
|
||||
// </edit>
|
||||
// <edit>
|
||||
/**
|
||||
* @file llimportobject.h
|
||||
*/
|
||||
|
||||
#ifndef LL_LLIMPORTOBJECT_H
|
||||
#define LL_LLIMPORTOBJECT_H
|
||||
|
||||
#include "llviewerobject.h"
|
||||
#include "llfloater.h"
|
||||
|
||||
|
||||
class BuildingSupply : public LLEventTimer
|
||||
{
|
||||
public:
|
||||
BuildingSupply();
|
||||
BOOL tick();
|
||||
};
|
||||
|
||||
class LLImportWearable
|
||||
{
|
||||
public:
|
||||
std::string mName;
|
||||
int mType;
|
||||
std::string mData;
|
||||
|
||||
LLImportWearable(LLSD sd);
|
||||
};
|
||||
|
||||
class LLImportObject : public LLViewerObject
|
||||
{
|
||||
public:
|
||||
//LLImportObject(std::string id, std::string parentId);
|
||||
LLImportObject(std::string id, LLSD prim);
|
||||
|
||||
std::string mId;
|
||||
std::string mParentId;
|
||||
std::string mPrimName;
|
||||
bool importIsAttachment;
|
||||
U32 importAttachPoint;
|
||||
LLVector3 importAttachPos;
|
||||
LLQuaternion importAttachRot;
|
||||
};
|
||||
|
||||
|
||||
class LLXmlImportOptions
|
||||
{
|
||||
public:
|
||||
LLXmlImportOptions(LLXmlImportOptions* options);
|
||||
LLXmlImportOptions(std::string filename);
|
||||
LLXmlImportOptions(LLSD llsd);
|
||||
void init(LLSD llsd);
|
||||
std::string mName;
|
||||
//LLSD mLLSD;
|
||||
std::vector<LLImportObject*> mRootObjects;
|
||||
std::vector<LLImportObject*> mChildObjects;
|
||||
std::vector<LLImportWearable*> mWearables;
|
||||
BOOL mKeepPosition;
|
||||
LLViewerObject* mSupplier;
|
||||
};
|
||||
|
||||
|
||||
class LLXmlImport
|
||||
{
|
||||
public:
|
||||
static void import(LLXmlImportOptions* import_options);
|
||||
static void onNewPrim(LLViewerObject* object);
|
||||
static void onNewItem(LLViewerInventoryItem* item);
|
||||
static void onNewAttachment(LLViewerObject* object);
|
||||
static void Cancel(void* user_data);
|
||||
|
||||
static bool sImportInProgress;
|
||||
static bool sImportHasAttachments;
|
||||
static LLUUID sFolderID;
|
||||
static LLViewerObject* sSupplyParams;
|
||||
static int sPrimsNeeded;
|
||||
static std::vector<LLImportObject*> sPrims; // all prims being imported
|
||||
static std::map<U8, bool> sPt2watch; // attach points that need watching
|
||||
static std::map<std::string, U8> sId2attachpt; // attach points of all attachables
|
||||
static std::map<U8, LLVector3> sPt2attachpos; // positions of all attachables
|
||||
static std::map<U8, LLQuaternion> sPt2attachrot; // rotations of all attachables
|
||||
static int sPrimIndex;
|
||||
static int sAttachmentsDone;
|
||||
static std::map<std::string, U32> sId2localid;
|
||||
static std::map<U32, LLVector3> sRootpositions;
|
||||
static LLXmlImportOptions* sXmlImportOptions;
|
||||
};
|
||||
|
||||
|
||||
class LLFloaterImportProgress
|
||||
: public LLFloater
|
||||
{
|
||||
public:
|
||||
void close(bool app_quitting);
|
||||
static LLFloaterImportProgress* sInstance;
|
||||
static void show();
|
||||
static void update();
|
||||
private:
|
||||
LLFloaterImportProgress();
|
||||
virtual ~LLFloaterImportProgress();
|
||||
};
|
||||
|
||||
|
||||
class LLFloaterXmlImportOptions : public LLFloater
|
||||
{
|
||||
public:
|
||||
LLFloaterXmlImportOptions(LLXmlImportOptions* default_options);
|
||||
BOOL postBuild();
|
||||
LLXmlImportOptions* mDefaultOptions;
|
||||
std::map<LLUUID, LLImportWearable*> mImportWearableMap;
|
||||
std::map<LLUUID, LLImportObject*> mImportObjectMap;
|
||||
private:
|
||||
enum LIST_COLUMN_ORDER
|
||||
{
|
||||
LIST_CHECKED,
|
||||
LIST_TYPE,
|
||||
LIST_NAME,
|
||||
};
|
||||
static void onClickSelectAll(void* user_data);
|
||||
static void onClickSelectObjects(void* user_data);
|
||||
static void onClickSelectWearables(void* user_data);
|
||||
static void onClickOK(void* user_data);
|
||||
static void onClickCancel(void* user_data);
|
||||
};
|
||||
|
||||
#endif
|
||||
// </edit>
|
||||
|
||||
@@ -3815,7 +3815,7 @@ bool confirm_replace_attachment_rez(const LLSD& notification, const LLSD& respon
|
||||
}
|
||||
return false;
|
||||
}
|
||||
static LLNotificationFunctorRegistration confirm_replace_attachment_rez_reg("ReplaceAttachment", confirm_replace_attachment_rez);
|
||||
LLNotificationFunctorRegistration confirm_replace_attachment_rez_reg("ReplaceAttachment", confirm_replace_attachment_rez);
|
||||
|
||||
void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
|
||||
{
|
||||
|
||||
@@ -59,10 +59,10 @@
|
||||
#include "llviewercontrol.h"
|
||||
#include "llvoavatar.h"
|
||||
#include "llsdutil.h"
|
||||
// <edit>
|
||||
#include "llimportobject.h"
|
||||
#include "llappviewer.h" // gLostItemsRoot
|
||||
// </edit>
|
||||
// <edit>
|
||||
#include "llimportobject.h"
|
||||
#include "llappviewer.h" // gLostItemsRoot
|
||||
// </edit>
|
||||
#include <deque>
|
||||
|
||||
//#define DIFF_INVENTORY_FILES
|
||||
@@ -211,14 +211,14 @@ BOOL LLInventoryModel::isObjectDescendentOf(const LLUUID& obj_id,
|
||||
while(obj)
|
||||
{
|
||||
const LLUUID& parent_id = obj->getParentUUID();
|
||||
// <edit>
|
||||
if(parent_id == obj->getUUID())
|
||||
{
|
||||
// infinite loop... same thing as having no parent, hopefully.
|
||||
llwarns << "This shit has itself as parent! " << parent_id.asString() << ", " << obj->getName() << llendl;
|
||||
return FALSE;
|
||||
}
|
||||
// </edit>
|
||||
// <edit>
|
||||
if(parent_id == obj->getUUID())
|
||||
{
|
||||
// infinite loop... same thing as having no parent, hopefully.
|
||||
llwarns << "This shit has itself as parent! " << parent_id.asString() << ", " << obj->getName() << llendl;
|
||||
return FALSE;
|
||||
}
|
||||
// </edit>
|
||||
if( parent_id.isNull() )
|
||||
{
|
||||
return FALSE;
|
||||
@@ -835,14 +835,14 @@ void LLInventoryModel::deleteObject(const LLUUID& id)
|
||||
// folders, items, etc in a fairly efficient manner.
|
||||
void LLInventoryModel::purgeDescendentsOf(const LLUUID& id)
|
||||
{
|
||||
// <edit> "Deliberately disobeying you" derf derf
|
||||
//EHasChildren children = categoryHasChildren(id);
|
||||
//if(children == CHILDREN_NO)
|
||||
//{
|
||||
// llinfos << "Not purging descendents of " << id << llendl;
|
||||
// return;
|
||||
//}
|
||||
// </edit>
|
||||
// <edit> "Deliberately disobeying you" derf derf
|
||||
//EHasChildren children = categoryHasChildren(id);
|
||||
//if(children == CHILDREN_NO)
|
||||
//{
|
||||
// llinfos << "Not purging descendents of " << id << llendl;
|
||||
// return;
|
||||
//}
|
||||
// </edit>
|
||||
LLPointer<LLViewerInventoryCategory> cat = getCategory(id);
|
||||
if(cat.notNull())
|
||||
{
|
||||
@@ -1397,10 +1397,10 @@ void LLInventoryModel::bulkFetch(std::string url)
|
||||
|
||||
if (cat)
|
||||
{
|
||||
// <edit> Pre-emptive strike
|
||||
if(!(gInventory.isObjectDescendentOf(cat->getUUID(), gLocalInventoryRoot)))
|
||||
{
|
||||
// </edit>
|
||||
// <edit> Pre-emptive strike
|
||||
if(!(gInventory.isObjectDescendentOf(cat->getUUID(), gLocalInventoryRoot)))
|
||||
{
|
||||
// </edit>
|
||||
if ( LLViewerInventoryCategory::VERSION_UNKNOWN == cat->getVersion())
|
||||
{
|
||||
LLSD folder_sd;
|
||||
@@ -1436,9 +1436,9 @@ void LLInventoryModel::bulkFetch(std::string url)
|
||||
}
|
||||
|
||||
}
|
||||
// <edit>
|
||||
}
|
||||
// </edit>
|
||||
// <edit>
|
||||
}
|
||||
// </edit>
|
||||
}
|
||||
}
|
||||
sFetchQueue.pop_front();
|
||||
@@ -1739,10 +1739,10 @@ void LLInventoryModel::addItem(LLViewerInventoryItem* item)
|
||||
if(item)
|
||||
{
|
||||
mItemMap[item->getUUID()] = item;
|
||||
// <edit>
|
||||
if(LLXmlImport::sImportInProgress)
|
||||
LLXmlImport::onNewItem(item);
|
||||
// </edit>
|
||||
// <edit>
|
||||
if(LLXmlImport::sImportInProgress)
|
||||
LLXmlImport::onNewItem(item);
|
||||
// </edit>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1928,8 +1928,8 @@ bool LLInventoryModel::isCategoryComplete(const LLUUID& cat_id) const
|
||||
}
|
||||
}
|
||||
|
||||
// <edit>
|
||||
if((cat_id == gLocalInventoryRoot) || gInventory.isObjectDescendentOf(cat_id, gLocalInventoryRoot)) return true;
|
||||
// <edit>
|
||||
if((cat_id == gLocalInventoryRoot) || gInventory.isObjectDescendentOf(cat_id, gLocalInventoryRoot)) return true;
|
||||
// </edit>
|
||||
|
||||
return false;
|
||||
@@ -3485,11 +3485,11 @@ bool LLInventoryCollectFunctor::itemTransferCommonlyAllowed(LLInventoryItem* ite
|
||||
LLVOAvatar* my_avatar = NULL;
|
||||
|
||||
switch(item->getType())
|
||||
{
|
||||
// <edit> I don't even think changing this did anything
|
||||
//case LLAssetType::AT_CALLINGCARD:
|
||||
// // not allowed
|
||||
// break;
|
||||
{
|
||||
// <edit> I don't even think changing this did anything
|
||||
//case LLAssetType::AT_CALLINGCARD:
|
||||
// // not allowed
|
||||
// break;
|
||||
|
||||
case LLAssetType::AT_OBJECT:
|
||||
my_avatar = gAgent.getAvatarObject();
|
||||
|
||||
@@ -385,14 +385,14 @@ protected:
|
||||
// the internal data structures are consistent. These methods
|
||||
// should be passed pointers of newly created objects, and the
|
||||
// instance will take over the memory management from there.
|
||||
// <edit>
|
||||
public:
|
||||
// </edit>
|
||||
// <edit>
|
||||
public:
|
||||
// </edit>
|
||||
void addCategory(LLViewerInventoryCategory* category);
|
||||
void addItem(LLViewerInventoryItem* item);
|
||||
// <edit>
|
||||
protected:
|
||||
// </edit>
|
||||
// <edit>
|
||||
protected:
|
||||
// </edit>
|
||||
|
||||
// Internal method which looks for a category with the specified
|
||||
// preferred type. Returns LLUUID::null if not found
|
||||
@@ -408,18 +408,18 @@ protected:
|
||||
//void recalculateCloneInformation();
|
||||
|
||||
// file import/export.
|
||||
// <edit>
|
||||
public:
|
||||
// </edit>
|
||||
// <edit>
|
||||
public:
|
||||
// </edit>
|
||||
static bool loadFromFile(const std::string& filename,
|
||||
cat_array_t& categories,
|
||||
item_array_t& items);
|
||||
static bool saveToFile(const std::string& filename,
|
||||
const cat_array_t& categories,
|
||||
const item_array_t& items);
|
||||
// <edit>
|
||||
protected:
|
||||
// </edit>
|
||||
// <edit>
|
||||
protected:
|
||||
// </edit>
|
||||
|
||||
// message handling functionality
|
||||
//static void processUseCachedInventory(LLMessageSystem* msg, void**);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,45 +1,45 @@
|
||||
// <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>
|
||||
// <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>
|
||||
|
||||
@@ -254,9 +254,9 @@ LLViewerObject::~LLViewerObject()
|
||||
{
|
||||
if(iter->second != NULL)
|
||||
{
|
||||
// <edit>
|
||||
// There was a crash here
|
||||
// </edit>
|
||||
// <edit>
|
||||
// There was a crash here
|
||||
// </edit>
|
||||
delete iter->second->data;
|
||||
delete iter->second;
|
||||
}
|
||||
@@ -1880,11 +1880,11 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
|
||||
|
||||
if ( gShowObjectUpdates )
|
||||
{
|
||||
// <edit> We want to see updates from our own avatar
|
||||
//if (!((mPrimitiveCode == LL_PCODE_LEGACY_AVATAR) && (((LLVOAvatar *) this)->mIsSelf))
|
||||
// && mRegionp)
|
||||
if(mRegionp)
|
||||
// </edit>
|
||||
// <edit> We want to see updates from our own avatar
|
||||
//if (!((mPrimitiveCode == LL_PCODE_LEGACY_AVATAR) && (((LLVOAvatar *) this)->mIsSelf))
|
||||
// && mRegionp)
|
||||
if(mRegionp)
|
||||
// </edit>
|
||||
{
|
||||
LLViewerObject* object = gObjectList.createObjectViewer(LL_PCODE_LEGACY_TEXT_BUBBLE, mRegionp);
|
||||
LLVOTextBubble* bubble = (LLVOTextBubble*) object;
|
||||
@@ -1935,11 +1935,11 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
|
||||
|
||||
if (needs_refresh)
|
||||
{
|
||||
// <edit>
|
||||
if(isChanged(MOVED)) // Update "center" if this or children are selected,
|
||||
// and translate, scale, or rotate occurred on this.
|
||||
// Leave dialog refresh to happen always, as before.
|
||||
// </edit>
|
||||
// <edit>
|
||||
if(isChanged(MOVED)) // Update "center" if this or children are selected,
|
||||
// and translate, scale, or rotate occurred on this.
|
||||
// Leave dialog refresh to happen always, as before.
|
||||
// </edit>
|
||||
LLSelectMgr::getInstance()->updateSelectionCenter();
|
||||
dialog_refresh_all();
|
||||
}
|
||||
@@ -4087,14 +4087,14 @@ void LLViewerObject::setDebugText(const std::string &utf8text)
|
||||
mText->setDoFade(FALSE);
|
||||
updateText();
|
||||
}
|
||||
// <edit>
|
||||
std::string LLViewerObject::getDebugText()
|
||||
{
|
||||
if(mText)
|
||||
return mText->getStringUTF8();
|
||||
return "";
|
||||
}
|
||||
// </edit>
|
||||
// <edit>
|
||||
std::string LLViewerObject::getDebugText()
|
||||
{
|
||||
if(mText)
|
||||
return mText->getStringUTF8();
|
||||
return "";
|
||||
}
|
||||
// </edit>
|
||||
|
||||
void LLViewerObject::setIcon(LLViewerImage* icon_image)
|
||||
{
|
||||
@@ -5161,19 +5161,19 @@ void LLViewerObject::resetChildrenPosition(const LLVector3& offset, BOOL simplif
|
||||
}
|
||||
|
||||
|
||||
// <edit>
|
||||
S32 LLViewerObject::getAttachmentPoint()
|
||||
{
|
||||
return ((S32)((((U8)mState & AGENT_ATTACH_MASK) >> 4) | (((U8)mState & ~AGENT_ATTACH_MASK) << 4)));
|
||||
}
|
||||
|
||||
std::string LLViewerObject::getAttachmentPointName()
|
||||
{
|
||||
S32 point = getAttachmentPoint();
|
||||
if((point > 0) && (point < 39))
|
||||
{
|
||||
return gAgent.getAvatarObject()->mAttachmentPoints[point]->getName();
|
||||
}
|
||||
return llformat("unsupported point %d", point);
|
||||
}
|
||||
// </edit>
|
||||
// <edit>
|
||||
S32 LLViewerObject::getAttachmentPoint()
|
||||
{
|
||||
return ((S32)((((U8)mState & AGENT_ATTACH_MASK) >> 4) | (((U8)mState & ~AGENT_ATTACH_MASK) << 4)));
|
||||
}
|
||||
|
||||
std::string LLViewerObject::getAttachmentPointName()
|
||||
{
|
||||
S32 point = getAttachmentPoint();
|
||||
if((point > 0) && (point < 39))
|
||||
{
|
||||
return gAgent.getAvatarObject()->mAttachmentPoints[point]->getName();
|
||||
}
|
||||
return llformat("unsupported point %d", point);
|
||||
}
|
||||
// </edit>
|
||||
|
||||
@@ -353,9 +353,9 @@ public:
|
||||
void setCanSelect(BOOL canSelect);
|
||||
|
||||
void setDebugText(const std::string &utf8text);
|
||||
// <edit>
|
||||
std::string getDebugText();
|
||||
// </edit>
|
||||
// <edit>
|
||||
std::string getDebugText();
|
||||
// </edit>
|
||||
void setIcon(LLViewerImage* icon_image);
|
||||
void clearIcon();
|
||||
|
||||
@@ -662,11 +662,11 @@ protected:
|
||||
|
||||
private:
|
||||
static S32 sNumObjects;
|
||||
// <edit>
|
||||
public:
|
||||
S32 getAttachmentPoint();
|
||||
std::string getAttachmentPointName();
|
||||
// </edit>
|
||||
// <edit>
|
||||
public:
|
||||
S32 getAttachmentPoint();
|
||||
std::string getAttachmentPointName();
|
||||
// </edit>
|
||||
};
|
||||
|
||||
///////////////////
|
||||
|
||||
@@ -83,9 +83,9 @@
|
||||
#include "llvoiceclient.h"
|
||||
#include "llvoicevisualizer.h" // Ventrella
|
||||
|
||||
// <edit>
|
||||
#include "llfloaterexploreanimations.h"
|
||||
//#include "llao.h"
|
||||
// <edit>
|
||||
#include "llfloaterexploreanimations.h"
|
||||
//#include "llao.h"
|
||||
// </edit>
|
||||
|
||||
#if LL_MSVC
|
||||
@@ -754,12 +754,12 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
|
||||
mUpdatePeriod(1),
|
||||
mFullyLoadedInitialized(FALSE),
|
||||
mHasBakedHair( FALSE )
|
||||
// <edit>
|
||||
// mNametagSaysIdle(false),
|
||||
// mIdleForever(true),
|
||||
// mIdleMinutes(0),
|
||||
// mFocusObject(LLUUID::null),
|
||||
// mFocusVector(LLVector3d::zero)
|
||||
// <edit>
|
||||
// mNametagSaysIdle(false),
|
||||
// mIdleForever(true),
|
||||
// mIdleMinutes(0),
|
||||
// mFocusObject(LLUUID::null),
|
||||
// mFocusVector(LLVector3d::zero)
|
||||
// </edit>
|
||||
{
|
||||
LLMemType mt(LLMemType::MTYPE_AVATAR);
|
||||
@@ -3072,11 +3072,11 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
|
||||
mNameText->setUseBubble(TRUE);
|
||||
sNumVisibleChatBubbles++;
|
||||
new_name = TRUE;
|
||||
}
|
||||
|
||||
// <edit>
|
||||
//LLColor4 avatar_name_color = gColors.getColor( "AvatarNameColor" );
|
||||
//avatar_name_color.setAlpha(alpha);
|
||||
}
|
||||
|
||||
// <edit>
|
||||
//LLColor4 avatar_name_color = gColors.getColor( "AvatarNameColor" );
|
||||
//avatar_name_color.setAlpha(alpha);
|
||||
|
||||
LLQuaternion root_rot = mRoot.getWorldRotation();
|
||||
mNameText->setUsePixelSize(TRUE);
|
||||
@@ -3157,108 +3157,106 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
|
||||
line += lastname->getString();
|
||||
BOOL need_comma = FALSE;
|
||||
|
||||
BOOL need_comma = FALSE;
|
||||
|
||||
// <edit>
|
||||
if(getTEImage(TEX_HEAD_BODYPAINT)->isMissingAsset())
|
||||
{
|
||||
mNameText->setColor(LLColor4(1.f, 1.0f, 1.0f));
|
||||
strcat(line, " (Unknown viewer)");
|
||||
}
|
||||
else
|
||||
{
|
||||
std::string uuid_str = getTEImage(TEX_HEAD_BODYPAINT)->getID().asString();
|
||||
|
||||
if(uuid_str == "ccda2b3b-e72c-a112-e126-fee238b67218")
|
||||
{
|
||||
// textures other than head are 4934f1bf-3b1f-cf4f-dbdf-a72550d05bc6
|
||||
mNameText->setColor(LLColor4(0.f, 1.0f, 0.0f));
|
||||
strcat(line, " (Emerald)");
|
||||
}
|
||||
else if(uuid_str == "0bcd5f5d-a4ce-9ea4-f9e8-15132653b3d8")
|
||||
{
|
||||
mNameText->setColor(LLColor4(1.0f, 0.3f, 0.5f));
|
||||
strcat(line, " (MoyMix)");
|
||||
}
|
||||
else if(uuid_str == "5855f37d-63e5-3918-1404-8ffa3820eb6d")
|
||||
{
|
||||
mNameText->setColor(LLColor4(1.0f, 0.3f, 0.5f));
|
||||
strcat(line, " (MoyMix/B)");
|
||||
}
|
||||
else if(uuid_str == "9ba526b6-f43d-6b60-42de-ce62a25ee7fb")
|
||||
{
|
||||
mNameText->setColor(LLColor4(1.0f, 0.3f, 0.5f));
|
||||
strcat(line, " (MoyMix/nolife)");
|
||||
}
|
||||
//else if(uuid_str == "abbca853-30ba-49c1-a1e7-2a5b9a70573f")
|
||||
//{
|
||||
// mNameText->setColor(LLColor4(0.5f, 0.75f, 1.0f));
|
||||
// strcat(line, " (CryoLife/" + "A)");
|
||||
//}
|
||||
else if(uuid_str == "0f6723d2-5b23-6b58-08ab-308112b33786")
|
||||
{
|
||||
mNameText->setColor(LLColor4(0.5f, 0.75f, 1.0f));
|
||||
strcat(line, " (CryoLife)");
|
||||
}
|
||||
else if(uuid_str == "2c9c1e0b-e5d1-263e-16b1-7fc6d169f3d6")
|
||||
{
|
||||
mNameText->setColor(LLColor4(0.5f, 0.75f, 1.0f));
|
||||
strcat(line, " (Phoxy SL)");
|
||||
}
|
||||
else if(uuid_str == "c252d89d-6f7c-7d90-f430-d140d2e3fbbe")
|
||||
{
|
||||
mNameText->setColor(LLColor4(0.7f, 0.7f, 0.7f));
|
||||
strcat(line, " (VLife)");
|
||||
}
|
||||
else if(uuid_str == "5aa5c70d-d787-571b-0495-4fc1bdef1500")
|
||||
{
|
||||
mNameText->setColor(LLColor4(1.f, 0.0f, 0.0f));
|
||||
strcat(line, " (GridProxy/LordGregGreg)");
|
||||
}
|
||||
else if(uuid_str == "8183e823-c443-2142-6eb6-2ab763d4f81c")
|
||||
{
|
||||
mNameText->setColor(LLColor4(1.f, 1.f, 0.0f));
|
||||
strcat(line, " (GridProxy/DayOh)");
|
||||
}
|
||||
else if(uuid_str == "f3fd74a6-fee7-4b2f-93ae-ddcb5991da04")
|
||||
{
|
||||
mNameText->setColor(LLColor4(1.0f, 0.0f, 1.0f));
|
||||
strcat(line, " (PSL/A)");
|
||||
}
|
||||
else if(uuid_str == "77662f23-c77a-9b4d-5558-26b757b2144c")
|
||||
{
|
||||
mNameText->setColor(LLColor4(1.0f, 0.0f, 1.0f));
|
||||
strcat(line, " (PSL/B)");
|
||||
}
|
||||
else if(uuid_str == "1c29480c-c608-df87-28bb-964fb64c5366")
|
||||
{
|
||||
mNameText->setColor(LLColor4(1.f, 1.0f, 1.0f));
|
||||
strcat(line, " (Emerald/GEMINI)");
|
||||
}
|
||||
else if(uuid_str == "5262d71a-88f7-ef40-3b15-00ea148ab4b5")
|
||||
{
|
||||
mNameText->setColor(LLColor4(0.9f, 0.9f, 0.9f));
|
||||
strcat(line, " (GEMINI Bot)");
|
||||
}
|
||||
else if(uuid_str == "adcbe893-7643-fd12-f61c-0b39717e2e32")
|
||||
{
|
||||
mNameText->setColor(LLColor4(1.0f, 0.5f, 0.4f));
|
||||
strcat(line, " (tyk3n)");
|
||||
}
|
||||
else if(uuid_str == "f5a48821-9a98-d09e-8d6a-50cc08ba9a47")
|
||||
{
|
||||
mNameText->setColor(gColors.getColor( "AvatarNameColor" ));
|
||||
strcat(line, " (NeilLife)");
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
LLColor4 avatar_name_color = gColors.getColor( "AvatarNameColor" );
|
||||
avatar_name_color.setAlpha(1.f);
|
||||
mNameText->setColor(avatar_name_color);
|
||||
}
|
||||
}
|
||||
// </edit>
|
||||
// <edit>
|
||||
if(getTEImage(TEX_HEAD_BODYPAINT)->isMissingAsset())
|
||||
{
|
||||
mNameText->setColor(LLColor4(1.f, 1.0f, 1.0f));
|
||||
line += " (Unknown viewer)";
|
||||
}
|
||||
else
|
||||
{
|
||||
std::string uuid_str = getTEImage(TEX_HEAD_BODYPAINT)->getID().asString();
|
||||
|
||||
if(uuid_str == "ccda2b3b-e72c-a112-e126-fee238b67218")
|
||||
{
|
||||
// textures other than head are 4934f1bf-3b1f-cf4f-dbdf-a72550d05bc6
|
||||
mNameText->setColor(LLColor4(0.f, 1.0f, 0.0f));
|
||||
line += " (Emerald)";
|
||||
}
|
||||
else if(uuid_str == "0bcd5f5d-a4ce-9ea4-f9e8-15132653b3d8")
|
||||
{
|
||||
mNameText->setColor(LLColor4(1.0f, 0.3f, 0.5f));
|
||||
line += " (MoyMix)";
|
||||
}
|
||||
else if(uuid_str == "5855f37d-63e5-3918-1404-8ffa3820eb6d")
|
||||
{
|
||||
mNameText->setColor(LLColor4(1.0f, 0.3f, 0.5f));
|
||||
line += " (MoyMix/B)";
|
||||
}
|
||||
else if(uuid_str == "9ba526b6-f43d-6b60-42de-ce62a25ee7fb")
|
||||
{
|
||||
mNameText->setColor(LLColor4(1.0f, 0.3f, 0.5f));
|
||||
line += " (MoyMix/nolife)";
|
||||
}
|
||||
//else if(uuid_str == "abbca853-30ba-49c1-a1e7-2a5b9a70573f")
|
||||
//{
|
||||
// mNameText->setColor(LLColor4(0.5f, 0.75f, 1.0f));
|
||||
// strcat(line, " (CryoLife/" + "A)");
|
||||
//}
|
||||
else if(uuid_str == "0f6723d2-5b23-6b58-08ab-308112b33786")
|
||||
{
|
||||
mNameText->setColor(LLColor4(0.5f, 0.75f, 1.0f));
|
||||
line += " (CryoLife)";
|
||||
}
|
||||
else if(uuid_str == "2c9c1e0b-e5d1-263e-16b1-7fc6d169f3d6")
|
||||
{
|
||||
mNameText->setColor(LLColor4(0.5f, 0.75f, 1.0f));
|
||||
line += " (Phoxy SL)";
|
||||
}
|
||||
else if(uuid_str == "c252d89d-6f7c-7d90-f430-d140d2e3fbbe")
|
||||
{
|
||||
mNameText->setColor(LLColor4(0.7f, 0.7f, 0.7f));
|
||||
line += " (VLife)";
|
||||
}
|
||||
else if(uuid_str == "5aa5c70d-d787-571b-0495-4fc1bdef1500")
|
||||
{
|
||||
mNameText->setColor(LLColor4(1.f, 0.0f, 0.0f));
|
||||
line += " (GridProxy/LordGregGreg)";
|
||||
}
|
||||
else if(uuid_str == "8183e823-c443-2142-6eb6-2ab763d4f81c")
|
||||
{
|
||||
mNameText->setColor(LLColor4(1.f, 1.f, 0.0f));
|
||||
line += " (GridProxy/DayOh)";
|
||||
}
|
||||
else if(uuid_str == "f3fd74a6-fee7-4b2f-93ae-ddcb5991da04")
|
||||
{
|
||||
mNameText->setColor(LLColor4(1.0f, 0.0f, 1.0f));
|
||||
line += " (PSL/A)";
|
||||
}
|
||||
else if(uuid_str == "77662f23-c77a-9b4d-5558-26b757b2144c")
|
||||
{
|
||||
mNameText->setColor(LLColor4(1.0f, 0.0f, 1.0f));
|
||||
line += " (PSL/B)";
|
||||
}
|
||||
else if(uuid_str == "1c29480c-c608-df87-28bb-964fb64c5366")
|
||||
{
|
||||
mNameText->setColor(LLColor4(1.f, 1.0f, 1.0f));
|
||||
line += " (Emerald/GEMINI)";
|
||||
}
|
||||
else if(uuid_str == "5262d71a-88f7-ef40-3b15-00ea148ab4b5")
|
||||
{
|
||||
mNameText->setColor(LLColor4(0.9f, 0.9f, 0.9f));
|
||||
line += " (GEMINI Bot)";
|
||||
}
|
||||
else if(uuid_str == "adcbe893-7643-fd12-f61c-0b39717e2e32")
|
||||
{
|
||||
mNameText->setColor(LLColor4(1.0f, 0.5f, 0.4f));
|
||||
line += " (tyk3n)";
|
||||
}
|
||||
else if(uuid_str == "f5a48821-9a98-d09e-8d6a-50cc08ba9a47")
|
||||
{
|
||||
mNameText->setColor(gColors.getColor( "AvatarNameColor" ));
|
||||
line += " (NeilLife)";
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
LLColor4 avatar_name_color = gColors.getColor( "AvatarNameColor" );
|
||||
avatar_name_color.setAlpha(1.f);
|
||||
mNameText->setColor(avatar_name_color);
|
||||
}
|
||||
}
|
||||
// </edit>
|
||||
if (is_away || is_muted || is_busy)
|
||||
{
|
||||
line += " (";
|
||||
@@ -3417,11 +3415,11 @@ void LLVOAvatar::idleUpdateTractorBeam()
|
||||
return;
|
||||
}
|
||||
|
||||
// <edit>
|
||||
if(gSavedSettings.getBOOL("DisablePointAtAndBeam"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
// <edit>
|
||||
if(gSavedSettings.getBOOL("DisablePointAtAndBeam"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
// </edit>
|
||||
|
||||
const LLPickInfo& pick = gViewerWindow->getLastPick();
|
||||
@@ -4852,8 +4850,8 @@ void LLVOAvatar::processAnimationStateChanges()
|
||||
if (found_anim == mSignaledAnimations.end())
|
||||
{
|
||||
processSingleAnimationStateChange(anim_it->first, FALSE);
|
||||
// <edit>
|
||||
LLFloaterExploreAnimations::stopAnim(getID(), anim_it->first);
|
||||
// <edit>
|
||||
LLFloaterExploreAnimations::stopAnim(getID(), anim_it->first);
|
||||
// </edit>
|
||||
mPlayingAnimations.erase(anim_it++);
|
||||
continue;
|
||||
@@ -4870,8 +4868,8 @@ void LLVOAvatar::processAnimationStateChanges()
|
||||
// signaled but not playing, or different sequence id, start motion
|
||||
if (found_anim == mPlayingAnimations.end() || found_anim->second != anim_it->second)
|
||||
{
|
||||
// <edit>
|
||||
LLFloaterExploreAnimations::startAnim(getID(), anim_it->first);
|
||||
// <edit>
|
||||
LLFloaterExploreAnimations::startAnim(getID(), anim_it->first);
|
||||
// </edit>
|
||||
if (processSingleAnimationStateChange(anim_it->first, TRUE))
|
||||
{
|
||||
@@ -6112,43 +6110,43 @@ LLViewerJointAttachment* LLVOAvatar::getTargetAttachmentPoint(LLViewerObject* vi
|
||||
// attachObject()
|
||||
//-----------------------------------------------------------------------------
|
||||
BOOL LLVOAvatar::attachObject(LLViewerObject *viewer_object)
|
||||
{
|
||||
LLViewerJointAttachment* attachment = getTargetAttachmentPoint(viewer_object);
|
||||
|
||||
// <edit> testzone attachpt
|
||||
if(!attachment)
|
||||
{
|
||||
S32 attachmentID = ATTACHMENT_ID_FROM_STATE(viewer_object->getState());
|
||||
LLUUID item_id;
|
||||
LLNameValue* item_id_nv = viewer_object->getNVPair("AttachItemID");
|
||||
if( item_id_nv )
|
||||
{
|
||||
const char* s = item_id_nv->getString();
|
||||
if(s)
|
||||
item_id.set(s);
|
||||
}
|
||||
if(!item_id.isNull())
|
||||
{
|
||||
mUnsupportedAttachmentPoints[attachmentID] = item_id;
|
||||
if (viewer_object->isSelected())
|
||||
{
|
||||
LLSelectMgr::getInstance()->updateSelectionCenter();
|
||||
LLSelectMgr::getInstance()->updatePointAt();
|
||||
}
|
||||
|
||||
if (mIsSelf)
|
||||
{
|
||||
updateAttachmentVisibility(gAgent.getCameraMode());
|
||||
|
||||
// Then make sure the inventory is in sync with the avatar.
|
||||
gInventory.addChangedMask( LLInventoryObserver::LABEL, item_id );
|
||||
gInventory.notifyObservers();
|
||||
}
|
||||
}
|
||||
else
|
||||
llwarns << "No item ID" << llendl;
|
||||
}
|
||||
// </edit>
|
||||
{
|
||||
LLViewerJointAttachment* attachment = getTargetAttachmentPoint(viewer_object);
|
||||
|
||||
// <edit> testzone attachpt
|
||||
if(!attachment)
|
||||
{
|
||||
S32 attachmentID = ATTACHMENT_ID_FROM_STATE(viewer_object->getState());
|
||||
LLUUID item_id;
|
||||
LLNameValue* item_id_nv = viewer_object->getNVPair("AttachItemID");
|
||||
if( item_id_nv )
|
||||
{
|
||||
const char* s = item_id_nv->getString();
|
||||
if(s)
|
||||
item_id.set(s);
|
||||
}
|
||||
if(!item_id.isNull())
|
||||
{
|
||||
mUnsupportedAttachmentPoints[attachmentID] = item_id;
|
||||
if (viewer_object->isSelected())
|
||||
{
|
||||
LLSelectMgr::getInstance()->updateSelectionCenter();
|
||||
LLSelectMgr::getInstance()->updatePointAt();
|
||||
}
|
||||
|
||||
if (mIsSelf)
|
||||
{
|
||||
updateAttachmentVisibility(gAgent.getCameraMode());
|
||||
|
||||
// Then make sure the inventory is in sync with the avatar.
|
||||
gInventory.addChangedMask( LLInventoryObserver::LABEL, item_id );
|
||||
gInventory.notifyObservers();
|
||||
}
|
||||
}
|
||||
else
|
||||
llwarns << "No item ID" << llendl;
|
||||
}
|
||||
// </edit>
|
||||
if (!attachment || !attachment->addObject(viewer_object))
|
||||
{
|
||||
return FALSE;
|
||||
@@ -6257,57 +6255,57 @@ BOOL LLVOAvatar::detachObject(LLViewerObject *viewer_object)
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
// <edit> testzone attachpt
|
||||
LLUUID item_id;
|
||||
LLNameValue* item_id_nv = viewer_object->getNVPair("AttachItemID");
|
||||
if( item_id_nv )
|
||||
{
|
||||
const char* s = item_id_nv->getString();
|
||||
if(s)
|
||||
item_id.set(s);
|
||||
}
|
||||
if(!item_id.isNull())
|
||||
{
|
||||
std::map<S32, LLUUID>::iterator iter = mUnsupportedAttachmentPoints.begin();
|
||||
std::map<S32, LLUUID>::iterator end = mUnsupportedAttachmentPoints.end();
|
||||
for( ; iter != end; ++iter)
|
||||
{
|
||||
if((*iter).second == item_id)
|
||||
{
|
||||
mUnsupportedAttachmentPoints.erase((*iter).first);
|
||||
if (mIsSelf)
|
||||
{
|
||||
// the simulator should automatically handle
|
||||
// permission revocation
|
||||
|
||||
stopMotionFromSource(viewer_object->getID());
|
||||
LLFollowCamMgr::setCameraActive(viewer_object->getID(), FALSE);
|
||||
|
||||
LLViewerObject::const_child_list_t& child_list = viewer_object->getChildren();
|
||||
for (LLViewerObject::child_list_t::const_iterator iter = child_list.begin();
|
||||
iter != child_list.end(); iter++)
|
||||
{
|
||||
LLViewerObject* child_objectp = *iter;
|
||||
// the simulator should automatically handle
|
||||
// permissions revocation
|
||||
|
||||
stopMotionFromSource(child_objectp->getID());
|
||||
LLFollowCamMgr::setCameraActive(child_objectp->getID(), FALSE);
|
||||
}
|
||||
// Then make sure the inventory is in sync with the avatar.
|
||||
gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
|
||||
gInventory.notifyObservers();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
llwarns << "Not found" << llendl;
|
||||
}
|
||||
else
|
||||
llwarns << "No item ID" << llendl;
|
||||
// </edit>
|
||||
}
|
||||
|
||||
// <edit> testzone attachpt
|
||||
LLUUID item_id;
|
||||
LLNameValue* item_id_nv = viewer_object->getNVPair("AttachItemID");
|
||||
if( item_id_nv )
|
||||
{
|
||||
const char* s = item_id_nv->getString();
|
||||
if(s)
|
||||
item_id.set(s);
|
||||
}
|
||||
if(!item_id.isNull())
|
||||
{
|
||||
std::map<S32, LLUUID>::iterator iter = mUnsupportedAttachmentPoints.begin();
|
||||
std::map<S32, LLUUID>::iterator end = mUnsupportedAttachmentPoints.end();
|
||||
for( ; iter != end; ++iter)
|
||||
{
|
||||
if((*iter).second == item_id)
|
||||
{
|
||||
mUnsupportedAttachmentPoints.erase((*iter).first);
|
||||
if (mIsSelf)
|
||||
{
|
||||
// the simulator should automatically handle
|
||||
// permission revocation
|
||||
|
||||
stopMotionFromSource(viewer_object->getID());
|
||||
LLFollowCamMgr::setCameraActive(viewer_object->getID(), FALSE);
|
||||
|
||||
LLViewerObject::const_child_list_t& child_list = viewer_object->getChildren();
|
||||
for (LLViewerObject::child_list_t::const_iterator iter = child_list.begin();
|
||||
iter != child_list.end(); iter++)
|
||||
{
|
||||
LLViewerObject* child_objectp = *iter;
|
||||
// the simulator should automatically handle
|
||||
// permissions revocation
|
||||
|
||||
stopMotionFromSource(child_objectp->getID());
|
||||
LLFollowCamMgr::setCameraActive(child_objectp->getID(), FALSE);
|
||||
}
|
||||
// Then make sure the inventory is in sync with the avatar.
|
||||
gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
|
||||
gInventory.notifyObservers();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
llwarns << "Not found" << llendl;
|
||||
}
|
||||
else
|
||||
llwarns << "No item ID" << llendl;
|
||||
// </edit>
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
@@ -6469,21 +6467,21 @@ BOOL LLVOAvatar::isWearingAttachment( const LLUUID& inv_item_id )
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// <edit> testzone attachpt
|
||||
BOOL LLVOAvatar::isWearingUnsupportedAttachment( const LLUUID& inv_item_id )
|
||||
{
|
||||
std::map<S32, LLUUID>::iterator end = mUnsupportedAttachmentPoints.end();
|
||||
}
|
||||
|
||||
// <edit> testzone attachpt
|
||||
BOOL LLVOAvatar::isWearingUnsupportedAttachment( const LLUUID& inv_item_id )
|
||||
{
|
||||
std::map<S32, LLUUID>::iterator end = mUnsupportedAttachmentPoints.end();
|
||||
for(std::map<S32, LLUUID>::iterator iter = mUnsupportedAttachmentPoints.begin(); iter != end; ++iter)
|
||||
{
|
||||
{
|
||||
if((*iter).second == inv_item_id)
|
||||
{
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
// getWornAttachment()
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -8733,11 +8731,11 @@ void LLVOAvatar::dumpLocalTextures()
|
||||
|
||||
llinfos << "LocTex " << name << ": "
|
||||
<< "Discard " << image->getDiscardLevel() << ", "
|
||||
<< "(" << image->getWidth() << ", " << image->getHeight() << ") "
|
||||
// <edit>
|
||||
//#if !LL_RELEASE_FOR_DOWNLOAD
|
||||
#if 1
|
||||
// </edit>
|
||||
<< "(" << image->getWidth() << ", " << image->getHeight() << ") "
|
||||
// <edit>
|
||||
//#if !LL_RELEASE_FOR_DOWNLOAD
|
||||
#if 1
|
||||
// </edit>
|
||||
// End users don't get to trivially see avatar texture IDs,
|
||||
// makes textures easier to steal
|
||||
<< image->getID() << " "
|
||||
|
||||
@@ -283,9 +283,9 @@ public:
|
||||
void getOffObject();
|
||||
|
||||
BOOL isWearingAttachment( const LLUUID& inv_item_id );
|
||||
// <edit> testzone attachpt
|
||||
BOOL isWearingUnsupportedAttachment( const LLUUID& inv_item_id );
|
||||
// </edit>
|
||||
// <edit> testzone attachpt
|
||||
BOOL isWearingUnsupportedAttachment( const LLUUID& inv_item_id );
|
||||
// </edit>
|
||||
LLViewerObject* getWornAttachment( const LLUUID& inv_item_id );
|
||||
const std::string getAttachedPointName(const LLUUID& inv_item_id);
|
||||
|
||||
@@ -685,15 +685,15 @@ protected:
|
||||
public:
|
||||
static void updateFreezeCounter(S32 counter = 0 );
|
||||
// <edit>
|
||||
|
||||
public:
|
||||
//bool mNametagSaysIdle;
|
||||
//bool mIdleForever;
|
||||
//LLFrameTimer mIdleTimer;
|
||||
//U32 mIdleMinutes;
|
||||
LLUUID mFocusObject;
|
||||
LLVector3d mFocusVector;
|
||||
//void resetIdleTime();
|
||||
|
||||
public:
|
||||
//bool mNametagSaysIdle;
|
||||
//bool mIdleForever;
|
||||
//LLFrameTimer mIdleTimer;
|
||||
//U32 mIdleMinutes;
|
||||
LLUUID mFocusObject;
|
||||
LLVector3d mFocusVector;
|
||||
//void resetIdleTime();
|
||||
// </edit>
|
||||
|
||||
private:
|
||||
@@ -722,7 +722,7 @@ private:
|
||||
U32 mMaskTexName;
|
||||
// Stores pointers to the joint meshes that this baked texture deals with
|
||||
std::vector< LLViewerJointMesh * > mMeshes; // std::vector<LLViewerJointMesh> mJoints[i]->mMeshParts
|
||||
|
||||
|
||||
};
|
||||
typedef std::vector<BakedTextureData> bakedtexturedata_vec_t;
|
||||
bakedtexturedata_vec_t mBakedTextureData;
|
||||
|
||||
@@ -1,95 +1,95 @@
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectType>Local</ProjectType>
|
||||
<ProductVersion>8.0.50727</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{96943E2D-1373-4617-A117-D0F997A94919}</ProjectGuid>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ApplicationIcon>
|
||||
</ApplicationIcon>
|
||||
<AssemblyKeyContainerName>
|
||||
</AssemblyKeyContainerName>
|
||||
<AssemblyName>VSTool</AssemblyName>
|
||||
<AssemblyOriginatorKeyFile>
|
||||
</AssemblyOriginatorKeyFile>
|
||||
<DefaultClientScript>JScript</DefaultClientScript>
|
||||
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
|
||||
<DefaultTargetSchema>IE50</DefaultTargetSchema>
|
||||
<DelaySign>false</DelaySign>
|
||||
<OutputType>Exe</OutputType>
|
||||
<RootNamespace>VSTool</RootNamespace>
|
||||
<RunPostBuildEvent>Always</RunPostBuildEvent>
|
||||
<StartupObject>VSTool.VSToolMain</StartupObject>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<OutputPath>.\</OutputPath>
|
||||
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
|
||||
<BaseAddress>285212672</BaseAddress>
|
||||
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
|
||||
<ConfigurationOverrideFile>
|
||||
</ConfigurationOverrideFile>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DocumentationFile>
|
||||
</DocumentationFile>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<FileAlignment>4096</FileAlignment>
|
||||
<NoStdLib>false</NoStdLib>
|
||||
<NoWarn>
|
||||
</NoWarn>
|
||||
<Optimize>false</Optimize>
|
||||
<RegisterForComInterop>false</RegisterForComInterop>
|
||||
<RemoveIntegerChecks>false</RemoveIntegerChecks>
|
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DebugType>full</DebugType>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<OutputPath>.\</OutputPath>
|
||||
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
|
||||
<BaseAddress>285212672</BaseAddress>
|
||||
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
|
||||
<ConfigurationOverrideFile>
|
||||
</ConfigurationOverrideFile>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<DocumentationFile>
|
||||
</DocumentationFile>
|
||||
<DebugSymbols>false</DebugSymbols>
|
||||
<FileAlignment>4096</FileAlignment>
|
||||
<NoStdLib>false</NoStdLib>
|
||||
<NoWarn>
|
||||
</NoWarn>
|
||||
<Optimize>true</Optimize>
|
||||
<RegisterForComInterop>false</RegisterForComInterop>
|
||||
<RemoveIntegerChecks>false</RemoveIntegerChecks>
|
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DebugType>none</DebugType>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System">
|
||||
<Name>System</Name>
|
||||
</Reference>
|
||||
<Reference Include="System.Data">
|
||||
<Name>System.Data</Name>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="main.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PreBuildEvent>
|
||||
</PreBuildEvent>
|
||||
<PostBuildEvent>
|
||||
</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectType>Local</ProjectType>
|
||||
<ProductVersion>8.0.50727</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{96943E2D-1373-4617-A117-D0F997A94919}</ProjectGuid>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ApplicationIcon>
|
||||
</ApplicationIcon>
|
||||
<AssemblyKeyContainerName>
|
||||
</AssemblyKeyContainerName>
|
||||
<AssemblyName>VSTool</AssemblyName>
|
||||
<AssemblyOriginatorKeyFile>
|
||||
</AssemblyOriginatorKeyFile>
|
||||
<DefaultClientScript>JScript</DefaultClientScript>
|
||||
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
|
||||
<DefaultTargetSchema>IE50</DefaultTargetSchema>
|
||||
<DelaySign>false</DelaySign>
|
||||
<OutputType>Exe</OutputType>
|
||||
<RootNamespace>VSTool</RootNamespace>
|
||||
<RunPostBuildEvent>Always</RunPostBuildEvent>
|
||||
<StartupObject>VSTool.VSToolMain</StartupObject>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<OutputPath>.\</OutputPath>
|
||||
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
|
||||
<BaseAddress>285212672</BaseAddress>
|
||||
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
|
||||
<ConfigurationOverrideFile>
|
||||
</ConfigurationOverrideFile>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DocumentationFile>
|
||||
</DocumentationFile>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<FileAlignment>4096</FileAlignment>
|
||||
<NoStdLib>false</NoStdLib>
|
||||
<NoWarn>
|
||||
</NoWarn>
|
||||
<Optimize>false</Optimize>
|
||||
<RegisterForComInterop>false</RegisterForComInterop>
|
||||
<RemoveIntegerChecks>false</RemoveIntegerChecks>
|
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DebugType>full</DebugType>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<OutputPath>.\</OutputPath>
|
||||
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
|
||||
<BaseAddress>285212672</BaseAddress>
|
||||
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
|
||||
<ConfigurationOverrideFile>
|
||||
</ConfigurationOverrideFile>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<DocumentationFile>
|
||||
</DocumentationFile>
|
||||
<DebugSymbols>false</DebugSymbols>
|
||||
<FileAlignment>4096</FileAlignment>
|
||||
<NoStdLib>false</NoStdLib>
|
||||
<NoWarn>
|
||||
</NoWarn>
|
||||
<Optimize>true</Optimize>
|
||||
<RegisterForComInterop>false</RegisterForComInterop>
|
||||
<RemoveIntegerChecks>false</RemoveIntegerChecks>
|
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DebugType>none</DebugType>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System">
|
||||
<Name>System</Name>
|
||||
</Reference>
|
||||
<Reference Include="System.Data">
|
||||
<Name>System.Data</Name>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="main.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PreBuildEvent>
|
||||
</PreBuildEvent>
|
||||
<PostBuildEvent>
|
||||
</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -1,19 +1,19 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 9.00
|
||||
# Visual Studio 2005
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VSTool", "VSTool.csproj", "{96943E2D-1373-4617-A117-D0F997A94919}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{96943E2D-1373-4617-A117-D0F997A94919}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{96943E2D-1373-4617-A117-D0F997A94919}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{96943E2D-1373-4617-A117-D0F997A94919}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{96943E2D-1373-4617-A117-D0F997A94919}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
Microsoft Visual Studio Solution File, Format Version 9.00
|
||||
# Visual Studio 2005
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VSTool", "VSTool.csproj", "{96943E2D-1373-4617-A117-D0F997A94919}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{96943E2D-1373-4617-A117-D0F997A94919}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{96943E2D-1373-4617-A117-D0F997A94919}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{96943E2D-1373-4617-A117-D0F997A94919}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{96943E2D-1373-4617-A117-D0F997A94919}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user