Merge branch 'master' of https://github.com/RouterGray/SingularityViewer
This commit is contained in:
@@ -1933,38 +1933,6 @@
|
||||
<key>version</key>
|
||||
<string>7.11.1.297294</string>
|
||||
</map>
|
||||
<key>modernjson</key>
|
||||
<map>
|
||||
<key>copyright</key>
|
||||
<string>Copyright (c) 2013-2018 Niels Lohmann</string>
|
||||
<key>description</key>
|
||||
<string>JSON for Modern C++</string>
|
||||
<key>license</key>
|
||||
<string>MIT</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/modernjson.txt</string>
|
||||
<key>name</key>
|
||||
<string>modernjson</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>common</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>6f11eca7e2a6ca61f9217e949a64f026</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>https://depot.alchemyviewer.org/pub/common/lib/modernjson-3.2.0-common-201809210551.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>common</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>3.2.0</string>
|
||||
</map>
|
||||
<key>nvapi</key>
|
||||
<map>
|
||||
<key>copyright</key>
|
||||
|
||||
@@ -50,7 +50,6 @@ set(cmake_SOURCE_FILES
|
||||
GooglePerfTools.cmake
|
||||
Hunspell.cmake
|
||||
JPEG.cmake
|
||||
Json.cmake
|
||||
LLAddBuildTest.cmake
|
||||
LLAppearance.cmake
|
||||
LLAudio.cmake
|
||||
|
||||
@@ -15,10 +15,15 @@ FetchContent_Declare(
|
||||
GIT_REPOSITORY https://github.com/fmtlib/fmt.git
|
||||
GIT_TAG 6.1.2
|
||||
)
|
||||
FetchContent_Declare(
|
||||
nlohmann_json
|
||||
GIT_REPOSITORY https://github.com/nlohmann/json.git
|
||||
GIT_TAG v3.7.3
|
||||
)
|
||||
FetchContent_Declare(
|
||||
absl
|
||||
GIT_REPOSITORY https://github.com/abseil/abseil-cpp.git
|
||||
GIT_TAG 29235139149790f5afc430c11cec8f1eb1677607
|
||||
GIT_TAG 0033c9ea91a52ade7c6b725aa2ef3cbe15463421
|
||||
)
|
||||
|
||||
# This is a hack because absl has dumb cmake
|
||||
@@ -44,5 +49,14 @@ if(WINDOWS)
|
||||
FetchContent_MakeAvailable(fmt)
|
||||
endif()
|
||||
|
||||
# Typically you don't care so much for a third party library's tests to be
|
||||
# run from your own project's code.
|
||||
set(JSON_BuildTests OFF CACHE INTERNAL "")
|
||||
|
||||
# If you only include this third party in PRIVATE source files, you do not
|
||||
# need to install it when your main project gets installed.
|
||||
set(JSON_Install OFF CACHE INTERNAL "")
|
||||
FetchContent_MakeAvailable(nlohmann_json)
|
||||
|
||||
unset(CMAKE_FOLDER)
|
||||
unset(CMAKE_POSITION_INDEPENDENT_CODE)
|
||||
|
||||
@@ -12,7 +12,6 @@ include(Linking)
|
||||
include(Boost)
|
||||
include(OpenSSL)
|
||||
include(LLSharedLibs)
|
||||
include(Json)
|
||||
include(Copy3rdPartyLibs)
|
||||
include(ZLIB)
|
||||
include(URIPARSER)
|
||||
@@ -300,6 +299,7 @@ target_link_libraries(
|
||||
${Boost_SYSTEM_LIBRARY}
|
||||
${CORESERVICES_LIBRARY}
|
||||
${URIPARSER_LIBRARY}
|
||||
nlohmann_json::nlohmann_json
|
||||
${RT_LIBRARY}
|
||||
)
|
||||
|
||||
|
||||
@@ -18,7 +18,6 @@ include(FMODSTUDIO)
|
||||
include(GeneratePrecompiledHeader)
|
||||
include(GLOD)
|
||||
include(Hunspell)
|
||||
include(Json)
|
||||
include(LLAddBuildTest)
|
||||
include(LLAppearance)
|
||||
include(LLAudio)
|
||||
@@ -63,7 +62,6 @@ include_directories(
|
||||
${STATEMACHINE_INCLUDE_DIRS}
|
||||
${DBUSGLIB_INCLUDE_DIRS}
|
||||
${ZLIB_INCLUDE_DIRS}
|
||||
${JSON_INCLUDE_DIR}
|
||||
${GLOD_INCLUDE_DIR}
|
||||
${LLAUDIO_INCLUDE_DIRS}
|
||||
${LLCHARACTER_INCLUDE_DIRS}
|
||||
@@ -1710,6 +1708,7 @@ target_link_libraries(${VIEWER_BINARY_NAME}
|
||||
${LLAPPEARANCE_LIBRARIES}
|
||||
absl::flat_hash_map
|
||||
absl::node_hash_map
|
||||
nlohmann_json::nlohmann_json
|
||||
${FMT_LIBRARY}
|
||||
)
|
||||
|
||||
|
||||
@@ -58,6 +58,7 @@ LLFloaterInspect::LLFloaterInspect(const LLSD&)
|
||||
mDirty(FALSE)
|
||||
{
|
||||
mCommitCallbackRegistrar.add("Inspect.OwnerProfile", boost::bind(&LLFloaterInspect::onClickOwnerProfile, this));
|
||||
mCommitCallbackRegistrar.add("Inspect.LastOwnerProfile", boost::bind(&LLFloaterInspect::onClickLastOwnerProfile, this));
|
||||
mCommitCallbackRegistrar.add("Inspect.CreatorProfile", boost::bind(&LLFloaterInspect::onClickCreatorProfile, this));
|
||||
mCommitCallbackRegistrar.add("Inspect.SelectObject", boost::bind(&LLFloaterInspect::onSelectObject, this));
|
||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_inspect.xml");
|
||||
@@ -166,6 +167,36 @@ void LLFloaterInspect::onClickOwnerProfile()
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterInspect::onClickLastOwnerProfile()
|
||||
{
|
||||
if(mObjectList->getAllSelected().size() == 0) return;
|
||||
LLScrollListItem* first_selected =mObjectList->getFirstSelected();
|
||||
|
||||
if (first_selected)
|
||||
{
|
||||
LLUUID selected_id = first_selected->getUUID();
|
||||
struct f : public LLSelectedNodeFunctor
|
||||
{
|
||||
LLUUID obj_id;
|
||||
f(const LLUUID& id) : obj_id(id) {}
|
||||
virtual bool apply(LLSelectNode* node)
|
||||
{
|
||||
return (obj_id == node->getObject()->getID());
|
||||
}
|
||||
} func(selected_id);
|
||||
LLSelectNode* node = mObjectSelection->getFirstNode(&func);
|
||||
if(node)
|
||||
{
|
||||
const LLUUID& last_owner_id = node->mPermissions->getLastOwner();
|
||||
// [RLVa:KB] - Checked: 2010-08-25 (RLVa-1.2.2a) | Modified: RLVa-1.0.0e
|
||||
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES) || gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMETAGS))
|
||||
if (last_owner_id == node->mPermissions->getOwner()) return;
|
||||
// [/RLVa:KB]
|
||||
LLAvatarActions::showProfile(last_owner_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterInspect::onSelectObject()
|
||||
{
|
||||
if(LLFloaterInspect::getSelectedUUID() != LLUUID::null)
|
||||
|
||||
@@ -60,6 +60,7 @@ public:
|
||||
virtual void onFocusReceived();
|
||||
void onClickCreatorProfile();
|
||||
void onClickOwnerProfile();
|
||||
void onClickLastOwnerProfile();
|
||||
void onSelectObject();
|
||||
|
||||
LLScrollListCtrl* mObjectList;
|
||||
|
||||
@@ -148,7 +148,7 @@ S32 LLFloaterNameDesc::getExpectedUploadCost() const
|
||||
LLAssetType::EType asset_type = exten == "wav" ? LLAssetType::AT_SOUND
|
||||
: (exten == "anim" || exten == "bvh") ? LLAssetType::AT_ANIMATION
|
||||
: exten != "lsl" ? LLAssetType::AT_TEXTURE
|
||||
: asset_type = LLAssetType::AT_NONE;
|
||||
: LLAssetType::AT_NONE;
|
||||
S32 upload_cost = -1;
|
||||
|
||||
if (asset_type != LLAssetType::AT_NONE)
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
#include "llglheaders.h"
|
||||
#include "lldrawpoolterrain.h"
|
||||
#include "lldrawable.h"
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
extern LLPipeline gPipeline;
|
||||
extern bool gShiftFrame;
|
||||
@@ -371,6 +372,14 @@ void LLSurface::connectNeighbor(LLSurface* neighborp, U32 direction)
|
||||
// - Non-power-of-2 regions should work here, but the rest of the viewer code will probably choke on them.
|
||||
|
||||
surface_patch_ref patchp, neighbor_patchp;
|
||||
if (mNeighbors[direction] == neighborp)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (mNeighbors[direction])
|
||||
{
|
||||
mNeighbors[direction]->disconnectNeighbor(this, gDirOpposite[direction]);
|
||||
}
|
||||
mNeighbors[direction] = neighborp;
|
||||
|
||||
const S32 max_idx = mPatchesPerEdge - 1;
|
||||
@@ -480,33 +489,71 @@ void LLSurface::connectNeighbor(LLSurface* neighborp, U32 direction)
|
||||
}
|
||||
}
|
||||
|
||||
void LLSurface::disconnectNeighbor(LLSurface *surfacep)
|
||||
void LLSurface::disconnectNeighbor(LLSurface* surfacep, U32 direction)
|
||||
{
|
||||
S32 i;
|
||||
for (i = 0; i < 8; i++)
|
||||
if (surfacep && surfacep == mNeighbors[direction])
|
||||
{
|
||||
if (surfacep == mNeighbors[i])
|
||||
// Iterate through surface patches, removing any connectivity to removed surface.
|
||||
// Extra branches for debugging.
|
||||
if (!gHippoGridManager->getCurrentGrid()->isSecondLife())
|
||||
{
|
||||
mNeighbors[i] = NULL;
|
||||
for (auto& patchp : mPatchList)
|
||||
{
|
||||
patchp->disconnectNeighbor(surfacep);
|
||||
}
|
||||
}
|
||||
if (gHippoGridManager->getCurrentGrid()->isSecondLife())
|
||||
{
|
||||
for (auto& patchp : mPatchList)
|
||||
{
|
||||
patchp->disconnectNeighbor(surfacep);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Iterate through surface patches, removing any connectivity to removed surface.
|
||||
for (auto& patchp : mPatchList)
|
||||
{
|
||||
patchp->disconnectNeighbor(surfacep);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LLSurface::disconnectAllNeighbors()
|
||||
{
|
||||
// Pulled out of loop to debug.
|
||||
if (mNeighbors[EAST])
|
||||
{
|
||||
mNeighbors[EAST]->disconnectNeighbor(this, gDirOpposite[EAST]);
|
||||
}
|
||||
if (mNeighbors[NORTH])
|
||||
{
|
||||
mNeighbors[NORTH]->disconnectNeighbor(this, gDirOpposite[NORTH]);
|
||||
}
|
||||
if (mNeighbors[WEST])
|
||||
{
|
||||
mNeighbors[WEST]->disconnectNeighbor(this, gDirOpposite[WEST]);
|
||||
}
|
||||
if (mNeighbors[SOUTH])
|
||||
{
|
||||
mNeighbors[SOUTH]->disconnectNeighbor(this, gDirOpposite[SOUTH]);
|
||||
}
|
||||
if (mNeighbors[NORTHEAST])
|
||||
{
|
||||
mNeighbors[NORTHEAST]->disconnectNeighbor(this, gDirOpposite[NORTHEAST]);
|
||||
}
|
||||
if (mNeighbors[NORTHWEST])
|
||||
{
|
||||
mNeighbors[NORTHWEST]->disconnectNeighbor(this, gDirOpposite[NORTHWEST]);
|
||||
}
|
||||
if (mNeighbors[SOUTHWEST])
|
||||
{
|
||||
mNeighbors[SOUTHWEST]->disconnectNeighbor(this, gDirOpposite[SOUTHWEST]);
|
||||
}
|
||||
if (mNeighbors[SOUTHEAST])
|
||||
{
|
||||
mNeighbors[SOUTHEAST]->disconnectNeighbor(this, gDirOpposite[SOUTHEAST]);
|
||||
}
|
||||
S32 i;
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (mNeighbors[i])
|
||||
{
|
||||
mNeighbors[i]->disconnectNeighbor(this);
|
||||
//mNeighbors[i]->disconnectNeighbor(this);
|
||||
mNeighbors[i] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ public:
|
||||
void setOriginGlobal(const LLVector3d &origin_global);
|
||||
|
||||
void connectNeighbor(LLSurface *neighborp, U32 direction);
|
||||
void disconnectNeighbor(LLSurface *neighborp);
|
||||
void disconnectNeighbor(LLSurface *neighborp, U32 direction);
|
||||
void disconnectAllNeighbors();
|
||||
|
||||
// <FS:CR> Aurora Sim
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater can_close="true" can_drag_on_left="false" can_minimize="true" can_resize="true"
|
||||
min_height="300" min_width="400" name="inspect"
|
||||
min_height="300" min_width="480" name="inspect"
|
||||
rect_control="FloaterInspectRect" title="Inspect Objects">
|
||||
<scroll_list bottom="30" can_resize="false" column_padding="0" draw_heading="true"
|
||||
follows="top|right|left|bottom" left="10" multi_select="false"
|
||||
@@ -22,12 +22,19 @@
|
||||
<button bottom="5" follows="left|bottom" font="SansSerif" halign="center" height="20"
|
||||
label="See Owner Profile..." label_selected="" left="10"
|
||||
mouse_opaque="true" name="button owner"
|
||||
tool_tip="See profile of the highlighted object's owner" width="150" >
|
||||
tool_tip="See profile of the highlighted object's owner" width="152" >
|
||||
<button.commit_callback
|
||||
function="Inspect.OwnerProfile" />
|
||||
</button>
|
||||
<button bottom="5" follows="left|bottom" font="SansSerif" halign="center" height="20"
|
||||
label="See Creator Profile..." label_selected="" left="170"
|
||||
label="See Last Owner Profile..." label_selected="" left_delta="154"
|
||||
mouse_opaque="true" name="button last owner"
|
||||
tool_tip="See profile of the highlighted object's last owner" width="152" >
|
||||
<button.commit_callback
|
||||
function="Inspect.LastOwnerProfile" />
|
||||
</button>
|
||||
<button bottom="5" follows="left|bottom" font="SansSerif" halign="center" height="20"
|
||||
label="See Creator Profile..." label_selected="" left_delta="154"
|
||||
mouse_opaque="true" name="button creator"
|
||||
tool_tip="See profile of the highlighted object's original creator"
|
||||
width="150" >
|
||||
|
||||
@@ -3609,6 +3609,7 @@ If you continue to receive this message, please contact Second Life support for
|
||||
<string name="Debits">Debits</string>
|
||||
<string name="Total">Total</string>
|
||||
<string name="NoGroupDataFound">No group data found for group </string>
|
||||
<string name="AlreadyInGroup">You are already in this group </string>
|
||||
|
||||
<!-- floater IM bonus_info: When a Linden with Admin/god status receives a new IM this displays the estate (Mainland vs. teen grid) of the source avatar.
|
||||
This is to help Lindens when answering questions. -->
|
||||
|
||||
@@ -1147,13 +1147,13 @@ class LinuxManifest(ViewerManifest):
|
||||
|
||||
def is_packaging_viewer(self):
|
||||
super(LinuxManifest, self).is_packaging_viewer()
|
||||
return True # We always want a packaged viewer even without archive.
|
||||
return 'package' in self.args['actions']
|
||||
|
||||
|
||||
def do(self, *actions):
|
||||
super(LinuxManifest, self).do(*actions)
|
||||
if not 'package' in self.actions:
|
||||
self.package_finish() # Always finish the package.
|
||||
else:
|
||||
self.package_finish() # Always finish the package.
|
||||
if 'package' in self.actions:
|
||||
# package_finish() was called by super.do() so just create the TAR.
|
||||
self.create_archive()
|
||||
return self.file_list
|
||||
|
||||
Reference in New Issue
Block a user