diff options
29 files changed, 260 insertions, 273 deletions
diff --git a/linden/indra/lib/python/indra/util/llmanifest.py b/linden/indra/lib/python/indra/util/llmanifest.py index 369cc81..7a2505d 100644 --- a/linden/indra/lib/python/indra/util/llmanifest.py +++ b/linden/indra/lib/python/indra/util/llmanifest.py | |||
@@ -608,7 +608,7 @@ class LLManifest(object): | |||
608 | d = src_re.sub(d_template, s.replace('\\', '/')) | 608 | d = src_re.sub(d_template, s.replace('\\', '/')) |
609 | yield os.path.normpath(s), os.path.normpath(d) | 609 | yield os.path.normpath(s), os.path.normpath(d) |
610 | 610 | ||
611 | def path(self, src, dst=None): | 611 | def path(self, src, dst=None, required=True): |
612 | sys.stdout.write("Processing %s => %s ... " % (src, dst)) | 612 | sys.stdout.write("Processing %s => %s ... " % (src, dst)) |
613 | sys.stdout.flush() | 613 | sys.stdout.flush() |
614 | if src == None: | 614 | if src == None: |
@@ -625,9 +625,10 @@ class LLManifest(object): | |||
625 | assert(s != d) | 625 | assert(s != d) |
626 | count += self.process_file(s, d) | 626 | count += self.process_file(s, d) |
627 | else: | 627 | else: |
628 | # if we're specifying a single path (not a glob), | 628 | # if we're specifying a single path (not a glob), and |
629 | # we should error out if it doesn't exist | 629 | # it's required, error out if it doesn't exist |
630 | self.check_file_exists(src) | 630 | if required: |
631 | self.check_file_exists(src) | ||
631 | # if it's a directory, recurse through it | 632 | # if it's a directory, recurse through it |
632 | if os.path.isdir(src): | 633 | if os.path.isdir(src): |
633 | count += self.process_directory(src, dst) | 634 | count += self.process_directory(src, dst) |
diff --git a/linden/indra/llcommon/indra_constants.h b/linden/indra/llcommon/indra_constants.h index ae7863d..96c0a1f 100644 --- a/linden/indra/llcommon/indra_constants.h +++ b/linden/indra/llcommon/indra_constants.h | |||
@@ -102,7 +102,6 @@ const F32 DEFAULT_AGENT_HEIGHT = 1.9f; | |||
102 | const F32 MAX_AGENT_HEIGHT = 2.65f - 2.0f * COLLISION_TOLERANCE; | 102 | const F32 MAX_AGENT_HEIGHT = 2.65f - 2.0f * COLLISION_TOLERANCE; |
103 | 103 | ||
104 | // For linked sets | 104 | // For linked sets |
105 | const S32 MAX_CHILDREN_PER_TASK = 255; | ||
106 | const S32 MAX_CHILDREN_PER_PHYSICAL_TASK = 32; | 105 | const S32 MAX_CHILDREN_PER_PHYSICAL_TASK = 32; |
107 | 106 | ||
108 | const S32 MAX_JOINTS_PER_OBJECT = 1; // limiting to 1 until Havok 2.x | 107 | const S32 MAX_JOINTS_PER_OBJECT = 1; // limiting to 1 until Havok 2.x |
diff --git a/linden/indra/llcommon/llsecondlifeurls.cpp b/linden/indra/llcommon/llsecondlifeurls.cpp index d7de8d8..1669f7b 100644 --- a/linden/indra/llcommon/llsecondlifeurls.cpp +++ b/linden/indra/llcommon/llsecondlifeurls.cpp | |||
@@ -4,7 +4,7 @@ | |||
4 | * | 4 | * |
5 | * $LicenseInfo:firstyear=2005&license=viewergpl$ | 5 | * $LicenseInfo:firstyear=2005&license=viewergpl$ |
6 | * | 6 | * |
7 | * Copyright (c) 2005-2009, Linden Research, Inc. | 7 | * Copyright (c) 2005-2010, Linden Research, Inc. |
8 | * | 8 | * |
9 | * Second Life Viewer Source Code | 9 | * Second Life Viewer Source Code |
10 | * The source code in this file ("Source Code") is provided by Linden Lab | 10 | * The source code in this file ("Source Code") is provided by Linden Lab |
@@ -33,56 +33,15 @@ | |||
33 | #include "linden_common.h" | 33 | #include "linden_common.h" |
34 | #include "llsecondlifeurls.h" | 34 | #include "llsecondlifeurls.h" |
35 | 35 | ||
36 | const std::string CREATE_ACCOUNT_URL ( | ||
37 | "http://secondlife.com/registration/"); | ||
38 | |||
39 | const std::string MANAGE_ACCOUNT ( | ||
40 | "http://secondlife.com/account/"); | ||
41 | |||
42 | const std::string AUCTION_URL ( | 36 | const std::string AUCTION_URL ( |
43 | "http://secondlife.com/auctions/auction-detail.php?id="); | 37 | "http://secondlife.com/auctions/auction-detail.php?id="); |
44 | 38 | ||
45 | const std::string EVENTS_URL ( | 39 | const std::string EVENTS_URL ( |
46 | "http://secondlife.com/events/"); | 40 | "http://secondlife.com/events/"); |
47 | 41 | ||
48 | const std::string TIER_UP_URL ( | ||
49 | "http://secondlife.com/app/landtier"); | ||
50 | |||
51 | const std::string LAND_URL ( | ||
52 | "http://secondlife.com/app/landtier"); | ||
53 | |||
54 | const std::string UPGRADE_TO_PREMIUM_URL ( | ||
55 | "http://secondlife.com/app/upgrade/"); | ||
56 | |||
57 | const std::string DIRECTX_9_URL ( | ||
58 | "http://secondlife.com/support/"); | ||
59 | |||
60 | const std::string AMD_AGP_URL ( | ||
61 | "http://secondlife.com/support/"); | ||
62 | |||
63 | const std::string VIA_URL ( | ||
64 | "http://secondlife.com/support/"); | ||
65 | |||
66 | const std::string SUPPORT_URL ( | ||
67 | "http://secondlife.com/support/"); | ||
68 | |||
69 | const std::string INTEL_CHIPSET_URL ( | ||
70 | "http://secondlife.com/support/"); | ||
71 | |||
72 | const std::string SIS_CHIPSET_URL ( | ||
73 | "http://secondlife.com/support/"); | ||
74 | |||
75 | const std::string BLOGS_URL ( | ||
76 | "http://blog.secondlife.com/"); | ||
77 | |||
78 | const std::string BUY_CURRENCY_URL ( | 42 | const std::string BUY_CURRENCY_URL ( |
79 | "http://secondlife.com/app/currency/"); | 43 | "http://secondlife.com/app/currency/"); |
80 | 44 | ||
81 | const std::string LSL_DOC_URL ( | ||
82 | "http://secondlife.com/app/lsldoc/"); | ||
83 | |||
84 | const std::string SL_KB_URL ( | ||
85 | "http://secondlife.com/knowledgebase/"); | ||
86 | 45 | ||
87 | const std::string RELEASE_NOTES_BASE_URL ( | 46 | const std::string RELEASE_NOTES_BASE_URL ( |
88 | "http://imprudenceviewer.org/wiki/Release_Notes/"); | 47 | "http://imprudenceviewer.org/wiki/Release_Notes/"); \ No newline at end of file |
diff --git a/linden/indra/llcommon/llsecondlifeurls.h b/linden/indra/llcommon/llsecondlifeurls.h index 9fd75c3..9c64b57 100644 --- a/linden/indra/llcommon/llsecondlifeurls.h +++ b/linden/indra/llcommon/llsecondlifeurls.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * | 4 | * |
5 | * $LicenseInfo:firstyear=2004&license=viewergpl$ | 5 | * $LicenseInfo:firstyear=2004&license=viewergpl$ |
6 | * | 6 | * |
7 | * Copyright (c) 2004-2009, Linden Research, Inc. | 7 | * Copyright (c) 2004-2010, Linden Research, Inc. |
8 | * | 8 | * |
9 | * Second Life Viewer Source Code | 9 | * Second Life Viewer Source Code |
10 | * The source code in this file ("Source Code") is provided by Linden Lab | 10 | * The source code in this file ("Source Code") is provided by Linden Lab |
@@ -33,46 +33,14 @@ | |||
33 | #ifndef LL_LLSECONDLIFEURLS_H | 33 | #ifndef LL_LLSECONDLIFEURLS_H |
34 | #define LL_LLSECONDLIFEURLS_H | 34 | #define LL_LLSECONDLIFEURLS_H |
35 | 35 | ||
36 | // Account registration web page | ||
37 | extern const std::string CREATE_ACCOUNT_URL; | ||
38 | |||
39 | // Manage Account | ||
40 | extern const std::string MANAGE_ACCOUNT; | ||
41 | 36 | ||
42 | extern const std::string AUCTION_URL; | 37 | extern const std::string AUCTION_URL; |
43 | 38 | ||
44 | extern const std::string EVENTS_URL; | 39 | extern const std::string EVENTS_URL; |
45 | 40 | ||
46 | // Tier up to a new land level. | ||
47 | extern const std::string TIER_UP_URL; | ||
48 | |||
49 | // Tier up to a new land level. | ||
50 | extern const std::string LAND_URL; | ||
51 | |||
52 | // Upgrade from basic membership to premium membership | ||
53 | extern const std::string UPGRADE_TO_PREMIUM_URL; | ||
54 | |||
55 | // How to get DirectX 9 | ||
56 | extern const std::string DIRECTX_9_URL; | ||
57 | |||
58 | // Out of date VIA chipset | ||
59 | extern const std::string VIA_URL; | ||
60 | |||
61 | // Support URL | ||
62 | extern const std::string SUPPORT_URL; | ||
63 | |||
64 | // Linden Blogs page | ||
65 | extern const std::string BLOGS_URL; | ||
66 | |||
67 | // Currency page | 41 | // Currency page |
68 | extern const std::string BUY_CURRENCY_URL; | 42 | extern const std::string BUY_CURRENCY_URL; |
69 | 43 | ||
70 | // LSL script wiki | ||
71 | extern const std::string LSL_DOC_URL; | ||
72 | |||
73 | // SL KnowledgeBase page | ||
74 | extern const std::string SL_KB_URL; | ||
75 | |||
76 | // Release Notes Redirect URL for Server and Viewer | 44 | // Release Notes Redirect URL for Server and Viewer |
77 | extern const std::string RELEASE_NOTES_BASE_URL; | 45 | extern const std::string RELEASE_NOTES_BASE_URL; |
78 | 46 | ||
diff --git a/linden/indra/newview/app_settings/default_grids.xml b/linden/indra/newview/app_settings/default_grids.xml index 13293cf..f11f513 100644 --- a/linden/indra/newview/app_settings/default_grids.xml +++ b/linden/indra/newview/app_settings/default_grids.xml | |||
@@ -10,20 +10,6 @@ | |||
10 | <key>default_grids_version</key><string>0</string> | 10 | <key>default_grids_version</key><string>0</string> |
11 | </map> | 11 | </map> |
12 | 12 | ||
13 | <!-- Second Life --> | ||
14 | <map> | ||
15 | <key>gridnick</key><string>secondlife</string> | ||
16 | <key>gridname</key><string>Second Life</string> | ||
17 | <key>platform</key><string>SecondLife</string> | ||
18 | <key>loginuri</key><string>https://login.agni.lindenlab.com/cgi-bin/login.cgi</string> | ||
19 | <key>loginpage</key><string>http://secondlife.com/app/login/</string> | ||
20 | <key>helperuri</key><string>https://secondlife.com/helpers/</string> | ||
21 | <key>website</key><string>http://secondlife.com/</string> | ||
22 | <key>support</key><string>http://secondlife.com/support/</string> | ||
23 | <key>register</key><string>http://secondlife.com/registration/</string> | ||
24 | <key>password</key><string>http://secondlife.com/account/request.php</string> | ||
25 | </map> | ||
26 | |||
27 | <!-- Local Host --> | 13 | <!-- Local Host --> |
28 | <map> | 14 | <map> |
29 | <key>gridnick</key><string>localhost</string> | 15 | <key>gridnick</key><string>localhost</string> |
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml index 9c498c2..6643e43 100644 --- a/linden/indra/newview/app_settings/settings.xml +++ b/linden/indra/newview/app_settings/settings.xml | |||
@@ -6063,17 +6063,6 @@ | |||
6063 | <key>Value</key> | 6063 | <key>Value</key> |
6064 | <integer>0</integer> | 6064 | <integer>0</integer> |
6065 | </map> | 6065 | </map> |
6066 | <key>LoggedIntoOpenSim</key> | ||
6067 | <map> | ||
6068 | <key>Comment</key> | ||
6069 | <string>Check whether or not we're in an OpenSimulator (default 0)</string> | ||
6070 | <key>Persist</key> | ||
6071 | <integer>1</integer> | ||
6072 | <key>Type</key> | ||
6073 | <string>Boolean</string> | ||
6074 | <key>Value</key> | ||
6075 | <integer>0</integer> | ||
6076 | </map> | ||
6077 | <key>LoginAsGod</key> | 6066 | <key>LoginAsGod</key> |
6078 | <map> | 6067 | <map> |
6079 | <key>Comment</key> | 6068 | <key>Comment</key> |
@@ -12895,7 +12884,7 @@ | |||
12895 | <key>Type</key> | 12884 | <key>Type</key> |
12896 | <string>String</string> | 12885 | <string>String</string> |
12897 | <key>Value</key> | 12886 | <key>Value</key> |
12898 | <string>secondlife</string> | 12887 | <string>osgrid</string> |
12899 | </map> | 12888 | </map> |
12900 | <key>KeepAppearance</key> | 12889 | <key>KeepAppearance</key> |
12901 | <map> | 12890 | <map> |
diff --git a/linden/indra/newview/hippoGridManager.cpp b/linden/indra/newview/hippoGridManager.cpp index 9ff2d39..f96e3ec 100644 --- a/linden/indra/newview/hippoGridManager.cpp +++ b/linden/indra/newview/hippoGridManager.cpp | |||
@@ -485,13 +485,11 @@ std::string HippoGridInfo::sanitizeUri(std::string &uri) | |||
485 | 485 | ||
486 | void HippoGridInfo::initFallback() | 486 | void HippoGridInfo::initFallback() |
487 | { | 487 | { |
488 | FALLBACK_GRIDINFO.mGridNick = "secondlife"; | 488 | FALLBACK_GRIDINFO.mGridNick = "localhost"; |
489 | FALLBACK_GRIDINFO.setPlatform(PLATFORM_SECONDLIFE); | 489 | FALLBACK_GRIDINFO.setPlatform(PLATFORM_OPENSIM); |
490 | FALLBACK_GRIDINFO.setGridName("Second Life"); | 490 | FALLBACK_GRIDINFO.setGridName("Local Host"); |
491 | FALLBACK_GRIDINFO.setLoginUri("https://login.agni.lindenlab.com/cgi-bin/login.cgi"); | 491 | FALLBACK_GRIDINFO.setLoginUri("http://127.0.0.1:9000/"); |
492 | FALLBACK_GRIDINFO.setLoginPage("http://secondlife.com/app/login/"); | 492 | FALLBACK_GRIDINFO.setHelperUri("http://127.0.0.1:9000/"); |
493 | FALLBACK_GRIDINFO.setHelperUri("https://secondlife.com/helpers/"); | ||
494 | FALLBACK_GRIDINFO.setWebSite("http://secondlife.com/"); | ||
495 | } | 493 | } |
496 | 494 | ||
497 | 495 | ||
diff --git a/linden/indra/newview/hippoLimits.cpp b/linden/indra/newview/hippoLimits.cpp index dae81a6..96b3bee 100644 --- a/linden/indra/newview/hippoLimits.cpp +++ b/linden/indra/newview/hippoLimits.cpp | |||
@@ -33,13 +33,15 @@ void HippoLimits::setOpenSimLimits() | |||
33 | mMaxAgentGroups = 100; | 33 | mMaxAgentGroups = 100; |
34 | mMaxPrimScale = 256.0f; | 34 | mMaxPrimScale = 256.0f; |
35 | mMaxHeight = 10000.0f; | 35 | mMaxHeight = 10000.0f; |
36 | mMaxLinkedPrims = -1; | ||
37 | |||
36 | if (gHippoGridManager->getConnectedGrid()->isRenderCompat()) { | 38 | if (gHippoGridManager->getConnectedGrid()->isRenderCompat()) { |
37 | llinfos << "Using rendering compatible OpenSim limits." << llendl; | 39 | llinfos << "Using rendering compatible OpenSim limits." << llendl; |
38 | mMinHoleSize = 0.05f; | 40 | mMinHoleSize = 0.05f; |
39 | mMaxHollow = 0.95f; | 41 | mMaxHollow = 0.95f; |
40 | } else { | 42 | } else { |
41 | llinfos << "Using Hippo OpenSim limits." << llendl; | 43 | llinfos << "Using Hippo OpenSim limits." << llendl; |
42 | mMinHoleSize = 0.01f; | 44 | mMinHoleSize = 0.01f; |
43 | mMaxHollow = 0.99f; | 45 | mMaxHollow = 0.99f; |
44 | } | 46 | } |
45 | } | 47 | } |
@@ -52,5 +54,6 @@ void HippoLimits::setSecondLifeLimits() | |||
52 | mMaxHeight = 4096.0f; | 54 | mMaxHeight = 4096.0f; |
53 | mMinHoleSize = 0.05f; | 55 | mMinHoleSize = 0.05f; |
54 | mMaxHollow = 0.95f; | 56 | mMaxHollow = 0.95f; |
57 | mMaxLinkedPrims = 255; | ||
55 | } | 58 | } |
56 | 59 | ||
diff --git a/linden/indra/newview/hippoLimits.h b/linden/indra/newview/hippoLimits.h index 900480b..7152bcc 100644 --- a/linden/indra/newview/hippoLimits.h +++ b/linden/indra/newview/hippoLimits.h | |||
@@ -12,15 +12,18 @@ public: | |||
12 | float getMinHoleSize() const { return mMinHoleSize; } | 12 | float getMinHoleSize() const { return mMinHoleSize; } |
13 | float getMaxHollow() const { return mMaxHollow; } | 13 | float getMaxHollow() const { return mMaxHollow; } |
14 | float getMaxPrimScale() const { return mMaxPrimScale; } | 14 | float getMaxPrimScale() const { return mMaxPrimScale; } |
15 | S32 getMaxLinkedPrims() const { return mMaxLinkedPrims; } | ||
15 | 16 | ||
16 | void setLimits(); | 17 | void setLimits(); |
17 | 18 | ||
18 | private: | 19 | private: |
19 | int mMaxAgentGroups; | 20 | int mMaxAgentGroups; |
21 | |||
20 | float mMaxHeight; | 22 | float mMaxHeight; |
21 | float mMinHoleSize; | 23 | float mMinHoleSize; |
22 | float mMaxHollow; | 24 | float mMaxHollow; |
23 | float mMaxPrimScale; | 25 | float mMaxPrimScale; |
26 | S32 mMaxLinkedPrims; | ||
24 | 27 | ||
25 | void setOpenSimLimits(); | 28 | void setOpenSimLimits(); |
26 | void setSecondLifeLimits(); | 29 | void setSecondLifeLimits(); |
diff --git a/linden/indra/newview/llappviewer.cpp b/linden/indra/newview/llappviewer.cpp index ae2c294..a0700a9 100644 --- a/linden/indra/newview/llappviewer.cpp +++ b/linden/indra/newview/llappviewer.cpp | |||
@@ -1901,7 +1901,9 @@ bool LLAppViewer::initConfiguration() | |||
1901 | gHippoGridManager = new HippoGridManager(); | 1901 | gHippoGridManager = new HippoGridManager(); |
1902 | gHippoGridManager->init(); | 1902 | gHippoGridManager->init(); |
1903 | } | 1903 | } |
1904 | 1904 | if (!gHippoLimits) { | |
1905 | gHippoLimits = new HippoLimits(); | ||
1906 | } | ||
1905 | 1907 | ||
1906 | //initGridChoice(); | 1908 | //initGridChoice(); |
1907 | 1909 | ||
diff --git a/linden/indra/newview/llfloatergroups.cpp b/linden/indra/newview/llfloatergroups.cpp index 874249b..e94734d 100644 --- a/linden/indra/newview/llfloatergroups.cpp +++ b/linden/indra/newview/llfloatergroups.cpp | |||
@@ -58,6 +58,8 @@ | |||
58 | #include "llviewerwindow.h" | 58 | #include "llviewerwindow.h" |
59 | #include "llimview.h" | 59 | #include "llimview.h" |
60 | 60 | ||
61 | #include "hippoLimits.h" | ||
62 | |||
61 | // static | 63 | // static |
62 | std::map<const LLUUID, LLFloaterGroupPicker*> LLFloaterGroupPicker::sInstances; | 64 | std::map<const LLUUID, LLFloaterGroupPicker*> LLFloaterGroupPicker::sInstances; |
63 | 65 | ||
@@ -200,7 +202,7 @@ void LLPanelGroups::reset() | |||
200 | group_list->operateOnAll(LLCtrlListInterface::OP_DELETE); | 202 | group_list->operateOnAll(LLCtrlListInterface::OP_DELETE); |
201 | } | 203 | } |
202 | childSetTextArg("groupcount", "[COUNT]", llformat("%d",gAgent.mGroups.count())); | 204 | childSetTextArg("groupcount", "[COUNT]", llformat("%d",gAgent.mGroups.count())); |
203 | childSetTextArg("groupcount", "[MAX]", llformat("%d",MAX_AGENT_GROUPS)); | 205 | childSetTextArg("groupcount", "[MAX]", llformat("%d", gHippoLimits->getMaxAgentGroups())); |
204 | 206 | ||
205 | const std::string none_text = getString("none"); | 207 | const std::string none_text = getString("none"); |
206 | init_group_list(getChild<LLScrollListCtrl>("group list"), gAgent.getGroupID(), none_text); | 208 | init_group_list(getChild<LLScrollListCtrl>("group list"), gAgent.getGroupID(), none_text); |
@@ -212,7 +214,7 @@ BOOL LLPanelGroups::postBuild() | |||
212 | childSetCommitCallback("group list", onGroupList, this); | 214 | childSetCommitCallback("group list", onGroupList, this); |
213 | 215 | ||
214 | childSetTextArg("groupcount", "[COUNT]", llformat("%d",gAgent.mGroups.count())); | 216 | childSetTextArg("groupcount", "[COUNT]", llformat("%d",gAgent.mGroups.count())); |
215 | childSetTextArg("groupcount", "[MAX]", llformat("%d",MAX_AGENT_GROUPS)); | 217 | childSetTextArg("groupcount", "[MAX]", llformat("%d", gHippoLimits->getMaxAgentGroups())); |
216 | 218 | ||
217 | const std::string none_text = getString("none"); | 219 | const std::string none_text = getString("none"); |
218 | init_group_list(getChild<LLScrollListCtrl>("group list"), gAgent.getGroupID(), none_text); | 220 | init_group_list(getChild<LLScrollListCtrl>("group list"), gAgent.getGroupID(), none_text); |
@@ -270,7 +272,7 @@ void LLPanelGroups::enableButtons() | |||
270 | childDisable("IM"); | 272 | childDisable("IM"); |
271 | childDisable("Leave"); | 273 | childDisable("Leave"); |
272 | } | 274 | } |
273 | if(gAgent.mGroups.count() < MAX_AGENT_GROUPS) | 275 | if(gAgent.mGroups.count() < gHippoLimits->getMaxAgentGroups()) |
274 | { | 276 | { |
275 | childEnable("Create"); | 277 | childEnable("Create"); |
276 | } | 278 | } |
diff --git a/linden/indra/newview/llfloaterhtmlhelp.cpp b/linden/indra/newview/llfloaterhtmlhelp.cpp index 2a22a40..ff69394 100644 --- a/linden/indra/newview/llfloaterhtmlhelp.cpp +++ b/linden/indra/newview/llfloaterhtmlhelp.cpp | |||
@@ -54,6 +54,7 @@ | |||
54 | #include "llviewerparcelmedia.h" | 54 | #include "llviewerparcelmedia.h" |
55 | #include "llcombobox.h" | 55 | #include "llcombobox.h" |
56 | 56 | ||
57 | #include "hippoGridManager.h" | ||
57 | 58 | ||
58 | LLFloaterMediaBrowser::LLFloaterMediaBrowser(const LLSD& media_data) | 59 | LLFloaterMediaBrowser::LLFloaterMediaBrowser(const LLSD& media_data) |
59 | { | 60 | { |
@@ -454,22 +455,18 @@ void LLFloaterHtmlHelp::show(std::string url, std::string title) | |||
454 | LLFloaterHtml* floater_html = LLFloaterHtml::getInstance(); | 455 | LLFloaterHtml* floater_html = LLFloaterHtml::getInstance(); |
455 | floater_html->setVisible(FALSE); | 456 | floater_html->setVisible(FALSE); |
456 | 457 | ||
457 | if (url.empty()) | 458 | url = gHippoGridManager->getConnectedGrid()->getSupportUrl(); |
458 | { | 459 | if (!url.empty()) { |
459 | url = floater_html->getSupportUrl(); | 460 | if (gSavedSettings.getBOOL("UseExternalBrowser")) { |
460 | } | 461 | LLSD payload; |
461 | 462 | payload["url"] = url; | |
462 | if (gSavedSettings.getBOOL("UseExternalBrowser")) | 463 | LLNotifications::instance().add("ClickOpenF1Help", LLSD(), payload, onClickF1HelpLoadURL); |
463 | { | 464 | } else { |
464 | LLSD payload; | 465 | // don't wait, just do it |
465 | payload["url"] = url; | 466 | LLWeb::loadURL(url); |
466 | 467 | } | |
467 | LLNotifications::instance().add("ClickOpenF1Help", LLSD(), payload, onClickF1HelpLoadURL); | 468 | } else { |
468 | } | 469 | LLNotifications::instance().add("NoSupportUrl"); |
469 | else | ||
470 | { | ||
471 | // don't wait, just do it | ||
472 | LLWeb::loadURL(url); | ||
473 | } | 470 | } |
474 | } | 471 | } |
475 | 472 | ||
@@ -479,7 +476,12 @@ bool LLFloaterHtmlHelp::onClickF1HelpLoadURL(const LLSD& notification, const LLS | |||
479 | S32 option = LLNotification::getSelectedOption(notification, response); | 476 | S32 option = LLNotification::getSelectedOption(notification, response); |
480 | if (option == 0) | 477 | if (option == 0) |
481 | { | 478 | { |
482 | LLWeb::loadURL(notification["payload"]["url"].asString()); | 479 | const std::string &url = notification["payload"]["url"].asString(); |
480 | if (!url.empty()) { | ||
481 | LLWeb::loadURL(url); | ||
482 | } else { | ||
483 | llwarns << "Support URL not available." << llendl; | ||
484 | } | ||
483 | } | 485 | } |
484 | return false; | 486 | return false; |
485 | } | 487 | } |
diff --git a/linden/indra/newview/llfloatertools.cpp b/linden/indra/newview/llfloatertools.cpp index 5a7fdff..260872f 100644 --- a/linden/indra/newview/llfloatertools.cpp +++ b/linden/indra/newview/llfloatertools.cpp | |||
@@ -84,6 +84,8 @@ | |||
84 | #include "llvotree.h" | 84 | #include "llvotree.h" |
85 | #include "lluictrlfactory.h" | 85 | #include "lluictrlfactory.h" |
86 | 86 | ||
87 | #include "hippoLimits.h" | ||
88 | |||
87 | // Globals | 89 | // Globals |
88 | LLFloaterTools *gFloaterTools = NULL; | 90 | LLFloaterTools *gFloaterTools = NULL; |
89 | 91 | ||
@@ -1146,18 +1148,21 @@ void LLFloaterTools::onClickLink(void* data) | |||
1146 | LLNotifications::instance().add("UnableToLinkWhileDownloading"); | 1148 | LLNotifications::instance().add("UnableToLinkWhileDownloading"); |
1147 | return; | 1149 | return; |
1148 | } | 1150 | } |
1149 | 1151 | ||
1150 | S32 object_count = LLSelectMgr::getInstance()->getSelection()->getObjectCount(); | 1152 | S32 max_linked_prims = gHippoLimits->getMaxLinkedPrims(); |
1151 | if (object_count > MAX_CHILDREN_PER_TASK + 1) | 1153 | if (max_linked_prims > -1) |
1152 | { | 1154 | { |
1153 | LLSD args; | 1155 | S32 object_count = LLSelectMgr::getInstance()->getSelection()->getObjectCount(); |
1154 | args["COUNT"] = llformat("%d", object_count); | 1156 | if (object_count > max_linked_prims + 1) |
1155 | int max = MAX_CHILDREN_PER_TASK+1; | 1157 | { |
1156 | args["MAX"] = llformat("%d", max); | 1158 | LLSD args; |
1157 | LLNotifications::instance().add("UnableToLinkObjects", args); | 1159 | args["COUNT"] = llformat("%d", object_count); |
1158 | return; | 1160 | args["MAX"] = llformat("%d", max_linked_prims +1); |
1161 | LLNotifications::instance().add("UnableToLinkObjects", args); | ||
1162 | return; | ||
1163 | } | ||
1159 | } | 1164 | } |
1160 | 1165 | ||
1161 | if(LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() < 2) | 1166 | if(LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() < 2) |
1162 | { | 1167 | { |
1163 | LLNotifications::instance().add("CannotLinkIncompleteSet"); | 1168 | LLNotifications::instance().add("CannotLinkIncompleteSet"); |
diff --git a/linden/indra/newview/llmanipscale.cpp b/linden/indra/newview/llmanipscale.cpp index 65f99ef..969ee43 100644 --- a/linden/indra/newview/llmanipscale.cpp +++ b/linden/indra/newview/llmanipscale.cpp | |||
@@ -63,6 +63,8 @@ | |||
63 | #include "v2math.h" | 63 | #include "v2math.h" |
64 | #include "llvoavatar.h" | 64 | #include "llvoavatar.h" |
65 | 65 | ||
66 | #include "hippoLimits.h" | ||
67 | |||
66 | 68 | ||
67 | const F32 MAX_MANIP_SELECT_DISTANCE_SQUARED = 11.f * 11.f; | 69 | const F32 MAX_MANIP_SELECT_DISTANCE_SQUARED = 11.f * 11.f; |
68 | const F32 SNAP_GUIDE_SCREEN_OFFSET = 0.05f; | 70 | const F32 SNAP_GUIDE_SCREEN_OFFSET = 0.05f; |
@@ -70,8 +72,6 @@ const F32 SNAP_GUIDE_SCREEN_LENGTH = 0.7f; | |||
70 | const F32 SELECTED_MANIPULATOR_SCALE = 1.2f; | 72 | const F32 SELECTED_MANIPULATOR_SCALE = 1.2f; |
71 | const F32 MANIPULATOR_SCALE_HALF_LIFE = 0.07f; | 73 | const F32 MANIPULATOR_SCALE_HALF_LIFE = 0.07f; |
72 | const S32 NUM_MANIPULATORS = 14; | 74 | const S32 NUM_MANIPULATORS = 14; |
73 | const F32 DEFAULT_LL_MAX_PRIM_SCALE = 10.f; | ||
74 | const F32 DEFAULT_OPENSIM_MAX_PRIM_SCALE = 128.f; | ||
75 | 75 | ||
76 | const LLManip::EManipPart MANIPULATOR_IDS[NUM_MANIPULATORS] = | 76 | const LLManip::EManipPart MANIPULATOR_IDS[NUM_MANIPULATORS] = |
77 | { | 77 | { |
@@ -176,7 +176,6 @@ LLManipScale::LLManipScale( LLToolComposite* composite ) | |||
176 | mScaledBoxHandleSize( 1.f ), | 176 | mScaledBoxHandleSize( 1.f ), |
177 | mLastMouseX( -1 ), | 177 | mLastMouseX( -1 ), |
178 | mLastMouseY( -1 ), | 178 | mLastMouseY( -1 ), |
179 | mMaxPrimSize(0.f), | ||
180 | mSendUpdateOnMouseUp( FALSE ), | 179 | mSendUpdateOnMouseUp( FALSE ), |
181 | mLastUpdateFlags( 0 ), | 180 | mLastUpdateFlags( 0 ), |
182 | mScaleSnapUnit1(1.f), | 181 | mScaleSnapUnit1(1.f), |
@@ -205,7 +204,6 @@ void LLManipScale::render() | |||
205 | LLGLDepthTest gls_depth(GL_TRUE); | 204 | LLGLDepthTest gls_depth(GL_TRUE); |
206 | LLGLEnable gl_blend(GL_BLEND); | 205 | LLGLEnable gl_blend(GL_BLEND); |
207 | LLGLEnable gls_alpha_test(GL_ALPHA_TEST); | 206 | LLGLEnable gls_alpha_test(GL_ALPHA_TEST); |
208 | mMaxPrimSize = gSavedSettings.getBOOL("LoggedIntoOpenSim") ? DEFAULT_OPENSIM_MAX_PRIM_SCALE : DEFAULT_LL_MAX_PRIM_SCALE; | ||
209 | 207 | ||
210 | if( canAffectSelection() ) | 208 | if( canAffectSelection() ) |
211 | { | 209 | { |
@@ -957,8 +955,9 @@ void LLManipScale::dragCorner( S32 x, S32 y ) | |||
957 | mInSnapRegime = FALSE; | 955 | mInSnapRegime = FALSE; |
958 | } | 956 | } |
959 | 957 | ||
960 | F32 max_scale_factor = mMaxPrimSize / MIN_PRIM_SCALE; | 958 | F32 maxScale = gHippoLimits->getMaxPrimScale(); |
961 | F32 min_scale_factor = MIN_PRIM_SCALE / mMaxPrimSize; | 959 | F32 max_scale_factor = maxScale / MIN_PRIM_SCALE; |
960 | F32 min_scale_factor = MIN_PRIM_SCALE / maxScale; | ||
962 | 961 | ||
963 | // find max and min scale factors that will make biggest object hit max absolute scale and smallest object hit min absolute scale | 962 | // find max and min scale factors that will make biggest object hit max absolute scale and smallest object hit min absolute scale |
964 | for (LLObjectSelection::iterator iter = mObjectSelection->begin(); | 963 | for (LLObjectSelection::iterator iter = mObjectSelection->begin(); |
@@ -970,7 +969,7 @@ void LLManipScale::dragCorner( S32 x, S32 y ) | |||
970 | { | 969 | { |
971 | const LLVector3& scale = selectNode->mSavedScale; | 970 | const LLVector3& scale = selectNode->mSavedScale; |
972 | 971 | ||
973 | F32 cur_max_scale_factor = llmin( mMaxPrimSize / scale.mV[VX], mMaxPrimSize / scale.mV[VY], mMaxPrimSize / scale.mV[VZ] ); | 972 | F32 cur_max_scale_factor = llmin( maxScale / scale.mV[VX], maxScale / scale.mV[VY], maxScale / scale.mV[VZ] ); |
974 | max_scale_factor = llmin( max_scale_factor, cur_max_scale_factor ); | 973 | max_scale_factor = llmin( max_scale_factor, cur_max_scale_factor ); |
975 | 974 | ||
976 | F32 cur_min_scale_factor = llmax( MIN_PRIM_SCALE / scale.mV[VX], MIN_PRIM_SCALE / scale.mV[VY], MIN_PRIM_SCALE / scale.mV[VZ] ); | 975 | F32 cur_min_scale_factor = llmax( MIN_PRIM_SCALE / scale.mV[VX], MIN_PRIM_SCALE / scale.mV[VY], MIN_PRIM_SCALE / scale.mV[VZ] ); |
@@ -1267,7 +1266,8 @@ void LLManipScale::stretchFace( const LLVector3& drag_start_agent, const LLVecto | |||
1267 | 1266 | ||
1268 | F32 denom = axis * dir_local; | 1267 | F32 denom = axis * dir_local; |
1269 | F32 desired_delta_size = is_approx_zero(denom) ? 0.f : (delta_local_mag / denom); // in meters | 1268 | F32 desired_delta_size = is_approx_zero(denom) ? 0.f : (delta_local_mag / denom); // in meters |
1270 | F32 desired_scale = llclamp(selectNode->mSavedScale.mV[axis_index] + desired_delta_size, MIN_PRIM_SCALE, mMaxPrimSize); | 1269 | F32 desired_scale = llclamp(selectNode->mSavedScale.mV[axis_index] + desired_delta_size, MIN_PRIM_SCALE, |
1270 | gHippoLimits->getMaxPrimScale()); | ||
1271 | // propagate scale constraint back to position offset | 1271 | // propagate scale constraint back to position offset |
1272 | desired_delta_size = desired_scale - selectNode->mSavedScale.mV[axis_index]; // propagate constraint back to position | 1272 | desired_delta_size = desired_scale - selectNode->mSavedScale.mV[axis_index]; // propagate constraint back to position |
1273 | 1273 | ||
@@ -1967,7 +1967,7 @@ F32 LLManipScale::partToMaxScale( S32 part, const LLBBox &bbox ) const | |||
1967 | max_extent = bbox_extents.mV[i]; | 1967 | max_extent = bbox_extents.mV[i]; |
1968 | } | 1968 | } |
1969 | } | 1969 | } |
1970 | max_scale_factor = bbox_extents.magVec() * mMaxPrimSize / max_extent; | 1970 | max_scale_factor = bbox_extents.magVec() * gHippoLimits->getMaxPrimScale() / max_extent; |
1971 | 1971 | ||
1972 | if (getUniform()) | 1972 | if (getUniform()) |
1973 | { | 1973 | { |
@@ -1982,7 +1982,7 @@ F32 LLManipScale::partToMinScale( S32 part, const LLBBox &bbox ) const | |||
1982 | { | 1982 | { |
1983 | LLVector3 bbox_extents = unitVectorToLocalBBoxExtent( partToUnitVector( part ), bbox ); | 1983 | LLVector3 bbox_extents = unitVectorToLocalBBoxExtent( partToUnitVector( part ), bbox ); |
1984 | bbox_extents.abs(); | 1984 | bbox_extents.abs(); |
1985 | F32 min_extent = mMaxPrimSize; | 1985 | F32 min_extent = gHippoLimits->getMaxPrimScale(); |
1986 | for (U32 i = VX; i <= VZ; i++) | 1986 | for (U32 i = VX; i <= VZ; i++) |
1987 | { | 1987 | { |
1988 | if (bbox_extents.mV[i] > 0.f && bbox_extents.mV[i] < min_extent) | 1988 | if (bbox_extents.mV[i] > 0.f && bbox_extents.mV[i] < min_extent) |
@@ -2057,13 +2057,3 @@ BOOL LLManipScale::canAffectSelection() | |||
2057 | } | 2057 | } |
2058 | return can_scale; | 2058 | return can_scale; |
2059 | } | 2059 | } |
2060 | |||
2061 | //static | ||
2062 | F32 LLManipScale::getMaxPrimSize() | ||
2063 | { | ||
2064 | if (gSavedSettings.getBOOL("LoggedIntoOpenSim")) | ||
2065 | { | ||
2066 | return DEFAULT_OPENSIM_MAX_PRIM_SCALE; | ||
2067 | } | ||
2068 | return DEFAULT_LL_MAX_PRIM_SCALE; | ||
2069 | } | ||
diff --git a/linden/indra/newview/llmanipscale.h b/linden/indra/newview/llmanipscale.h index c6545fd..1de0459 100644 --- a/linden/indra/newview/llmanipscale.h +++ b/linden/indra/newview/llmanipscale.h | |||
@@ -89,8 +89,6 @@ public: | |||
89 | static void setShowAxes( BOOL b ); | 89 | static void setShowAxes( BOOL b ); |
90 | static BOOL getShowAxes(); | 90 | static BOOL getShowAxes(); |
91 | 91 | ||
92 | static F32 getMaxPrimSize(); | ||
93 | |||
94 | private: | 92 | private: |
95 | void renderCorners( const LLBBox& local_bbox ); | 93 | void renderCorners( const LLBBox& local_bbox ); |
96 | void renderFaces( const LLBBox& local_bbox ); | 94 | void renderFaces( const LLBBox& local_bbox ); |
@@ -168,7 +166,6 @@ private: | |||
168 | F32 mScaleSnapValue; | 166 | F32 mScaleSnapValue; |
169 | BOOL mInSnapRegime; | 167 | BOOL mInSnapRegime; |
170 | F32* mManipulatorScales; | 168 | F32* mManipulatorScales; |
171 | F32 mMaxPrimSize; | ||
172 | }; | 169 | }; |
173 | 170 | ||
174 | #endif // LL_MANIPSCALE_H | 171 | #endif // LL_MANIPSCALE_H |
diff --git a/linden/indra/newview/llmaniptranslate.cpp b/linden/indra/newview/llmaniptranslate.cpp index 8d23e40..1362f0a 100644 --- a/linden/indra/newview/llmaniptranslate.cpp +++ b/linden/indra/newview/llmaniptranslate.cpp | |||
@@ -66,6 +66,8 @@ | |||
66 | #include "llui.h" | 66 | #include "llui.h" |
67 | #include "pipeline.h" | 67 | #include "pipeline.h" |
68 | 68 | ||
69 | #include "hippoLimits.h" | ||
70 | |||
69 | const S32 NUM_AXES = 3; | 71 | const S32 NUM_AXES = 3; |
70 | const S32 MOUSE_DRAG_SLOP = 2; // pixels | 72 | const S32 MOUSE_DRAG_SLOP = 2; // pixels |
71 | const F32 HANDLE_HIDE_ANGLE = 0.15f; // radians | 73 | const F32 HANDLE_HIDE_ANGLE = 0.15f; // radians |
@@ -731,9 +733,10 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask) | |||
731 | } | 733 | } |
732 | 734 | ||
733 | // For safety, cap heights where objects can be dragged | 735 | // For safety, cap heights where objects can be dragged |
734 | if (new_position_global.mdV[VZ] > MAX_OBJECT_Z) | 736 | float maxHeight = gHippoLimits->getMaxHeight(); |
737 | if (new_position_global.mdV[VZ] > maxHeight) | ||
735 | { | 738 | { |
736 | new_position_global.mdV[VZ] = MAX_OBJECT_Z; | 739 | new_position_global.mdV[VZ] = maxHeight; |
737 | } | 740 | } |
738 | 741 | ||
739 | // Grass is always drawn on the ground, so clamp its position to the ground | 742 | // Grass is always drawn on the ground, so clamp its position to the ground |
diff --git a/linden/indra/newview/llpanellogin.cpp b/linden/indra/newview/llpanellogin.cpp index e0acd34..df5601a 100644 --- a/linden/indra/newview/llpanellogin.cpp +++ b/linden/indra/newview/llpanellogin.cpp | |||
@@ -37,6 +37,8 @@ | |||
37 | #include "llpanelgeneral.h" | 37 | #include "llpanelgeneral.h" |
38 | 38 | ||
39 | #include "hippoGridManager.h" | 39 | #include "hippoGridManager.h" |
40 | #include "hippoLimits.h" | ||
41 | |||
40 | #include "floaterlogin.h" | 42 | #include "floaterlogin.h" |
41 | 43 | ||
42 | #include "indra_constants.h" // for key and mask constants | 44 | #include "indra_constants.h" // for key and mask constants |
@@ -460,7 +462,7 @@ BOOL LLPanelLogin::handleKeyHere(KEY key, MASK mask) | |||
460 | if ( KEY_F1 == key ) | 462 | if ( KEY_F1 == key ) |
461 | { | 463 | { |
462 | llinfos << "Spawning HTML help window" << llendl; | 464 | llinfos << "Spawning HTML help window" << llendl; |
463 | LLFloaterMediaBrowser::helpF1(); | 465 | gViewerHtmlHelp.show(); |
464 | return TRUE; | 466 | return TRUE; |
465 | } | 467 | } |
466 | 468 | ||
@@ -634,7 +636,23 @@ void LLPanelLogin::addServer(const std::string& server) | |||
634 | } | 636 | } |
635 | else | 637 | else |
636 | { | 638 | { |
637 | std::string last_grid = gSavedSettings.getString("LastSelectedGrid"); | 639 | std::string last_grid = gSavedSettings.getString("CmdLineGridChoice");//imprudence TODO:errorcheck |
640 | std::string cmd_line_login_uri = gSavedSettings.getLLSD("CmdLineLoginURI").asString(); | ||
641 | if (!last_grid.empty()&& cmd_line_login_uri.empty())//don't use --grid if --loginuri is also given | ||
642 | { | ||
643 | //give user chance to change their mind, even with --grid set | ||
644 | gSavedSettings.setString("CmdLineGridChoice",""); | ||
645 | } | ||
646 | else if (!cmd_line_login_uri.empty()) | ||
647 | { | ||
648 | last_grid = cmd_line_login_uri; | ||
649 | //also clear --grid no matter if it was given | ||
650 | gSavedSettings.setString("CmdLineGridChoice",""); | ||
651 | } | ||
652 | else if (last_grid.empty()) | ||
653 | { | ||
654 | last_grid = gSavedSettings.getString("LastSelectedGrid"); | ||
655 | } | ||
638 | if (last_grid.empty()) last_grid = defaultGrid; | 656 | if (last_grid.empty()) last_grid = defaultGrid; |
639 | grids->setSimple(last_grid); | 657 | grids->setSimple(last_grid); |
640 | } | 658 | } |
@@ -826,8 +844,9 @@ void LLPanelLogin::loadLoginPage() | |||
826 | } | 844 | } |
827 | 845 | ||
828 | // Channel and Version | 846 | // Channel and Version |
829 | std::string version = llformat("%d.%d.%d (%d)", | 847 | std::string version = llformat("%d.%d.%d %s", |
830 | LL_VERSION_MAJOR, LL_VERSION_MINOR, LL_VERSION_PATCH, LL_VIEWER_BUILD); | 848 | IMP_VERSION_MAJOR, IMP_VERSION_MINOR, |
849 | IMP_VERSION_PATCH, IMP_VERSION_TEST); | ||
831 | 850 | ||
832 | char* curl_channel = curl_escape(gSavedSettings.getString("VersionChannelName").c_str(), 0); | 851 | char* curl_channel = curl_escape(gSavedSettings.getString("VersionChannelName").c_str(), 0); |
833 | char* curl_version = curl_escape(version.c_str(), 0); | 852 | char* curl_version = curl_escape(version.c_str(), 0); |
@@ -875,17 +894,17 @@ void LLPanelLogin::loadLoginPage() | |||
875 | location = "home"; | 894 | location = "home"; |
876 | } | 895 | } |
877 | } | 896 | } |
878 | 897 | ||
879 | std::string firstname, lastname; | 898 | std::string firstname, lastname; |
880 | 899 | ||
881 | if(gSavedSettings.getLLSD("UserLoginInfo").size() == 3) | 900 | if(gSavedSettings.getLLSD("UserLoginInfo").size() == 3) |
882 | { | 901 | { |
883 | LLSD cmd_line_login = gSavedSettings.getLLSD("UserLoginInfo"); | 902 | LLSD cmd_line_login = gSavedSettings.getLLSD("UserLoginInfo"); |
884 | firstname = cmd_line_login[0].asString(); | 903 | firstname = cmd_line_login[0].asString(); |
885 | lastname = cmd_line_login[1].asString(); | 904 | lastname = cmd_line_login[1].asString(); |
886 | password = cmd_line_login[2].asString(); | 905 | password = cmd_line_login[2].asString(); |
887 | } | 906 | } |
888 | 907 | ||
889 | if (firstname.empty()) | 908 | if (firstname.empty()) |
890 | { | 909 | { |
891 | firstname = gSavedSettings.getString("FirstName"); | 910 | firstname = gSavedSettings.getString("FirstName"); |
@@ -998,8 +1017,7 @@ bool LLPanelLogin::newAccountAlertCallback(const LLSD& notification, const LLSD& | |||
998 | S32 option = LLNotification::getSelectedOption(notification, response); | 1017 | S32 option = LLNotification::getSelectedOption(notification, response); |
999 | if (0 == option) | 1018 | if (0 == option) |
1000 | { | 1019 | { |
1001 | llinfos << "Going to account creation URL" << llendl; | 1020 | onClickNewAccount(0); |
1002 | LLWeb::loadURLExternal( CREATE_ACCOUNT_URL ); | ||
1003 | } | 1021 | } |
1004 | else | 1022 | else |
1005 | { | 1023 | { |
@@ -1012,7 +1030,14 @@ bool LLPanelLogin::newAccountAlertCallback(const LLSD& notification, const LLSD& | |||
1012 | // static | 1030 | // static |
1013 | void LLPanelLogin::onClickNewAccount(void*) | 1031 | void LLPanelLogin::onClickNewAccount(void*) |
1014 | { | 1032 | { |
1015 | LLWeb::loadURLExternal( CREATE_ACCOUNT_URL ); | 1033 | const std::string &url = gHippoGridManager->getConnectedGrid()->getRegisterUrl(); |
1034 | if (!url.empty()) { | ||
1035 | llinfos << "Going to account creation URL." << llendl; | ||
1036 | LLWeb::loadURLExternal(url); | ||
1037 | } else { | ||
1038 | llinfos << "Account creation URL is empty." << llendl; | ||
1039 | sInstance->setFocus(TRUE); | ||
1040 | } | ||
1016 | } | 1041 | } |
1017 | 1042 | ||
1018 | 1043 | ||
@@ -1043,7 +1068,12 @@ void LLPanelLogin::onClickForgotPassword(void*) | |||
1043 | { | 1068 | { |
1044 | if (sInstance ) | 1069 | if (sInstance ) |
1045 | { | 1070 | { |
1046 | LLWeb::loadURLExternal(sInstance->getString( "forgot_password_url" )); | 1071 | const std::string &url = gHippoGridManager->getConnectedGrid()->getPasswordUrl(); |
1072 | if (!url.empty()) { | ||
1073 | LLWeb::loadURLExternal(url); | ||
1074 | } else { | ||
1075 | llwarns << "Link for 'forgotton password' not set." << llendl; | ||
1076 | } | ||
1047 | } | 1077 | } |
1048 | } | 1078 | } |
1049 | 1079 | ||
@@ -1082,7 +1112,8 @@ void LLPanelLogin::onSelectServer(LLUICtrl* ctrl, void*) | |||
1082 | // //childSetText("gridname", gridInfo->getGridName()); | 1112 | // //childSetText("gridname", gridInfo->getGridName()); |
1083 | // LLPanelLogin::setFields( gridInfo->getFirstName(), gridInfo->getLastName(), gridInfo->getAvatarPassword(), 1 ); | 1113 | // LLPanelLogin::setFields( gridInfo->getFirstName(), gridInfo->getLastName(), gridInfo->getAvatarPassword(), 1 ); |
1084 | // } | 1114 | // } |
1085 | 1115 | if (mCurGrid == gHippoGridManager->getConnectedGrid()->getGridNick()) | |
1116 | gHippoLimits->setLimits(); | ||
1086 | 1117 | ||
1087 | llwarns << "current grid = " << mCurGrid << llendl; | 1118 | llwarns << "current grid = " << mCurGrid << llendl; |
1088 | 1119 | ||
diff --git a/linden/indra/newview/llpanelobject.cpp b/linden/indra/newview/llpanelobject.cpp index 40dc211..460611a 100644 --- a/linden/indra/newview/llpanelobject.cpp +++ b/linden/indra/newview/llpanelobject.cpp | |||
@@ -79,7 +79,7 @@ | |||
79 | // [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g) | 79 | // [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g) |
80 | #include "llvoavatar.h" | 80 | #include "llvoavatar.h" |
81 | // [/RLVa:KB] | 81 | // [/RLVa:KB] |
82 | 82 | #include "hippoLimits.h" | |
83 | // | 83 | // |
84 | // Constants | 84 | // Constants |
85 | // | 85 | // |
@@ -426,6 +426,8 @@ void LLPanelObject::getState( ) | |||
426 | mCtrlPosY->setEnabled(enable_move); | 426 | mCtrlPosY->setEnabled(enable_move); |
427 | mCtrlPosZ->setEnabled(enable_move); | 427 | mCtrlPosZ->setEnabled(enable_move); |
428 | 428 | ||
429 | mCtrlPosZ->setMaxValue(gHippoLimits->getMaxHeight()); | ||
430 | |||
429 | if (enable_scale) | 431 | if (enable_scale) |
430 | { | 432 | { |
431 | vec = objectp->getScale(); | 433 | vec = objectp->getScale(); |
@@ -632,9 +634,9 @@ void LLPanelObject::getState( ) | |||
632 | } | 634 | } |
633 | else | 635 | else |
634 | { | 636 | { |
635 | mCtrlScaleX->setMaxValue(LLManipScale::getMaxPrimSize()); | 637 | mCtrlScaleX->setMaxValue(gHippoLimits->getMaxPrimScale()); |
636 | mCtrlScaleY->setMaxValue(LLManipScale::getMaxPrimSize()); | 638 | mCtrlScaleY->setMaxValue(gHippoLimits->getMaxPrimScale()); |
637 | mCtrlScaleZ->setMaxValue(LLManipScale::getMaxPrimSize()); | 639 | mCtrlScaleZ->setMaxValue(gHippoLimits->getMaxPrimScale()); |
638 | 640 | ||
639 | // Only allowed to change these parameters for objects | 641 | // Only allowed to change these parameters for objects |
640 | // that you have permissions on AND are not attachments. | 642 | // that you have permissions on AND are not attachments. |
@@ -993,9 +995,9 @@ void LLPanelObject::getState( ) | |||
993 | mSpinScaleY->set( scale_y ); | 995 | mSpinScaleY->set( scale_y ); |
994 | calcp->setVar(LLCalc::X_HOLE, scale_x); | 996 | calcp->setVar(LLCalc::X_HOLE, scale_x); |
995 | calcp->setVar(LLCalc::Y_HOLE, scale_y); | 997 | calcp->setVar(LLCalc::Y_HOLE, scale_y); |
996 | mSpinScaleX->setMinValue(OBJECT_MIN_HOLE_SIZE); | 998 | mSpinScaleX->setMinValue(gHippoLimits->getMinHoleSize()); |
997 | mSpinScaleX->setMaxValue(OBJECT_MAX_HOLE_SIZE_X); | 999 | mSpinScaleX->setMaxValue(OBJECT_MAX_HOLE_SIZE_X); |
998 | mSpinScaleY->setMinValue(OBJECT_MIN_HOLE_SIZE); | 1000 | mSpinScaleY->setMinValue(gHippoLimits->getMinHoleSize()); |
999 | mSpinScaleY->setMaxValue(OBJECT_MAX_HOLE_SIZE_Y); | 1001 | mSpinScaleY->setMaxValue(OBJECT_MAX_HOLE_SIZE_Y); |
1000 | break; | 1002 | break; |
1001 | default: | 1003 | default: |
@@ -1031,7 +1033,7 @@ void LLPanelObject::getState( ) | |||
1031 | else | 1033 | else |
1032 | { | 1034 | { |
1033 | mSpinHollow->setMinValue(0.f); | 1035 | mSpinHollow->setMinValue(0.f); |
1034 | mSpinHollow->setMaxValue(95.f); | 1036 | mSpinHollow->setMaxValue(gHippoLimits->getMaxHollow() * 100.0f); |
1035 | } | 1037 | } |
1036 | 1038 | ||
1037 | // Update field enablement | 1039 | // Update field enablement |
@@ -1583,11 +1585,11 @@ void LLPanelObject::getVolumeParams(LLVolumeParams& volume_params) | |||
1583 | { | 1585 | { |
1584 | scale_x = llclamp( | 1586 | scale_x = llclamp( |
1585 | scale_x, | 1587 | scale_x, |
1586 | OBJECT_MIN_HOLE_SIZE, | 1588 | gHippoLimits->getMinHoleSize(), |
1587 | OBJECT_MAX_HOLE_SIZE_X); | 1589 | OBJECT_MAX_HOLE_SIZE_X); |
1588 | scale_y = llclamp( | 1590 | scale_y = llclamp( |
1589 | scale_y, | 1591 | scale_y, |
1590 | OBJECT_MIN_HOLE_SIZE, | 1592 | gHippoLimits->getMinHoleSize(), |
1591 | OBJECT_MAX_HOLE_SIZE_Y); | 1593 | OBJECT_MAX_HOLE_SIZE_Y); |
1592 | 1594 | ||
1593 | // Limit radius offset, based on taper and hole size y. | 1595 | // Limit radius offset, based on taper and hole size y. |
diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp index 20b14af..9073874 100644 --- a/linden/indra/newview/llstartup.cpp +++ b/linden/indra/newview/llstartup.cpp | |||
@@ -491,7 +491,10 @@ bool idle_startup() | |||
491 | 491 | ||
492 | // TODO parameterize | 492 | // TODO parameterize |
493 | const F32 circuit_heartbeat_interval = 5; | 493 | const F32 circuit_heartbeat_interval = 5; |
494 | const F32 circuit_timeout = 100; | 494 | const F32 circuit_timeout = 180; //seconds until llcircuit decides |
495 | //it isn't alive. | ||
496 | //Since we are on OpenSim we need to | ||
497 | //relax about 'bad' ping. Was for SL: 100; | ||
495 | 498 | ||
496 | const LLUseCircuitCodeResponder* responder = NULL; | 499 | const LLUseCircuitCodeResponder* responder = NULL; |
497 | bool failure_is_fatal = true; | 500 | bool failure_is_fatal = true; |
@@ -683,9 +686,9 @@ bool idle_startup() | |||
683 | show_connect_box = | 686 | show_connect_box = |
684 | firstname.empty() || lastname.empty() || web_login_key.isNull(); | 687 | firstname.empty() || lastname.empty() || web_login_key.isNull(); |
685 | } | 688 | } |
686 | else if((gSavedSettings.getLLSD("UserLoginInfo").size() == 3) && !LLStartUp::shouldAutoLogin()) | 689 | else if((gSavedSettings.getLLSD("UserLoginInfo").size() == 3) && !LLStartUp::shouldAutoLogin()) |
687 | { | 690 | { |
688 | LLSD cmd_line_login = gSavedSettings.getLLSD("UserLoginInfo"); | 691 | LLSD cmd_line_login = gSavedSettings.getLLSD("UserLoginInfo"); |
689 | firstname = cmd_line_login[0].asString(); | 692 | firstname = cmd_line_login[0].asString(); |
690 | lastname = cmd_line_login[1].asString(); | 693 | lastname = cmd_line_login[1].asString(); |
691 | 694 | ||
@@ -700,7 +703,7 @@ bool idle_startup() | |||
700 | show_connect_box = false; | 703 | show_connect_box = false; |
701 | #endif | 704 | #endif |
702 | gSavedSettings.setBOOL("AutoLogin", TRUE); | 705 | gSavedSettings.setBOOL("AutoLogin", TRUE); |
703 | } | 706 | } |
704 | else if (gSavedSettings.getBOOL("AutoLogin")) | 707 | else if (gSavedSettings.getBOOL("AutoLogin")) |
705 | { | 708 | { |
706 | firstname = gSavedSettings.getString("FirstName"); | 709 | firstname = gSavedSettings.getString("FirstName"); |
@@ -877,13 +880,21 @@ bool idle_startup() | |||
877 | gDebugInfo["LoginName"] = firstname + " " + lastname; | 880 | gDebugInfo["LoginName"] = firstname + " " + lastname; |
878 | } | 881 | } |
879 | 882 | ||
880 | gHippoGridManager->setCurrentGridAsConnected(); | 883 | std::string cmd_line_grid_choice = gSavedSettings.getString("CmdLineGridChoice"); |
884 | std::string cmd_line_login_uri = gSavedSettings.getLLSD("CmdLineLoginURI").asString(); | ||
885 | if(!cmd_line_grid_choice.empty() && cmd_line_login_uri.empty()) | ||
886 | { | ||
887 | gHippoGridManager->setCurrentGrid(cmd_line_grid_choice); | ||
888 | } | ||
889 | |||
890 | gHippoGridManager->setCurrentGridAsConnected(); | ||
891 | gHippoLimits->setLimits(); | ||
881 | // create necessary directories | 892 | // create necessary directories |
882 | // *FIX: these mkdir's should error check | 893 | // *FIX: these mkdir's should error check |
883 | gDirUtilp->setLindenUserDir(gHippoGridManager->getCurrentGridNick(), firstname, lastname); | 894 | gDirUtilp->setLindenUserDir(gHippoGridManager->getCurrentGridNick(), firstname, lastname); |
884 | LLFile::mkdir(gDirUtilp->getLindenUserDir()); | 895 | LLFile::mkdir(gDirUtilp->getLindenUserDir()); |
885 | 896 | ||
886 | // Set PerAccountSettingsFile to the default value. | 897 | // Set PerAccountSettingsFile to the default value. |
887 | gSavedSettings.setString("PerAccountSettingsFile", | 898 | gSavedSettings.setString("PerAccountSettingsFile", |
888 | gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, | 899 | gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, |
889 | LLAppViewer::instance()->getSettingsFilename("Default", "PerAccount") | 900 | LLAppViewer::instance()->getSettingsFilename("Default", "PerAccount") |
@@ -1643,13 +1654,14 @@ bool idle_startup() | |||
1643 | if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setPasswordUrl(tmp); | 1654 | if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setPasswordUrl(tmp); |
1644 | tmp = LLUserAuth::getInstance()->getResponse("search"); | 1655 | tmp = LLUserAuth::getInstance()->getResponse("search"); |
1645 | if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setSearchUrl(tmp); | 1656 | if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setSearchUrl(tmp); |
1646 | tmp = LLUserAuth::getInstance()->getResponse("currency"); | 1657 | tmp = LLUserAuth::getInstance()->getResponse("currency"); |
1647 | if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setCurrencySymbol(tmp); | 1658 | if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setCurrencySymbol(tmp); |
1648 | tmp = LLUserAuth::getInstance()->getResponse("real_currency"); | 1659 | tmp = LLUserAuth::getInstance()->getResponse("real_currency"); |
1649 | if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setRealCurrencySymbol(tmp); | 1660 | if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setRealCurrencySymbol(tmp); |
1650 | tmp = LLUserAuth::getInstance()->getResponse("directory_fee"); | 1661 | tmp = LLUserAuth::getInstance()->getResponse("directory_fee"); |
1651 | if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setDirectoryFee(atoi(tmp.c_str())); | 1662 | if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setDirectoryFee(atoi(tmp.c_str())); |
1652 | gHippoGridManager->saveFile(); | 1663 | gHippoGridManager->saveFile(); |
1664 | gHippoLimits->setLimits(); | ||
1653 | 1665 | ||
1654 | // JC: gesture loading done below, when we have an asset system | 1666 | // JC: gesture loading done below, when we have an asset system |
1655 | // in place. Don't delete/clear user_credentials until then. | 1667 | // in place. Don't delete/clear user_credentials until then. |
@@ -2902,7 +2914,12 @@ bool first_run_dialog_callback(const LLSD& notification, const LLSD& response) | |||
2902 | if (0 == option) | 2914 | if (0 == option) |
2903 | { | 2915 | { |
2904 | LL_DEBUGS("AppInit") << "First run dialog cancelling" << LL_ENDL; | 2916 | LL_DEBUGS("AppInit") << "First run dialog cancelling" << LL_ENDL; |
2905 | LLWeb::loadURL( CREATE_ACCOUNT_URL ); | 2917 | const std::string &url = gHippoGridManager->getConnectedGrid()->getRegisterUrl(); |
2918 | if (!url.empty()) { | ||
2919 | LLWeb::loadURL(url); | ||
2920 | } else { | ||
2921 | llwarns << "Account creation URL is empty" << llendl; | ||
2922 | } | ||
2906 | } | 2923 | } |
2907 | 2924 | ||
2908 | LLPanelLogin::giveFocus(); | 2925 | LLPanelLogin::giveFocus(); |
@@ -2948,9 +2965,11 @@ bool login_alert_status(const LLSD& notification, const LLSD& response) | |||
2948 | { | 2965 | { |
2949 | case 0: // OK | 2966 | case 0: // OK |
2950 | break; | 2967 | break; |
2951 | case 1: // Help | 2968 | case 1: { // Help |
2952 | LLWeb::loadURL( SUPPORT_URL ); | 2969 | const std::string &url = gHippoGridManager->getConnectedGrid()->getSupportUrl(); |
2970 | if (!url.empty()) LLWeb::loadURL(url); | ||
2953 | break; | 2971 | break; |
2972 | } | ||
2954 | case 2: // Teleport | 2973 | case 2: // Teleport |
2955 | // Restart the login process, starting at our home locaton | 2974 | // Restart the login process, starting at our home locaton |
2956 | LLURLSimString::setString(LLURLSimString::sLocationStringHome); | 2975 | LLURLSimString::setString(LLURLSimString::sLocationStringHome); |
diff --git a/linden/indra/newview/lltoolgrab.cpp b/linden/indra/newview/lltoolgrab.cpp index 3437193..260d533 100644 --- a/linden/indra/newview/lltoolgrab.cpp +++ b/linden/indra/newview/lltoolgrab.cpp | |||
@@ -64,6 +64,8 @@ | |||
64 | #include "llvoavatar.h" | 64 | #include "llvoavatar.h" |
65 | #include "llworld.h" | 65 | #include "llworld.h" |
66 | 66 | ||
67 | #include "hippoLimits.h" | ||
68 | |||
67 | const S32 SLOP_DIST_SQ = 4; | 69 | const S32 SLOP_DIST_SQ = 4; |
68 | 70 | ||
69 | // Override modifier key behavior with these buttons | 71 | // Override modifier key behavior with these buttons |
@@ -635,9 +637,10 @@ void LLToolGrab::handleHoverActive(S32 x, S32 y, MASK mask) | |||
635 | } | 637 | } |
636 | 638 | ||
637 | // For safety, cap heights where objects can be dragged | 639 | // For safety, cap heights where objects can be dragged |
638 | if (grab_point_global.mdV[VZ] > MAX_OBJECT_Z) | 640 | float maxHeight = gHippoLimits->getMaxHeight(); |
641 | if (grab_point_global.mdV[VZ] > maxHeight) | ||
639 | { | 642 | { |
640 | grab_point_global.mdV[VZ] = MAX_OBJECT_Z; | 643 | grab_point_global.mdV[VZ] = maxHeight; |
641 | } | 644 | } |
642 | 645 | ||
643 | grab_point_global = LLWorld::getInstance()->clipToVisibleRegions(mDragStartPointGlobal, grab_point_global); | 646 | grab_point_global = LLWorld::getInstance()->clipToVisibleRegions(mDragStartPointGlobal, grab_point_global); |
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp index 7697f77..9d06853 100644 --- a/linden/indra/newview/llviewermenu.cpp +++ b/linden/indra/newview/llviewermenu.cpp | |||
@@ -225,6 +225,8 @@ | |||
225 | #include "jcfloater_animation_list.h" | 225 | #include "jcfloater_animation_list.h" |
226 | #include "llfloaterassetbrowser.h" | 226 | #include "llfloaterassetbrowser.h" |
227 | 227 | ||
228 | #include "hippoLimits.h" | ||
229 | |||
228 | using namespace LLVOAvatarDefines; | 230 | using namespace LLVOAvatarDefines; |
229 | void init_client_menu(LLMenuGL* menu); | 231 | void init_client_menu(LLMenuGL* menu); |
230 | void init_server_menu(LLMenuGL* menu); | 232 | void init_server_menu(LLMenuGL* menu); |
@@ -4669,15 +4671,18 @@ class LLToolsLink : public view_listener_t | |||
4669 | return true; | 4671 | return true; |
4670 | } | 4672 | } |
4671 | 4673 | ||
4672 | S32 object_count = LLSelectMgr::getInstance()->getSelection()->getObjectCount(); | 4674 | S32 max_linked_prims = gHippoLimits->getMaxLinkedPrims(); |
4673 | if (object_count > MAX_CHILDREN_PER_TASK + 1) | 4675 | if (max_linked_prims > -1) |
4674 | { | 4676 | { |
4675 | LLSD args; | 4677 | S32 object_count = LLSelectMgr::getInstance()->getSelection()->getObjectCount(); |
4676 | args["COUNT"] = llformat("%d", object_count); | 4678 | if (object_count > max_linked_prims + 1) |
4677 | int max = MAX_CHILDREN_PER_TASK+1; | 4679 | { |
4678 | args["MAX"] = llformat("%d", max); | 4680 | LLSD args; |
4679 | LLNotifications::instance().add("UnableToLinkObjects", args); | 4681 | args["COUNT"] = llformat("%d", object_count); |
4680 | return true; | 4682 | args["MAX"] = llformat("%d", max_linked_prims+1); |
4683 | LLNotifications::instance().add("UnableToLinkObjects", args); | ||
4684 | return true; | ||
4685 | } | ||
4681 | } | 4686 | } |
4682 | 4687 | ||
4683 | if(LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() < 2) | 4688 | if(LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() < 2) |
@@ -5861,7 +5866,7 @@ class LLShowFloater : public view_listener_t | |||
5861 | } | 5866 | } |
5862 | else if (floater_name == "help f1") | 5867 | else if (floater_name == "help f1") |
5863 | { | 5868 | { |
5864 | LLFloaterMediaBrowser::helpF1(); | 5869 | gViewerHtmlHelp.show(); |
5865 | } | 5870 | } |
5866 | else if (floater_name == "help tutorial") | 5871 | else if (floater_name == "help tutorial") |
5867 | { | 5872 | { |
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp index eb11acb..6dfd9fb 100644 --- a/linden/indra/newview/llviewermessage.cpp +++ b/linden/indra/newview/llviewermessage.cpp | |||
@@ -138,6 +138,8 @@ | |||
138 | #include "llviewerdisplay.h" | 138 | #include "llviewerdisplay.h" |
139 | #include "llkeythrottle.h" | 139 | #include "llkeythrottle.h" |
140 | 140 | ||
141 | #include "hippoLimits.h" | ||
142 | |||
141 | #include <boost/tokenizer.hpp> | 143 | #include <boost/tokenizer.hpp> |
142 | #include <boost/regex.hpp> // Boost Reg Expresions | 144 | #include <boost/regex.hpp> // Boost Reg Expresions |
143 | 145 | ||
@@ -654,7 +656,7 @@ bool join_group_response(const LLSD& notification, const LLSD& response) | |||
654 | if(option == 0 && !group_id.isNull()) | 656 | if(option == 0 && !group_id.isNull()) |
655 | { | 657 | { |
656 | // check for promotion or demotion. | 658 | // check for promotion or demotion. |
657 | S32 max_groups = MAX_AGENT_GROUPS; | 659 | S32 max_groups = gHippoLimits->getMaxAgentGroups(); |
658 | if(gAgent.isInGroup(group_id)) ++max_groups; | 660 | if(gAgent.isInGroup(group_id)) ++max_groups; |
659 | 661 | ||
660 | if(gAgent.mGroups.count() < max_groups) | 662 | if(gAgent.mGroups.count() < max_groups) |
@@ -3313,10 +3315,6 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**) | |||
3313 | // appropriate. | 3315 | // appropriate. |
3314 | LLVector3 shift_vector = regionp->getPosRegionFromGlobal( | 3316 | LLVector3 shift_vector = regionp->getPosRegionFromGlobal( |
3315 | gAgent.getRegion()->getOriginGlobal()); | 3317 | gAgent.getRegion()->getOriginGlobal()); |
3316 | // don't shift objects, if teleporting more than about 1000 sims, as | ||
3317 | // for long teleports shifting objects garbles the view at the target region | ||
3318 | if (shift_vector.lengthSquared() > 6.5e10f) | ||
3319 | shift_vector = LLVector3::zero; | ||
3320 | gAgent.setRegion(regionp); | 3318 | gAgent.setRegion(regionp); |
3321 | gObjectList.shiftObjects(shift_vector); | 3319 | gObjectList.shiftObjects(shift_vector); |
3322 | gAssetStorage->setUpstream(msg->getSender()); | 3320 | gAssetStorage->setUpstream(msg->getSender()); |
@@ -3442,15 +3440,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**) | |||
3442 | LLSD payload; | 3440 | LLSD payload; |
3443 | payload["message"] = version_channel; | 3441 | payload["message"] = version_channel; |
3444 | LLNotifications::instance().add("ServerVersionChanged", LLSD(), payload); | 3442 | LLNotifications::instance().add("ServerVersionChanged", LLSD(), payload); |
3445 | } | 3443 | gHippoLimits->setLimits(); |
3446 | |||
3447 | if (version_channel.find("OpenSim") != std::string::npos) | ||
3448 | { | ||
3449 | gSavedSettings.setBOOL("LoggedIntoOpenSim", TRUE); | ||
3450 | } | ||
3451 | else | ||
3452 | { | ||
3453 | gSavedSettings.setBOOL("LoggedIntoOpenSim", FALSE); | ||
3454 | } | 3444 | } |
3455 | 3445 | ||
3456 | gLastVersionChannel = version_channel; | 3446 | gLastVersionChannel = version_channel; |
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp index 3e83ff5..0f1e2a3 100644 --- a/linden/indra/newview/llvoavatar.cpp +++ b/linden/indra/newview/llvoavatar.cpp | |||
@@ -55,7 +55,6 @@ | |||
55 | #include "llkeyframefallmotion.h" | 55 | #include "llkeyframefallmotion.h" |
56 | #include "llkeyframestandmotion.h" | 56 | #include "llkeyframestandmotion.h" |
57 | #include "llkeyframewalkmotion.h" | 57 | #include "llkeyframewalkmotion.h" |
58 | #include "llmanipscale.h" // getMaxPrimSize() | ||
59 | #include "llmutelist.h" | 58 | #include "llmutelist.h" |
60 | #include "llnotify.h" | 59 | #include "llnotify.h" |
61 | #include "llquantize.h" | 60 | #include "llquantize.h" |
@@ -97,7 +96,7 @@ | |||
97 | // [RLVa:KB] | 96 | // [RLVa:KB] |
98 | #include "llstartup.h" | 97 | #include "llstartup.h" |
99 | // [/RLVa:KB] | 98 | // [/RLVa:KB] |
100 | 99 | #include "hippoLimits.h"// getMaxPrimScale | |
101 | using namespace LLVOAvatarDefines; | 100 | using namespace LLVOAvatarDefines; |
102 | 101 | ||
103 | //----------------------------------------------------------------------------- | 102 | //----------------------------------------------------------------------------- |
@@ -1536,7 +1535,7 @@ void LLVOAvatar::getSpatialExtents(LLVector3& newMin, LLVector3& newMax) | |||
1536 | LLVector3 pos = getRenderPosition(); | 1535 | LLVector3 pos = getRenderPosition(); |
1537 | newMin = pos - buffer; | 1536 | newMin = pos - buffer; |
1538 | newMax = pos + buffer; | 1537 | newMax = pos + buffer; |
1539 | float max_attachment_span = LLManipScale::getMaxPrimSize() * 5.0f; | 1538 | float max_attachment_span = gHippoLimits->getMaxPrimScale() * 5.0f; |
1540 | 1539 | ||
1541 | //stretch bounding box by joint positions | 1540 | //stretch bounding box by joint positions |
1542 | for (polymesh_map_t::iterator i = mMeshes.begin(); i != mMeshes.end(); ++i) | 1541 | for (polymesh_map_t::iterator i = mMeshes.begin(); i != mMeshes.end(); ++i) |
@@ -2528,15 +2527,15 @@ S32 LLVOAvatar::setTETexture(const U8 te, const LLUUID& uuid) | |||
2528 | { | 2527 | { |
2529 | // The core setTETexture() method requests images, so we need | 2528 | // The core setTETexture() method requests images, so we need |
2530 | // to redirect certain avatar texture requests to different sims. | 2529 | // to redirect certain avatar texture requests to different sims. |
2531 | /* if (isIndexBakedTexture((ETextureIndex)te)) | 2530 | if (isIndexBakedTexture((ETextureIndex)te)) |
2532 | {*/ | 2531 | { |
2533 | LLHost target_host = getObjectHost(); | 2532 | LLHost target_host = getObjectHost(); |
2534 | return setTETextureCore(te, uuid, target_host); | 2533 | return setTETextureCore(te, uuid, target_host); |
2535 | /*} | 2534 | } |
2536 | else | 2535 | else |
2537 | { | 2536 | { |
2538 | return setTETextureCore(te, uuid, LLHost::invalid); | 2537 | return setTETextureCore(te, uuid, LLHost::invalid); |
2539 | }*/ | 2538 | } |
2540 | } | 2539 | } |
2541 | 2540 | ||
2542 | 2541 | ||
@@ -8608,7 +8607,7 @@ void LLVOAvatar::onBakedTextureMasksLoaded( BOOL success, LLViewerImage *src_vi, | |||
8608 | { | 8607 | { |
8609 | if (!aux_src->getData()) | 8608 | if (!aux_src->getData()) |
8610 | { | 8609 | { |
8611 | llerrs << "No auxiliary source data for onBakedTextureMasksLoaded" << llendl; | 8610 | llwarns << "No auxiliary source data for onBakedTextureMasksLoaded" << llendl; |
8612 | return; | 8611 | return; |
8613 | } | 8612 | } |
8614 | 8613 | ||
diff --git a/linden/indra/newview/llvoiceclient.cpp b/linden/indra/newview/llvoiceclient.cpp index 7a41510..67e4075 100644 --- a/linden/indra/newview/llvoiceclient.cpp +++ b/linden/indra/newview/llvoiceclient.cpp | |||
@@ -1753,6 +1753,7 @@ void LLVoiceClient::stateMachine() | |||
1753 | else | 1753 | else |
1754 | { | 1754 | { |
1755 | LL_INFOS("Voice") << exe_path << " not found." << LL_ENDL; | 1755 | LL_INFOS("Voice") << exe_path << " not found." << LL_ENDL; |
1756 | mVoiceEnabled = false; | ||
1756 | } | 1757 | } |
1757 | } | 1758 | } |
1758 | else | 1759 | else |
@@ -1856,7 +1857,7 @@ void LLVoiceClient::stateMachine() | |||
1856 | // We never started up the connector. This will shut down the daemon. | 1857 | // We never started up the connector. This will shut down the daemon. |
1857 | setState(stateConnectorStopped); | 1858 | setState(stateConnectorStopped); |
1858 | } | 1859 | } |
1859 | else if(!mAccountName.empty()) | 1860 | else if(!mAccountName.empty() && mVoiceEnabled) |
1860 | { | 1861 | { |
1861 | LLViewerRegion *region = gAgent.getRegion(); | 1862 | LLViewerRegion *region = gAgent.getRegion(); |
1862 | 1863 | ||
@@ -1872,7 +1873,7 @@ void LLVoiceClient::stateMachine() | |||
1872 | } | 1873 | } |
1873 | else | 1874 | else |
1874 | { | 1875 | { |
1875 | LL_WARNS("Voice") << "region doesn't have ProvisionVoiceAccountRequest capability!" << LL_ENDL; | 1876 | LL_DEBUGS("Voice") << "region doesn't have ProvisionVoiceAccountRequest capability!" << LL_ENDL; |
1876 | } | 1877 | } |
1877 | } | 1878 | } |
1878 | } | 1879 | } |
diff --git a/linden/indra/newview/llworld.cpp b/linden/indra/newview/llworld.cpp index 02c7be3..90ab49b 100644 --- a/linden/indra/newview/llworld.cpp +++ b/linden/indra/newview/llworld.cpp | |||
@@ -60,6 +60,7 @@ | |||
60 | #include "pipeline.h" | 60 | #include "pipeline.h" |
61 | #include "llappviewer.h" // for do_disconnect() | 61 | #include "llappviewer.h" // for do_disconnect() |
62 | 62 | ||
63 | #include "hippoLimits.h" | ||
63 | // | 64 | // |
64 | // Globals | 65 | // Globals |
65 | // | 66 | // |
@@ -128,6 +129,10 @@ void LLWorld::destroyClass() | |||
128 | LLViewerPartSim::getInstance()->destroyClass(); | 129 | LLViewerPartSim::getInstance()->destroyClass(); |
129 | } | 130 | } |
130 | 131 | ||
132 | F32 LLWorld::getRegionMaxHeight() const | ||
133 | { | ||
134 | return gHippoLimits->getMaxHeight(); | ||
135 | } | ||
131 | 136 | ||
132 | LLViewerRegion* LLWorld::addRegion(const U64 ®ion_handle, const LLHost &host) | 137 | LLViewerRegion* LLWorld::addRegion(const U64 ®ion_handle, const LLHost &host) |
133 | { | 138 | { |
diff --git a/linden/indra/newview/llworld.h b/linden/indra/newview/llworld.h index ce83cbd..46aefd9 100644 --- a/linden/indra/newview/llworld.h +++ b/linden/indra/newview/llworld.h | |||
@@ -119,8 +119,7 @@ public: | |||
119 | // region X and Y size in meters | 119 | // region X and Y size in meters |
120 | F32 getRegionWidthInMeters() const { return mWidthInMeters; } | 120 | F32 getRegionWidthInMeters() const { return mWidthInMeters; } |
121 | F32 getRegionMinHeight() const { return -mWidthInMeters; } | 121 | F32 getRegionMinHeight() const { return -mWidthInMeters; } |
122 | F32 getRegionMaxHeight() const { return MAX_OBJECT_Z; } | 122 | F32 getRegionMaxHeight() const; |
123 | |||
124 | void updateRegions(F32 max_update_time); | 123 | void updateRegions(F32 max_update_time); |
125 | void updateVisibilities(); | 124 | void updateVisibilities(); |
126 | void updateParticles(); | 125 | void updateParticles(); |
diff --git a/linden/indra/newview/skins/default/xui/en-us/notifications.xml b/linden/indra/newview/skins/default/xui/en-us/notifications.xml index 9390fb5..df277ad 100644 --- a/linden/indra/newview/skins/default/xui/en-us/notifications.xml +++ b/linden/indra/newview/skins/default/xui/en-us/notifications.xml | |||
@@ -4130,7 +4130,7 @@ Add this Ability to '[ROLE_NAME]'? | |||
4130 | icon="alertmodal.tga" | 4130 | icon="alertmodal.tga" |
4131 | name="ClickOpenF1Help" | 4131 | name="ClickOpenF1Help" |
4132 | type="alertmodal"> | 4132 | type="alertmodal"> |
4133 | Visit the [SECOND_LIFE] Support Website? (note: this is not an Imprudence Help site) | 4133 | Visit the [GRID] Support Web site? |
4134 | <usetemplate | 4134 | <usetemplate |
4135 | ignoretext="When visiting the Support Website." | 4135 | ignoretext="When visiting the Support Website." |
4136 | name="okcancelignore" | 4136 | name="okcancelignore" |
@@ -4140,6 +4140,13 @@ Add this Ability to '[ROLE_NAME]'? | |||
4140 | 4140 | ||
4141 | <notification | 4141 | <notification |
4142 | icon="alertmodal.tga" | 4142 | icon="alertmodal.tga" |
4143 | name="NoSupportUrl" | ||
4144 | type="alertmodal"> | ||
4145 | [GRID] has no link for support. | ||
4146 | </notification> | ||
4147 | |||
4148 | <notification | ||
4149 | icon="alertmodal.tga" | ||
4143 | name="ConfirmQuit" | 4150 | name="ConfirmQuit" |
4144 | type="alertmodal"> | 4151 | type="alertmodal"> |
4145 | Are you sure you want to quit? | 4152 | Are you sure you want to quit? |
diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py index 204bd1f..8c907a3 100755 --- a/linden/indra/newview/viewer_manifest.py +++ b/linden/indra/newview/viewer_manifest.py | |||
@@ -118,7 +118,7 @@ class ViewerManifest(LLManifest): | |||
118 | self.path("MANIFESTO.txt") | 118 | self.path("MANIFESTO.txt") |
119 | self.path("CONTRIBUTE.txt") | 119 | self.path("CONTRIBUTE.txt") |
120 | self.path("RELEASE_NOTES.txt") | 120 | self.path("RELEASE_NOTES.txt") |
121 | self.path("ChangeLog.txt") | 121 | self.path("ChangeLog.txt", required=False) |
122 | self.end_prefix("../../..") | 122 | self.end_prefix("../../..") |
123 | 123 | ||
124 | # From the linden directory | 124 | # From the linden directory |
diff --git a/linden/scripts/make_changelog.py b/linden/scripts/make_changelog.py index 43745a4..713adc1 100755 --- a/linden/scripts/make_changelog.py +++ b/linden/scripts/make_changelog.py | |||
@@ -50,9 +50,7 @@ | |||
50 | # | 50 | # |
51 | 51 | ||
52 | 52 | ||
53 | 53 | import re, os, sys, subprocess | |
54 | import commands, re, os, sys | ||
55 | from string import Template | ||
56 | 54 | ||
57 | 55 | ||
58 | SCRIPT_DIR = os.path.abspath( os.path.dirname( sys.argv[0] ) ) | 56 | SCRIPT_DIR = os.path.abspath( os.path.dirname( sys.argv[0] ) ) |
@@ -316,8 +314,9 @@ Author: %(an)s <%(ae)s>""" % { "ad" : self.author_date, | |||
316 | "id" : self.id[0:7] }) | 314 | "id" : self.id[0:7] }) |
317 | 315 | ||
318 | if self.commit_name != self.author_name: | 316 | if self.commit_name != self.author_name: |
319 | texts.append("Committer: %(cn)s <%(ce)s>" % { "cn" : self.commit_name, | 317 | texts.append("Committer: %(cn)s <%(ce)s>" % \ |
320 | "ce" : self.commit_mail }) | 318 | { "cn" : self.commit_name, |
319 | "ce" : self.commit_mail }) | ||
321 | 320 | ||
322 | texts.append("\n") | 321 | texts.append("\n") |
323 | 322 | ||
@@ -360,32 +359,52 @@ Author: %(an)s <%(ae)s>""" % { "ad" : self.author_date, | |||
360 | 359 | ||
361 | 360 | ||
362 | 361 | ||
362 | def fail( reason, abort=False ): | ||
363 | """Prints a message that the ChangeLog couldn't be generated, then | ||
364 | exits the script. If abort is True, exit with status code 1 (to | ||
365 | indicate that Make/VisualStudio/Xcode/etc. should abort), | ||
366 | otherwise exit with status code 0.""" | ||
367 | |||
368 | if abort: | ||
369 | print "Error: Could not generate ChangeLog.txt: " + reason | ||
370 | exit(1) | ||
371 | else: | ||
372 | print "Warning: Could not generate ChangeLog.txt: " + reason | ||
373 | exit(0) | ||
374 | |||
375 | |||
363 | 376 | ||
364 | def main(): | 377 | def main(): |
365 | commits = sys.argv[1:] | 378 | commits = sys.argv[1:] |
366 | if commits: | 379 | if not commits: |
367 | commits = " ".join(commits) | 380 | commits = ["HEAD"] |
368 | else: | ||
369 | commits = "HEAD" | ||
370 | 381 | ||
371 | 382 | ||
372 | # Set PATH to help find the git executable on Mac OS X. | 383 | # Set PATH to help find the git executable on Mac OS X. |
373 | if sys.platform == "darwin": | 384 | if sys.platform == "darwin": |
374 | os.environ["PATH"] += ":/usr/local/bin:/usr/local/git/bin:/sw/bin:/opt/bin:~/bin" | 385 | os.environ["PATH"] += ":/usr/local/bin:/usr/local/git/bin:/sw/bin:/opt/bin:~/bin" |
375 | 386 | ||
376 | # Fetch the log entries from git in one big chunk. | ||
377 | cmd = "git log --pretty=fuller --name-status --date=short --date-order " + commits | ||
378 | status, output = commands.getstatusoutput(cmd) | ||
379 | |||
380 | 387 | ||
381 | # If the git command failed, write a placeholder ChangeLog.txt and exit. | 388 | # Fetch the log entries from git in one big chunk. |
389 | cmd = ["git", "log", "--pretty=fuller", "--name-status", | ||
390 | "--date=short", "--date-order"] + commits | ||
391 | |||
392 | try: | ||
393 | proc = subprocess.Popen(cmd, | ||
394 | cwd = ROOT_DIR, | ||
395 | stdout = subprocess.PIPE, | ||
396 | stderr = subprocess.STDOUT, | ||
397 | shell = True) | ||
398 | except OSError: | ||
399 | fail("The 'git' command is not available.") | ||
400 | |||
401 | output = proc.communicate()[0] | ||
402 | status = proc.returncode | ||
403 | |||
404 | |||
405 | # If the git command failed, print the reason and exit. | ||
382 | if status != 0: | 406 | if status != 0: |
383 | print "Could not generate ChangeLog.txt: " + output | 407 | fail(output) |
384 | changelog = open(CHANGELOG, "w") | ||
385 | changelog.write( output + "\n (Imprudence must be compiled from a Git repository to generate a ChangeLog.)\n\n") | ||
386 | changelog.close() | ||
387 | exit(0) | ||
388 | |||
389 | 408 | ||
390 | # Split it up into individual commits. | 409 | # Split it up into individual commits. |
391 | logs = re.compile("^commit ", re.MULTILINE).split(output)[1:] | 410 | logs = re.compile("^commit ", re.MULTILINE).split(output)[1:] |