Merge branch 'master' of https://github.com/Lirusaito/SingularityViewer.git
This commit is contained in:
@@ -91,6 +91,7 @@ set(llui_SOURCE_FILES
|
|||||||
llviewborder.cpp
|
llviewborder.cpp
|
||||||
llviewmodel.cpp
|
llviewmodel.cpp
|
||||||
llviewquery.cpp
|
llviewquery.cpp
|
||||||
|
llxuiparser.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set(llui_HEADER_FILES
|
set(llui_HEADER_FILES
|
||||||
@@ -172,6 +173,7 @@ set(llui_HEADER_FILES
|
|||||||
llviewborder.h
|
llviewborder.h
|
||||||
llviewmodel.h
|
llviewmodel.h
|
||||||
llviewquery.h
|
llviewquery.h
|
||||||
|
llxuiparser.h
|
||||||
)
|
)
|
||||||
|
|
||||||
set_source_files_properties(${llui_HEADER_FILES}
|
set_source_files_properties(${llui_HEADER_FILES}
|
||||||
|
|||||||
@@ -867,10 +867,10 @@ void LLLineEditor::removeChar()
|
|||||||
// Remove a word (set of characters up to next space/punctuation) from the text
|
// Remove a word (set of characters up to next space/punctuation) from the text
|
||||||
void LLLineEditor::removeWord(bool prev)
|
void LLLineEditor::removeWord(bool prev)
|
||||||
{
|
{
|
||||||
const U32 pos(getCursor());
|
const S32& pos(mCursorPos);
|
||||||
if (prev ? pos > 0 : static_cast<S32>(pos) < getLength())
|
if (prev ? pos > 0 : pos < getLength())
|
||||||
{
|
{
|
||||||
U32 new_pos(prev ? prevWordPos(pos) : nextWordPos(pos));
|
S32 new_pos(prev ? prevWordPos(pos) : nextWordPos(pos));
|
||||||
if (new_pos == pos) // Other character we don't jump over
|
if (new_pos == pos) // Other character we don't jump over
|
||||||
new_pos = prev ? prevWordPos(new_pos-1) : nextWordPos(new_pos+1);
|
new_pos = prev ? prevWordPos(new_pos-1) : nextWordPos(new_pos+1);
|
||||||
|
|
||||||
|
|||||||
@@ -1817,10 +1817,10 @@ void LLTextEditor::removeChar()
|
|||||||
// Remove a word (set of characters up to next space/punctuation) from the text
|
// Remove a word (set of characters up to next space/punctuation) from the text
|
||||||
void LLTextEditor::removeWord(bool prev)
|
void LLTextEditor::removeWord(bool prev)
|
||||||
{
|
{
|
||||||
const U32 pos(mCursorPos);
|
const S32& pos(mCursorPos);
|
||||||
if (prev ? pos > 0 : static_cast<S32>(pos) < getLength())
|
if (prev ? pos > 0 : pos < getLength())
|
||||||
{
|
{
|
||||||
U32 new_pos(prev ? prevWordPos(pos) : nextWordPos(pos));
|
S32 new_pos(prev ? prevWordPos(pos) : nextWordPos(pos));
|
||||||
if (new_pos == pos) // Other character we don't jump over
|
if (new_pos == pos) // Other character we don't jump over
|
||||||
new_pos = prev ? prevWordPos(new_pos-1) : nextWordPos(new_pos+1);
|
new_pos = prev ? prevWordPos(new_pos-1) : nextWordPos(new_pos+1);
|
||||||
|
|
||||||
@@ -2368,6 +2368,13 @@ BOOL LLTextEditor::handleControlKey(const KEY key, const MASK mask)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case KEY_DELETE:
|
||||||
|
if (getEnabled())
|
||||||
|
removeWord(false);
|
||||||
|
else
|
||||||
|
handled = false;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
handled = FALSE;
|
handled = FALSE;
|
||||||
break;
|
break;
|
||||||
@@ -2485,17 +2492,6 @@ BOOL LLTextEditor::handleSpecialKey(const KEY key, const MASK mask, BOOL* return
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case KEY_DELETE:
|
|
||||||
if (getEnabled() && mask == MASK_CONTROL)
|
|
||||||
{
|
|
||||||
removeWord(false);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
handled = false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_RETURN:
|
case KEY_RETURN:
|
||||||
if (mask == MASK_NONE)
|
if (mask == MASK_NONE)
|
||||||
{
|
{
|
||||||
|
|||||||
1785
indra/llui/llxuiparser.cpp
Normal file
1785
indra/llui/llxuiparser.cpp
Normal file
File diff suppressed because it is too large
Load Diff
254
indra/llui/llxuiparser.h
Normal file
254
indra/llui/llxuiparser.h
Normal file
@@ -0,0 +1,254 @@
|
|||||||
|
/**
|
||||||
|
* @file llxuiparser.h
|
||||||
|
* @brief Utility functions for handling XUI structures in XML
|
||||||
|
*
|
||||||
|
* $LicenseInfo:firstyear=2003&license=viewerlgpl$
|
||||||
|
* Second Life Viewer Source Code
|
||||||
|
* Copyright (C) 2010, Linden Research, Inc.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation;
|
||||||
|
* version 2.1 of the License only.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*
|
||||||
|
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||||
|
* $/LicenseInfo$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LLXUIPARSER_H
|
||||||
|
#define LLXUIPARSER_H
|
||||||
|
|
||||||
|
#include "llinitparam.h"
|
||||||
|
#include "llregistry.h"
|
||||||
|
#include "llxmlnode.h"
|
||||||
|
|
||||||
|
#include <boost/function.hpp>
|
||||||
|
#include <iosfwd>
|
||||||
|
#include <stack>
|
||||||
|
#include <set>
|
||||||
|
|
||||||
|
class LLView;
|
||||||
|
|
||||||
|
// lookup widget type by name
|
||||||
|
class LLWidgetTypeRegistry
|
||||||
|
: public LLRegistrySingleton<std::string, const std::type_info*, LLWidgetTypeRegistry>
|
||||||
|
{};
|
||||||
|
|
||||||
|
|
||||||
|
// global static instance for registering all widget types
|
||||||
|
typedef boost::function<LLView* (LLXMLNodePtr node, LLView *parent, LLXMLNodePtr output_node)> LLWidgetCreatorFunc;
|
||||||
|
|
||||||
|
typedef LLRegistry<std::string, LLWidgetCreatorFunc> widget_registry_t;
|
||||||
|
|
||||||
|
class LLChildRegistryRegistry
|
||||||
|
: public LLRegistrySingleton<const std::type_info*, widget_registry_t, LLChildRegistryRegistry>
|
||||||
|
{};
|
||||||
|
|
||||||
|
class LLXSDWriter : public LLInitParam::Parser
|
||||||
|
{
|
||||||
|
LOG_CLASS(LLXSDWriter);
|
||||||
|
public:
|
||||||
|
void writeXSD(const std::string& name, LLXMLNodePtr node, const LLInitParam::BaseBlock& block, const std::string& xml_namespace);
|
||||||
|
|
||||||
|
/*virtual*/ std::string getCurrentElementName() { return LLStringUtil::null; }
|
||||||
|
|
||||||
|
LLXSDWriter();
|
||||||
|
~LLXSDWriter();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void writeAttribute(const std::string& type, const Parser::name_stack_t&, S32 min_count, S32 max_count, const std::vector<std::string>* possible_values);
|
||||||
|
void addAttributeToSchema(LLXMLNodePtr nodep, const std::string& attribute_name, const std::string& type, bool mandatory, const std::vector<std::string>* possible_values);
|
||||||
|
LLXMLNodePtr mAttributeNode;
|
||||||
|
LLXMLNodePtr mElementNode;
|
||||||
|
LLXMLNodePtr mSchemaNode;
|
||||||
|
|
||||||
|
typedef std::set<std::string> string_set_t;
|
||||||
|
typedef std::map<LLXMLNodePtr, string_set_t> attributes_map_t;
|
||||||
|
attributes_map_t mAttributesWritten;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// NOTE: DOES NOT WORK YET
|
||||||
|
// should support child widgets for XUI
|
||||||
|
class LLXUIXSDWriter : public LLXSDWriter
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void writeXSD(const std::string& name, const std::string& path, const LLInitParam::BaseBlock& block);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class LLXUIParserImpl;
|
||||||
|
|
||||||
|
class LLXUIParser : public LLInitParam::Parser
|
||||||
|
{
|
||||||
|
LOG_CLASS(LLXUIParser);
|
||||||
|
|
||||||
|
public:
|
||||||
|
LLXUIParser();
|
||||||
|
typedef LLInitParam::Parser::name_stack_t name_stack_t;
|
||||||
|
|
||||||
|
/*virtual*/ std::string getCurrentElementName();
|
||||||
|
/*virtual*/ void parserWarning(const std::string& message);
|
||||||
|
/*virtual*/ void parserError(const std::string& message);
|
||||||
|
|
||||||
|
void readXUI(LLXMLNodePtr node, LLInitParam::BaseBlock& block, const std::string& filename = LLStringUtil::null, bool silent=false);
|
||||||
|
template<typename BLOCK>
|
||||||
|
void writeXUI(LLXMLNodePtr node,
|
||||||
|
const BLOCK& block,
|
||||||
|
const LLInitParam::predicate_rule_t rules = LLInitParam::default_parse_rules(),
|
||||||
|
const LLInitParam::BaseBlock* diff_block = NULL)
|
||||||
|
{
|
||||||
|
if (!diff_block
|
||||||
|
&& !rules.isAmbivalent(LLInitParam::HAS_DEFAULT_VALUE))
|
||||||
|
{
|
||||||
|
diff_block = &LLInitParam::defaultValue<BLOCK>();
|
||||||
|
}
|
||||||
|
writeXUIImpl(node, block, rules, diff_block);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
LLXUIParser(const LLXUIParser& other); // no-copy
|
||||||
|
void writeXUIImpl(LLXMLNodePtr node,
|
||||||
|
const LLInitParam::BaseBlock& block,
|
||||||
|
const LLInitParam::predicate_rule_t rules,
|
||||||
|
const LLInitParam::BaseBlock* diff_block);
|
||||||
|
bool readXUIImpl(LLXMLNodePtr node, LLInitParam::BaseBlock& block);
|
||||||
|
bool readAttributes(LLXMLNodePtr nodep, LLInitParam::BaseBlock& block);
|
||||||
|
|
||||||
|
//reader helper functions
|
||||||
|
static bool readFlag(Parser& parser, void* val_ptr);
|
||||||
|
static bool readBoolValue(Parser& parser, void* val_ptr);
|
||||||
|
static bool readStringValue(Parser& parser, void* val_ptr);
|
||||||
|
static bool readU8Value(Parser& parser, void* val_ptr);
|
||||||
|
static bool readS8Value(Parser& parser, void* val_ptr);
|
||||||
|
static bool readU16Value(Parser& parser, void* val_ptr);
|
||||||
|
static bool readS16Value(Parser& parser, void* val_ptr);
|
||||||
|
static bool readU32Value(Parser& parser, void* val_ptr);
|
||||||
|
static bool readS32Value(Parser& parser, void* val_ptr);
|
||||||
|
static bool readF32Value(Parser& parser, void* val_ptr);
|
||||||
|
static bool readF64Value(Parser& parser, void* val_ptr);
|
||||||
|
static bool readVector3Value(Parser& parser, void* val_ptr);
|
||||||
|
static bool readColor4Value(Parser& parser, void* val_ptr);
|
||||||
|
static bool readUIColorValue(Parser& parser, void* val_ptr);
|
||||||
|
static bool readUUIDValue(Parser& parser, void* val_ptr);
|
||||||
|
static bool readSDValue(Parser& parser, void* val_ptr);
|
||||||
|
|
||||||
|
//writer helper functions
|
||||||
|
static bool writeFlag(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||||
|
static bool writeBoolValue(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||||
|
static bool writeStringValue(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||||
|
static bool writeU8Value(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||||
|
static bool writeS8Value(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||||
|
static bool writeU16Value(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||||
|
static bool writeS16Value(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||||
|
static bool writeU32Value(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||||
|
static bool writeS32Value(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||||
|
static bool writeF32Value(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||||
|
static bool writeF64Value(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||||
|
static bool writeVector3Value(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||||
|
static bool writeColor4Value(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||||
|
static bool writeUIColorValue(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||||
|
static bool writeUUIDValue(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||||
|
static bool writeSDValue(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||||
|
|
||||||
|
LLXMLNodePtr getNode(name_stack_t& stack);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Parser::name_stack_t mNameStack;
|
||||||
|
LLXMLNodePtr mCurReadNode;
|
||||||
|
// Root of the widget XML sub-tree, for example, "line_editor"
|
||||||
|
LLXMLNodePtr mWriteRootNode;
|
||||||
|
|
||||||
|
typedef std::map<std::string, LLXMLNodePtr> out_nodes_t;
|
||||||
|
out_nodes_t mOutNodes;
|
||||||
|
LLXMLNodePtr mLastWrittenChild;
|
||||||
|
S32 mCurReadDepth;
|
||||||
|
std::string mCurFileName;
|
||||||
|
std::string mRootNodeName;
|
||||||
|
};
|
||||||
|
|
||||||
|
// LLSimpleXUIParser is a streamlined SAX-based XUI parser that does not support localization
|
||||||
|
// or parsing of a tree of independent param blocks, such as child widgets.
|
||||||
|
// Use this for reading non-localized files that only need a single param block as a result.
|
||||||
|
//
|
||||||
|
// NOTE: In order to support nested block parsing, we need callbacks for start element that
|
||||||
|
// push new blocks contexts on the mScope stack.
|
||||||
|
// NOTE: To support localization without building a DOM, we need to enforce consistent
|
||||||
|
// ordering of child elements from base file to localized diff file. Then we can use a pair
|
||||||
|
// of coroutines to perform matching of xml nodes during parsing. Not sure if the overhead
|
||||||
|
// of coroutines would offset the gain from SAX parsing
|
||||||
|
class LLSimpleXUIParserImpl;
|
||||||
|
|
||||||
|
class LLSimpleXUIParser : public LLInitParam::Parser
|
||||||
|
{
|
||||||
|
LOG_CLASS(LLSimpleXUIParser);
|
||||||
|
public:
|
||||||
|
typedef LLInitParam::Parser::name_stack_t name_stack_t;
|
||||||
|
typedef LLInitParam::BaseBlock* (*element_start_callback_t)(LLSimpleXUIParser&, const char* block_name);
|
||||||
|
|
||||||
|
LLSimpleXUIParser(element_start_callback_t element_cb = NULL);
|
||||||
|
virtual ~LLSimpleXUIParser();
|
||||||
|
|
||||||
|
/*virtual*/ std::string getCurrentElementName();
|
||||||
|
/*virtual*/ void parserWarning(const std::string& message);
|
||||||
|
/*virtual*/ void parserError(const std::string& message);
|
||||||
|
|
||||||
|
bool readXUI(const std::string& filename, LLInitParam::BaseBlock& block, bool silent=false);
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
//reader helper functions
|
||||||
|
static bool readFlag(Parser&, void* val_ptr);
|
||||||
|
static bool readBoolValue(Parser&, void* val_ptr);
|
||||||
|
static bool readStringValue(Parser&, void* val_ptr);
|
||||||
|
static bool readU8Value(Parser&, void* val_ptr);
|
||||||
|
static bool readS8Value(Parser&, void* val_ptr);
|
||||||
|
static bool readU16Value(Parser&, void* val_ptr);
|
||||||
|
static bool readS16Value(Parser&, void* val_ptr);
|
||||||
|
static bool readU32Value(Parser&, void* val_ptr);
|
||||||
|
static bool readS32Value(Parser&, void* val_ptr);
|
||||||
|
static bool readF32Value(Parser&, void* val_ptr);
|
||||||
|
static bool readF64Value(Parser&, void* val_ptr);
|
||||||
|
static bool readColor4Value(Parser&, void* val_ptr);
|
||||||
|
static bool readUIColorValue(Parser&, void* val_ptr);
|
||||||
|
static bool readUUIDValue(Parser&, void* val_ptr);
|
||||||
|
static bool readSDValue(Parser&, void* val_ptr);
|
||||||
|
|
||||||
|
private:
|
||||||
|
static void startElementHandler(void *userData, const char *name, const char **atts);
|
||||||
|
static void endElementHandler(void *userData, const char *name);
|
||||||
|
static void characterDataHandler(void *userData, const char *s, int len);
|
||||||
|
|
||||||
|
void startElement(const char *name, const char **atts);
|
||||||
|
void endElement(const char *name);
|
||||||
|
void characterData(const char *s, int len);
|
||||||
|
bool readAttributes(const char **atts);
|
||||||
|
bool processText();
|
||||||
|
|
||||||
|
Parser::name_stack_t mNameStack;
|
||||||
|
struct XML_ParserStruct* mParser;
|
||||||
|
LLXMLNodePtr mLastWrittenChild;
|
||||||
|
S32 mCurReadDepth;
|
||||||
|
std::string mCurFileName;
|
||||||
|
std::string mTextContents;
|
||||||
|
const char* mCurAttributeValueBegin;
|
||||||
|
std::vector<S32> mTokenSizeStack;
|
||||||
|
std::vector<std::string> mScope;
|
||||||
|
std::vector<bool> mEmptyLeafNode;
|
||||||
|
element_start_callback_t mElementCB;
|
||||||
|
|
||||||
|
std::vector<std::pair<LLInitParam::BaseBlock*, S32> > mOutputStack;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif //LLXUIPARSER_H
|
||||||
@@ -259,7 +259,7 @@ BOOL LLXMLNode::removeChild(LLXMLNode *target_child)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLXMLNode::addChild(LLXMLNodePtr new_child, LLXMLNodePtr after_child)
|
void LLXMLNode::addChild(LLXMLNodePtr& new_child, LLXMLNodePtr after_child)
|
||||||
{
|
{
|
||||||
if (new_child->mParent != NULL)
|
if (new_child->mParent != NULL)
|
||||||
{
|
{
|
||||||
@@ -343,8 +343,9 @@ LLXMLNodePtr LLXMLNode::createChild(const char* name, BOOL is_attribute)
|
|||||||
// virtual
|
// virtual
|
||||||
LLXMLNodePtr LLXMLNode::createChild(LLStringTableEntry* name, BOOL is_attribute)
|
LLXMLNodePtr LLXMLNode::createChild(LLStringTableEntry* name, BOOL is_attribute)
|
||||||
{
|
{
|
||||||
LLXMLNode* ret = new LLXMLNode(name, is_attribute);
|
LLXMLNodePtr ret(new LLXMLNode(name, is_attribute));
|
||||||
ret->mID.clear();
|
ret->mID.clear();
|
||||||
|
|
||||||
addChild(ret);
|
addChild(ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -358,11 +359,12 @@ BOOL LLXMLNode::deleteChild(LLXMLNode *child)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLXMLNode::setParent(LLXMLNodePtr new_parent)
|
void LLXMLNode::setParent(LLXMLNodePtr& new_parent)
|
||||||
{
|
{
|
||||||
if (new_parent.notNull())
|
if (new_parent.notNull())
|
||||||
{
|
{
|
||||||
new_parent->addChild(this);
|
LLXMLNodePtr this_ptr(this);
|
||||||
|
new_parent->addChild(this_ptr);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -968,6 +970,12 @@ bool LLXMLNode::getLayeredXMLNode(LLXMLNodePtr& root,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// static
|
||||||
|
void LLXMLNode::writeHeaderToFile(LLFILE *out_file)
|
||||||
|
{
|
||||||
|
fprintf(out_file, "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>\n");
|
||||||
|
}
|
||||||
|
|
||||||
void LLXMLNode::writeToFile(LLFILE *out_file, const std::string& indent, bool use_type_decorations)
|
void LLXMLNode::writeToFile(LLFILE *out_file, const std::string& indent, bool use_type_decorations)
|
||||||
{
|
{
|
||||||
if (isFullyDefault())
|
if (isFullyDefault())
|
||||||
@@ -1233,7 +1241,8 @@ void LLXMLNode::scrubToTree(LLXMLNode *tree)
|
|||||||
std::vector<LLXMLNodePtr>::iterator itor3;
|
std::vector<LLXMLNodePtr>::iterator itor3;
|
||||||
for (itor3=to_delete_list.begin(); itor3!=to_delete_list.end(); ++itor3)
|
for (itor3=to_delete_list.begin(); itor3!=to_delete_list.end(); ++itor3)
|
||||||
{
|
{
|
||||||
(*itor3)->setParent(NULL);
|
LLXMLNodePtr ptr;
|
||||||
|
(*itor3)->setParent(ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1384,7 +1393,7 @@ BOOL LLXMLNode::getAttributeU8(const char* name, U8& value )
|
|||||||
BOOL LLXMLNode::getAttributeS8(const char* name, S8& value )
|
BOOL LLXMLNode::getAttributeS8(const char* name, S8& value )
|
||||||
{
|
{
|
||||||
LLXMLNodePtr node;
|
LLXMLNodePtr node;
|
||||||
S32 val;
|
S32 val = 0;
|
||||||
if (!(getAttribute(name, node) && node->getIntValue(1, &val)))
|
if (!(getAttribute(name, node) && node->getIntValue(1, &val)))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@@ -1396,7 +1405,7 @@ BOOL LLXMLNode::getAttributeS8(const char* name, S8& value )
|
|||||||
BOOL LLXMLNode::getAttributeU16(const char* name, U16& value )
|
BOOL LLXMLNode::getAttributeU16(const char* name, U16& value )
|
||||||
{
|
{
|
||||||
LLXMLNodePtr node;
|
LLXMLNodePtr node;
|
||||||
U32 val;
|
U32 val = 0;
|
||||||
if (!(getAttribute(name, node) && node->getUnsignedValue(1, &val)))
|
if (!(getAttribute(name, node) && node->getUnsignedValue(1, &val)))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@@ -1408,7 +1417,7 @@ BOOL LLXMLNode::getAttributeU16(const char* name, U16& value )
|
|||||||
BOOL LLXMLNode::getAttributeS16(const char* name, S16& value )
|
BOOL LLXMLNode::getAttributeS16(const char* name, S16& value )
|
||||||
{
|
{
|
||||||
LLXMLNodePtr node;
|
LLXMLNodePtr node;
|
||||||
S32 val;
|
S32 val = 0;
|
||||||
if (!(getAttribute(name, node) && node->getIntValue(1, &val)))
|
if (!(getAttribute(name, node) && node->getIntValue(1, &val)))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@@ -2781,7 +2790,8 @@ void LLXMLNode::setName(LLStringTableEntry* name)
|
|||||||
mName = name;
|
mName = name;
|
||||||
if (old_parent)
|
if (old_parent)
|
||||||
{
|
{
|
||||||
old_parent->addChild(this);
|
LLXMLNodePtr this_ptr(this);
|
||||||
|
old_parent->addChild(this_ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,6 @@
|
|||||||
#include "llstringtable.h"
|
#include "llstringtable.h"
|
||||||
#include "llfile.h"
|
#include "llfile.h"
|
||||||
|
|
||||||
|
|
||||||
class LLVector3;
|
class LLVector3;
|
||||||
class LLVector3d;
|
class LLVector3d;
|
||||||
class LLQuaternion;
|
class LLQuaternion;
|
||||||
@@ -133,8 +132,8 @@ public:
|
|||||||
BOOL isNull();
|
BOOL isNull();
|
||||||
|
|
||||||
BOOL deleteChild(LLXMLNode* child);
|
BOOL deleteChild(LLXMLNode* child);
|
||||||
void addChild(LLXMLNodePtr new_child, LLXMLNodePtr after_child = LLXMLNodePtr(NULL));
|
void addChild(LLXMLNodePtr& new_child, LLXMLNodePtr after_child = LLXMLNodePtr(NULL));
|
||||||
void setParent(LLXMLNodePtr new_parent); // reparent if necessary
|
void setParent(LLXMLNodePtr& new_parent); // reparent if necessary
|
||||||
|
|
||||||
// Serialization
|
// Serialization
|
||||||
static bool parseFile(
|
static bool parseFile(
|
||||||
@@ -157,6 +156,11 @@ public:
|
|||||||
|
|
||||||
static bool getLayeredXMLNode(LLXMLNodePtr& root, const std::vector<std::string>& paths);
|
static bool getLayeredXMLNode(LLXMLNodePtr& root, const std::vector<std::string>& paths);
|
||||||
|
|
||||||
|
|
||||||
|
// Write standard XML file header:
|
||||||
|
// <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
|
static void writeHeaderToFile(LLFILE *out_file);
|
||||||
|
|
||||||
// Write XML to file with one attribute per line.
|
// Write XML to file with one attribute per line.
|
||||||
// XML escapes values as they are written.
|
// XML escapes values as they are written.
|
||||||
void writeToFile(LLFILE *out_file, const std::string& indent = std::string(), bool use_type_decorations=true);
|
void writeToFile(LLFILE *out_file, const std::string& indent = std::string(), bool use_type_decorations=true);
|
||||||
@@ -325,7 +329,11 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
LLStringTableEntry *mName; // The name of this node
|
LLStringTableEntry *mName; // The name of this node
|
||||||
std::string mValue; // The value of this node (use getters/setters only)
|
|
||||||
|
// The value of this node (use getters/setters only)
|
||||||
|
// Values are not XML-escaped in memory
|
||||||
|
// They may contain " (quot) ' (apos) & (amp) < (lt) > (gt)
|
||||||
|
std::string mValue;
|
||||||
|
|
||||||
LLXMLNodePtr mDefault; // Mirror node in the default tree
|
LLXMLNodePtr mDefault; // Mirror node in the default tree
|
||||||
|
|
||||||
|
|||||||
@@ -1,387 +0,0 @@
|
|||||||
# keys.ini
|
|
||||||
#
|
|
||||||
# keyboard binding initialization
|
|
||||||
#
|
|
||||||
# comments must have # in the first column
|
|
||||||
# blank lines OK
|
|
||||||
#
|
|
||||||
# Format:
|
|
||||||
# mode key mask function
|
|
||||||
#
|
|
||||||
# mode must be one of FIRST_PERSON, THIRD_PERSON, EDIT, EDIT_AVATAR, or CONVERSATION
|
|
||||||
# key must be upper case, or SPACE, HOME, END, PGUP, PGDN, LEFT, RIGHT, UP, DOWN,
|
|
||||||
# or one of ,.;'[]
|
|
||||||
# mask must be NONE, SHIFT, ALT, ALT_SHIFT.
|
|
||||||
# Control is reserved for user commands.
|
|
||||||
# function must be a function named in llkeyboard.cpp
|
|
||||||
|
|
||||||
FIRST_PERSON A NONE slide_left
|
|
||||||
FIRST_PERSON D NONE slide_right
|
|
||||||
FIRST_PERSON W NONE push_forward
|
|
||||||
FIRST_PERSON S NONE push_backward
|
|
||||||
FIRST_PERSON E NONE jump
|
|
||||||
FIRST_PERSON C NONE push_down
|
|
||||||
FIRST_PERSON F NONE toggle_fly
|
|
||||||
|
|
||||||
FIRST_PERSON LEFT NONE slide_left
|
|
||||||
FIRST_PERSON RIGHT NONE slide_right
|
|
||||||
FIRST_PERSON UP NONE push_forward
|
|
||||||
FIRST_PERSON DOWN NONE push_backward
|
|
||||||
FIRST_PERSON PGUP NONE jump
|
|
||||||
FIRST_PERSON PGDN NONE push_down
|
|
||||||
FIRST_PERSON HOME NONE toggle_fly
|
|
||||||
|
|
||||||
FIRST_PERSON PAD_LEFT NONE slide_left
|
|
||||||
FIRST_PERSON PAD_RIGHT NONE slide_right
|
|
||||||
FIRST_PERSON PAD_UP NONE push_forward
|
|
||||||
FIRST_PERSON PAD_DOWN NONE push_backward
|
|
||||||
FIRST_PERSON PAD_PGUP NONE jump
|
|
||||||
FIRST_PERSON PAD_PGDN NONE push_down
|
|
||||||
FIRST_PERSON PAD_HOME NONE toggle_fly
|
|
||||||
FIRST_PERSON PAD_CENTER NONE stop_moving
|
|
||||||
FIRST_PERSON PAD_ENTER NONE start_chat
|
|
||||||
FIRST_PERSON PAD_DIVIDE NONE start_gesture
|
|
||||||
|
|
||||||
FIRST_PERSON A SHIFT slide_left
|
|
||||||
FIRST_PERSON D SHIFT slide_right
|
|
||||||
FIRST_PERSON W SHIFT push_forward
|
|
||||||
FIRST_PERSON S SHIFT push_backward
|
|
||||||
FIRST_PERSON E SHIFT jump
|
|
||||||
FIRST_PERSON C SHIFT toggle_down
|
|
||||||
FIRST_PERSON F SHIFT toggle_fly
|
|
||||||
|
|
||||||
FIRST_PERSON SPACE NONE stop_moving
|
|
||||||
FIRST_PERSON ENTER NONE start_chat
|
|
||||||
FIRST_PERSON DIVIDE NONE start_gesture
|
|
||||||
FIRST_PERSON / NONE start_gesture
|
|
||||||
|
|
||||||
FIRST_PERSON LEFT SHIFT slide_left
|
|
||||||
FIRST_PERSON RIGHT SHIFT slide_right
|
|
||||||
FIRST_PERSON UP SHIFT push_forward
|
|
||||||
FIRST_PERSON DOWN SHIFT push_backward
|
|
||||||
FIRST_PERSON PGUP SHIFT jump
|
|
||||||
FIRST_PERSON PGDN SHIFT toggle_down
|
|
||||||
|
|
||||||
FIRST_PERSON PAD_LEFT SHIFT slide_left
|
|
||||||
FIRST_PERSON PAD_RIGHT SHIFT slide_right
|
|
||||||
FIRST_PERSON PAD_UP SHIFT push_forward
|
|
||||||
FIRST_PERSON PAD_DOWN SHIFT push_backward
|
|
||||||
FIRST_PERSON PAD_PGUP SHIFT jump
|
|
||||||
FIRST_PERSON PAD_PGDN SHIFT toggle_down
|
|
||||||
FIRST_PERSON PAD_HOME SHIFT toggle_fly
|
|
||||||
FIRST_PERSON PAD_ENTER SHIFT start_chat
|
|
||||||
FIRST_PERSON PAD_DIVIDE SHIFT start_gesture
|
|
||||||
|
|
||||||
THIRD_PERSON A NONE turn_left
|
|
||||||
THIRD_PERSON D NONE turn_right
|
|
||||||
THIRD_PERSON A SHIFT slide_left
|
|
||||||
THIRD_PERSON D SHIFT slide_right
|
|
||||||
THIRD_PERSON W NONE push_forward
|
|
||||||
THIRD_PERSON S NONE push_backward
|
|
||||||
THIRD_PERSON W SHIFT push_forward
|
|
||||||
THIRD_PERSON S SHIFT push_backward
|
|
||||||
THIRD_PERSON E NONE jump
|
|
||||||
THIRD_PERSON C NONE push_down
|
|
||||||
THIRD_PERSON E SHIFT jump
|
|
||||||
THIRD_PERSON C SHIFT toggle_down
|
|
||||||
|
|
||||||
THIRD_PERSON F NONE toggle_fly
|
|
||||||
THIRD_PERSON F SHIFT toggle_fly
|
|
||||||
|
|
||||||
THIRD_PERSON SPACE NONE stop_moving
|
|
||||||
THIRD_PERSON ENTER NONE start_chat
|
|
||||||
THIRD_PERSON DIVIDE NONE start_gesture
|
|
||||||
THIRD_PERSON / NONE start_gesture
|
|
||||||
|
|
||||||
THIRD_PERSON LEFT NONE turn_left
|
|
||||||
THIRD_PERSON LEFT SHIFT slide_left
|
|
||||||
THIRD_PERSON RIGHT NONE turn_right
|
|
||||||
THIRD_PERSON RIGHT SHIFT slide_right
|
|
||||||
THIRD_PERSON UP NONE push_forward
|
|
||||||
THIRD_PERSON DOWN NONE push_backward
|
|
||||||
THIRD_PERSON UP SHIFT push_forward
|
|
||||||
THIRD_PERSON DOWN SHIFT push_backward
|
|
||||||
THIRD_PERSON PGUP NONE jump
|
|
||||||
THIRD_PERSON PGDN NONE push_down
|
|
||||||
THIRD_PERSON PGUP SHIFT jump
|
|
||||||
THIRD_PERSON PGDN SHIFT toggle_down
|
|
||||||
THIRD_PERSON HOME SHIFT toggle_fly
|
|
||||||
THIRD_PERSON HOME NONE toggle_fly
|
|
||||||
|
|
||||||
THIRD_PERSON PAD_LEFT NONE turn_left
|
|
||||||
THIRD_PERSON PAD_LEFT SHIFT slide_left
|
|
||||||
THIRD_PERSON PAD_RIGHT NONE turn_right
|
|
||||||
THIRD_PERSON PAD_RIGHT SHIFT slide_right
|
|
||||||
THIRD_PERSON PAD_UP NONE push_forward
|
|
||||||
THIRD_PERSON PAD_DOWN NONE push_backward
|
|
||||||
THIRD_PERSON PAD_UP SHIFT push_forward
|
|
||||||
THIRD_PERSON PAD_DOWN SHIFT push_backward
|
|
||||||
THIRD_PERSON PAD_PGUP NONE jump
|
|
||||||
THIRD_PERSON PAD_PGDN NONE push_down
|
|
||||||
THIRD_PERSON PAD_PGUP SHIFT jump
|
|
||||||
THIRD_PERSON PAD_PGDN SHIFT toggle_down
|
|
||||||
THIRD_PERSON PAD_HOME NONE toggle_fly
|
|
||||||
THIRD_PERSON PAD_HOME SHIFT toggle_fly
|
|
||||||
THIRD_PERSON PAD_CENTER NONE stop_moving
|
|
||||||
THIRD_PERSON PAD_CENTER SHIFT stop_moving
|
|
||||||
THIRD_PERSON PAD_ENTER NONE start_chat
|
|
||||||
THIRD_PERSON PAD_ENTER SHIFT start_chat
|
|
||||||
THIRD_PERSON PAD_DIVIDE NONE start_gesture
|
|
||||||
THIRD_PERSON PAD_DIVIDE SHIFT start_gesture
|
|
||||||
|
|
||||||
# Camera controls in third person on Alt
|
|
||||||
THIRD_PERSON LEFT ALT spin_around_cw
|
|
||||||
THIRD_PERSON RIGHT ALT spin_around_ccw
|
|
||||||
THIRD_PERSON UP ALT move_forward
|
|
||||||
THIRD_PERSON DOWN ALT move_backward
|
|
||||||
THIRD_PERSON PGUP ALT spin_over
|
|
||||||
THIRD_PERSON PGDN ALT spin_under
|
|
||||||
|
|
||||||
THIRD_PERSON A ALT spin_around_cw
|
|
||||||
THIRD_PERSON D ALT spin_around_ccw
|
|
||||||
THIRD_PERSON W ALT move_forward
|
|
||||||
THIRD_PERSON S ALT move_backward
|
|
||||||
THIRD_PERSON E ALT spin_over
|
|
||||||
THIRD_PERSON C ALT spin_under
|
|
||||||
|
|
||||||
THIRD_PERSON PAD_LEFT ALT spin_around_cw
|
|
||||||
THIRD_PERSON PAD_RIGHT ALT spin_around_ccw
|
|
||||||
THIRD_PERSON PAD_UP ALT move_forward
|
|
||||||
THIRD_PERSON PAD_DOWN ALT move_backward
|
|
||||||
THIRD_PERSON PAD_PGUP ALT spin_over
|
|
||||||
THIRD_PERSON PAD_PGDN ALT spin_under
|
|
||||||
THIRD_PERSON PAD_ENTER ALT start_chat
|
|
||||||
THIRD_PERSON PAD_DIVIDE ALT start_gesture
|
|
||||||
|
|
||||||
# mimic alt zoom behavior with keyboard only
|
|
||||||
THIRD_PERSON A CTL_ALT spin_around_cw
|
|
||||||
THIRD_PERSON D CTL_ALT spin_around_ccw
|
|
||||||
THIRD_PERSON W CTL_ALT spin_over
|
|
||||||
THIRD_PERSON S CTL_ALT spin_under
|
|
||||||
THIRD_PERSON E CTL_ALT spin_over
|
|
||||||
THIRD_PERSON C CTL_ALT spin_under
|
|
||||||
|
|
||||||
THIRD_PERSON LEFT CTL_ALT spin_around_cw
|
|
||||||
THIRD_PERSON RIGHT CTL_ALT spin_around_ccw
|
|
||||||
THIRD_PERSON UP CTL_ALT spin_over
|
|
||||||
THIRD_PERSON DOWN CTL_ALT spin_under
|
|
||||||
THIRD_PERSON PGUP CTL_ALT spin_over
|
|
||||||
THIRD_PERSON PGDN CTL_ALT spin_under
|
|
||||||
|
|
||||||
THIRD_PERSON PAD_LEFT CTL_ALT spin_around_cw
|
|
||||||
THIRD_PERSON PAD_RIGHT CTL_ALT spin_around_ccw
|
|
||||||
THIRD_PERSON PAD_UP CTL_ALT spin_over
|
|
||||||
THIRD_PERSON PAD_DOWN CTL_ALT spin_under
|
|
||||||
THIRD_PERSON PAD_PGUP CTL_ALT spin_over
|
|
||||||
THIRD_PERSON PAD_PGDN CTL_ALT spin_under
|
|
||||||
THIRD_PERSON PAD_ENTER CTL_ALT start_chat
|
|
||||||
THIRD_PERSON PAD_DIVIDE CTL_ALT start_gesture
|
|
||||||
|
|
||||||
# Therefore pan on Alt-Shift
|
|
||||||
THIRD_PERSON A CTL_ALT_SHIFT pan_left
|
|
||||||
THIRD_PERSON D CTL_ALT_SHIFT pan_right
|
|
||||||
THIRD_PERSON W CTL_ALT_SHIFT pan_up
|
|
||||||
THIRD_PERSON S CTL_ALT_SHIFT pan_down
|
|
||||||
THIRD_PERSON E CTL_ALT_SHIFT pan_in
|
|
||||||
THIRD_PERSON C CTL_ALT_SHIFT pan_out
|
|
||||||
|
|
||||||
THIRD_PERSON LEFT CTL_ALT_SHIFT pan_left
|
|
||||||
THIRD_PERSON RIGHT CTL_ALT_SHIFT pan_right
|
|
||||||
THIRD_PERSON UP CTL_ALT_SHIFT pan_up
|
|
||||||
THIRD_PERSON DOWN CTL_ALT_SHIFT pan_down
|
|
||||||
THIRD_PERSON PGUP CTL_ALT_SHIFT pan_in
|
|
||||||
THIRD_PERSON PGDN CTL_ALT_SHIFT pan_out
|
|
||||||
|
|
||||||
THIRD_PERSON PAD_LEFT CTL_ALT_SHIFT pan_left
|
|
||||||
THIRD_PERSON PAD_RIGHT CTL_ALT_SHIFT pan_right
|
|
||||||
THIRD_PERSON PAD_UP CTL_ALT_SHIFT pan_up
|
|
||||||
THIRD_PERSON PAD_DOWN CTL_ALT_SHIFT pan_down
|
|
||||||
THIRD_PERSON PAD_PGUP CTL_ALT_SHIFT pan_in
|
|
||||||
THIRD_PERSON PAD_PGDN CTL_ALT_SHIFT pan_out
|
|
||||||
THIRD_PERSON PAD_ENTER CTL_ALT_SHIFT start_chat
|
|
||||||
THIRD_PERSON PAD_DIVIDE CTL_ALT_SHIFT start_gesture
|
|
||||||
|
|
||||||
# Basic editing camera control
|
|
||||||
EDIT A NONE spin_around_cw
|
|
||||||
EDIT D NONE spin_around_ccw
|
|
||||||
EDIT W NONE move_forward
|
|
||||||
EDIT S NONE move_backward
|
|
||||||
EDIT E NONE spin_over
|
|
||||||
EDIT C NONE spin_under
|
|
||||||
EDIT ENTER NONE start_chat
|
|
||||||
EDIT DIVIDE NONE start_gesture
|
|
||||||
EDIT / NONE start_gesture
|
|
||||||
EDIT PAD_ENTER NONE start_chat
|
|
||||||
EDIT PAD_DIVIDE NONE start_gesture
|
|
||||||
|
|
||||||
EDIT LEFT NONE spin_around_cw
|
|
||||||
EDIT RIGHT NONE spin_around_ccw
|
|
||||||
EDIT UP NONE move_forward
|
|
||||||
EDIT DOWN NONE move_backward
|
|
||||||
EDIT PGUP NONE spin_over
|
|
||||||
EDIT PGDN NONE spin_under
|
|
||||||
|
|
||||||
EDIT A SHIFT pan_left
|
|
||||||
EDIT D SHIFT pan_right
|
|
||||||
EDIT W SHIFT pan_up
|
|
||||||
EDIT S SHIFT pan_down
|
|
||||||
|
|
||||||
EDIT LEFT SHIFT pan_left
|
|
||||||
EDIT RIGHT SHIFT pan_right
|
|
||||||
EDIT UP SHIFT pan_up
|
|
||||||
EDIT DOWN SHIFT pan_down
|
|
||||||
|
|
||||||
# Walking works with ALT held down.
|
|
||||||
EDIT A ALT slide_left
|
|
||||||
EDIT D ALT slide_right
|
|
||||||
EDIT W ALT push_forward
|
|
||||||
EDIT S ALT push_backward
|
|
||||||
EDIT E ALT jump
|
|
||||||
EDIT C ALT push_down
|
|
||||||
|
|
||||||
EDIT LEFT ALT slide_left
|
|
||||||
EDIT RIGHT ALT slide_right
|
|
||||||
EDIT UP ALT push_forward
|
|
||||||
EDIT DOWN ALT push_backward
|
|
||||||
EDIT PGUP ALT jump
|
|
||||||
EDIT PGDN ALT push_down
|
|
||||||
EDIT HOME ALT toggle_fly
|
|
||||||
|
|
||||||
EDIT PAD_LEFT ALT slide_left
|
|
||||||
EDIT PAD_RIGHT ALT slide_right
|
|
||||||
EDIT PAD_UP ALT push_forward
|
|
||||||
EDIT PAD_DOWN ALT push_backward
|
|
||||||
EDIT PAD_PGUP ALT jump
|
|
||||||
EDIT PAD_PGDN ALT push_down
|
|
||||||
EDIT PAD_ENTER ALT start_chat
|
|
||||||
EDIT PAD_DIVIDE ALT start_gesture
|
|
||||||
|
|
||||||
SITTING A ALT spin_around_cw
|
|
||||||
SITTING D ALT spin_around_ccw
|
|
||||||
SITTING W ALT move_forward
|
|
||||||
SITTING S ALT move_backward
|
|
||||||
SITTING E ALT spin_over_sitting
|
|
||||||
SITTING C ALT spin_under_sitting
|
|
||||||
|
|
||||||
SITTING LEFT ALT spin_around_cw
|
|
||||||
SITTING RIGHT ALT spin_around_ccw
|
|
||||||
SITTING UP ALT move_forward
|
|
||||||
SITTING DOWN ALT move_backward
|
|
||||||
SITTING PGUP ALT spin_over
|
|
||||||
SITTING PGDN ALT spin_under
|
|
||||||
|
|
||||||
SITTING A CTL_ALT spin_around_cw
|
|
||||||
SITTING D CTL_ALT spin_around_ccw
|
|
||||||
SITTING W CTL_ALT spin_over
|
|
||||||
SITTING S CTL_ALT spin_under
|
|
||||||
SITTING E CTL_ALT spin_over
|
|
||||||
SITTING C CTL_ALT spin_under
|
|
||||||
|
|
||||||
SITTING LEFT CTL_ALT spin_around_cw
|
|
||||||
SITTING RIGHT CTL_ALT spin_around_ccw
|
|
||||||
SITTING UP CTL_ALT spin_over
|
|
||||||
SITTING DOWN CTL_ALT spin_under
|
|
||||||
SITTING PGUP CTL_ALT spin_over
|
|
||||||
SITTING PGDN CTL_ALT spin_under
|
|
||||||
|
|
||||||
|
|
||||||
SITTING A NONE spin_around_cw_sitting
|
|
||||||
SITTING D NONE spin_around_ccw_sitting
|
|
||||||
SITTING W NONE move_forward_sitting
|
|
||||||
SITTING S NONE move_backward_sitting
|
|
||||||
SITTING E NONE spin_over_sitting
|
|
||||||
SITTING C NONE spin_under_sitting
|
|
||||||
|
|
||||||
SITTING LEFT NONE spin_around_cw_sitting
|
|
||||||
SITTING RIGHT NONE spin_around_ccw_sitting
|
|
||||||
SITTING UP NONE move_forward_sitting
|
|
||||||
SITTING DOWN NONE move_backward_sitting
|
|
||||||
SITTING PGUP NONE spin_over_sitting
|
|
||||||
SITTING PGDN NONE spin_under_sitting
|
|
||||||
|
|
||||||
SITTING PAD_LEFT NONE spin_around_cw_sitting
|
|
||||||
SITTING PAD_RIGHT NONE spin_around_ccw_sitting
|
|
||||||
SITTING PAD_UP NONE move_forward_sitting
|
|
||||||
SITTING PAD_DOWN NONE move_backward_sitting
|
|
||||||
SITTING PAD_PGUP NONE spin_over_sitting
|
|
||||||
SITTING PAD_PGDN NONE spin_under_sitting
|
|
||||||
SITTING PAD_CENTER NONE stop_moving
|
|
||||||
SITTING PAD_ENTER NONE start_chat
|
|
||||||
SITTING PAD_DIVIDE NONE start_gesture
|
|
||||||
|
|
||||||
# these are for passing controls when sitting on vehicles
|
|
||||||
SITTING A SHIFT slide_left
|
|
||||||
SITTING D SHIFT slide_right
|
|
||||||
SITTING W SHIFT move_forward_sitting
|
|
||||||
SITTING S SHIFT move_backward_sitting
|
|
||||||
SITTING E SHIFT spin_over_sitting
|
|
||||||
SITTING C SHIFT spin_under_sitting
|
|
||||||
|
|
||||||
SITTING LEFT SHIFT slide_left
|
|
||||||
SITTING RIGHT SHIFT slide_right
|
|
||||||
SITTING UP SHIFT move_forward_sitting
|
|
||||||
SITTING DOWN SHIFT move_backward_sitting
|
|
||||||
SITTING PGUP SHIFT spin_over_sitting
|
|
||||||
SITTING PGDN SHIFT spin_under_sitting
|
|
||||||
|
|
||||||
SITTING PAD_LEFT SHIFT slide_left
|
|
||||||
SITTING PAD_RIGHT SHIFT slide_right
|
|
||||||
SITTING PAD_UP SHIFT move_forward_sitting
|
|
||||||
SITTING PAD_DOWN SHIFT move_backward_sitting
|
|
||||||
SITTING PAD_PGUP SHIFT spin_over_sitting
|
|
||||||
SITTING PAD_PGDN SHIFT spin_under_sitting
|
|
||||||
SITTING PAD_ENTER SHIFT start_chat
|
|
||||||
SITTING PAD_DIVIDE SHIFT start_gesture
|
|
||||||
|
|
||||||
# pan on Alt-Shift
|
|
||||||
SITTING A CTL_ALT_SHIFT pan_left
|
|
||||||
SITTING D CTL_ALT_SHIFT pan_right
|
|
||||||
SITTING W CTL_ALT_SHIFT pan_up
|
|
||||||
SITTING S CTL_ALT_SHIFT pan_down
|
|
||||||
SITTING E CTL_ALT_SHIFT pan_in
|
|
||||||
SITTING C CTL_ALT_SHIFT pan_out
|
|
||||||
|
|
||||||
SITTING LEFT CTL_ALT_SHIFT pan_left
|
|
||||||
SITTING RIGHT CTL_ALT_SHIFT pan_right
|
|
||||||
SITTING UP CTL_ALT_SHIFT pan_up
|
|
||||||
SITTING DOWN CTL_ALT_SHIFT pan_down
|
|
||||||
SITTING PGUP CTL_ALT_SHIFT pan_in
|
|
||||||
SITTING PGDN CTL_ALT_SHIFT pan_out
|
|
||||||
|
|
||||||
SITTING PAD_LEFT CTL_ALT_SHIFT pan_left
|
|
||||||
SITTING PAD_RIGHT CTL_ALT_SHIFT pan_right
|
|
||||||
SITTING PAD_UP CTL_ALT_SHIFT pan_up
|
|
||||||
SITTING PAD_DOWN CTL_ALT_SHIFT pan_down
|
|
||||||
SITTING PAD_PGUP CTL_ALT_SHIFT pan_in
|
|
||||||
SITTING PAD_PGDN CTL_ALT_SHIFT pan_out
|
|
||||||
SITTING PAD_ENTER CTL_ALT_SHIFT start_chat
|
|
||||||
SITTING PAD_DIVIDE CTL_ALT_SHIFT start_gesture
|
|
||||||
|
|
||||||
SITTING ENTER NONE start_chat
|
|
||||||
SITTING DIVIDE NONE start_gesture
|
|
||||||
SITTING / NONE start_gesture
|
|
||||||
|
|
||||||
# Avatar editing camera controls
|
|
||||||
EDIT_AVATAR A NONE edit_avatar_spin_cw
|
|
||||||
EDIT_AVATAR D NONE edit_avatar_spin_ccw
|
|
||||||
EDIT_AVATAR W NONE edit_avatar_move_forward
|
|
||||||
EDIT_AVATAR S NONE edit_avatar_move_backward
|
|
||||||
EDIT_AVATAR E NONE edit_avatar_spin_over
|
|
||||||
EDIT_AVATAR C NONE edit_avatar_spin_under
|
|
||||||
EDIT_AVATAR LEFT NONE edit_avatar_spin_cw
|
|
||||||
EDIT_AVATAR RIGHT NONE edit_avatar_spin_ccw
|
|
||||||
EDIT_AVATAR UP NONE edit_avatar_move_forward
|
|
||||||
EDIT_AVATAR DOWN NONE edit_avatar_move_backward
|
|
||||||
EDIT_AVATAR PGUP NONE edit_avatar_spin_over
|
|
||||||
EDIT_AVATAR PGDN NONE edit_avatar_spin_under
|
|
||||||
EDIT_AVATAR ENTER NONE start_chat
|
|
||||||
EDIT_AVATAR DIVIDE NONE start_gesture
|
|
||||||
EDIT_AVATAR / NONE start_gesture
|
|
||||||
EDIT_AVATAR PAD_LEFT NONE edit_avatar_spin_cw
|
|
||||||
EDIT_AVATAR PAD_RIGHT NONE edit_avatar_spin_ccw
|
|
||||||
EDIT_AVATAR PAD_UP NONE edit_avatar_move_forward
|
|
||||||
EDIT_AVATAR PAD_DOWN NONE edit_avatar_move_backward
|
|
||||||
EDIT_AVATAR PAD_PGUP NONE edit_avatar_spin_over
|
|
||||||
EDIT_AVATAR PAD_PGDN NONE edit_avatar_spin_under
|
|
||||||
EDIT_AVATAR PAD_ENTER NONE start_chat
|
|
||||||
EDIT_AVATAR PAD_DIVIDE NONE start_gesture
|
|
||||||
380
indra/newview/app_settings/keys.xml
Normal file
380
indra/newview/app_settings/keys.xml
Normal file
@@ -0,0 +1,380 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
|
<keys>
|
||||||
|
<first_person>
|
||||||
|
<binding key="A" mask="NONE" command="slide_left"/>
|
||||||
|
<binding key="D" mask="NONE" command="slide_right"/>
|
||||||
|
<binding key="W" mask="NONE" command="push_forward"/>
|
||||||
|
<binding key="S" mask="NONE" command="push_backward"/>
|
||||||
|
<binding key="E" mask="NONE" command="jump"/>
|
||||||
|
<binding key="C" mask="NONE" command="push_down"/>
|
||||||
|
<binding key="F" mask="NONE" command="toggle_fly"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="NONE" command="slide_left"/>
|
||||||
|
<binding key="RIGHT" mask="NONE" command="slide_right"/>
|
||||||
|
<binding key="UP" mask="NONE" command="push_forward"/>
|
||||||
|
<binding key="DOWN" mask="NONE" command="push_backward"/>
|
||||||
|
<binding key="PGUP" mask="NONE" command="jump"/>
|
||||||
|
<binding key="PGDN" mask="NONE" command="push_down"/>
|
||||||
|
<binding key="HOME" mask="NONE" command="toggle_fly"/>
|
||||||
|
|
||||||
|
<binding key="PAD_LEFT" mask="NONE" command="slide_left"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="NONE" command="slide_right"/>
|
||||||
|
<binding key="PAD_UP" mask="NONE" command="push_forward"/>
|
||||||
|
<binding key="PAD_DOWN" mask="NONE" command="push_backward"/>
|
||||||
|
<binding key="PAD_PGUP" mask="NONE" command="jump"/>
|
||||||
|
<binding key="PAD_PGDN" mask="NONE" command="push_down"/>
|
||||||
|
<binding key="PAD_HOME" mask="NONE" command="toggle_fly"/>
|
||||||
|
<binding key="PAD_CENTER" mask="NONE" command="stop_moving"/>
|
||||||
|
<binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
|
||||||
|
|
||||||
|
<binding key="A" mask="SHIFT" command="slide_left"/>
|
||||||
|
<binding key="D" mask="SHIFT" command="slide_right"/>
|
||||||
|
<binding key="W" mask="SHIFT" command="push_forward"/>
|
||||||
|
<binding key="S" mask="SHIFT" command="push_backward"/>
|
||||||
|
<binding key="E" mask="SHIFT" command="jump"/>
|
||||||
|
<binding key="C" mask="SHIFT" command="toggle_down"/>
|
||||||
|
<binding key="F" mask="SHIFT" command="toggle_fly"/>
|
||||||
|
|
||||||
|
<binding key="SPACE" mask="NONE" command="stop_moving"/>
|
||||||
|
<binding key="ENTER" mask="NONE" command="start_chat"/>
|
||||||
|
<binding key="DIVIDE" mask="NONE" command="start_gesture"/>
|
||||||
|
<binding key="/" mask="NONE" command="start_gesture"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="SHIFT" command="slide_left"/>
|
||||||
|
<binding key="RIGHT" mask="SHIFT" command="slide_right"/>
|
||||||
|
<binding key="UP" mask="SHIFT" command="push_forward"/>
|
||||||
|
<binding key="DOWN" mask="SHIFT" command="push_backward"/>
|
||||||
|
<binding key="PGUP" mask="SHIFT" command="jump"/>
|
||||||
|
<binding key="PGDN" mask="SHIFT" command="toggle_down"/>
|
||||||
|
|
||||||
|
<binding key="PAD_LEFT" mask="SHIFT" command="slide_left"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="SHIFT" command="slide_right"/>
|
||||||
|
<binding key="PAD_UP" mask="SHIFT" command="push_forward"/>
|
||||||
|
<binding key="PAD_DOWN" mask="SHIFT" command="push_backward"/>
|
||||||
|
<binding key="PAD_PGUP" mask="SHIFT" command="jump"/>
|
||||||
|
<binding key="PAD_PGDN" mask="SHIFT" command="toggle_down"/>
|
||||||
|
<binding key="PAD_HOME" mask="SHIFT" command="toggle_fly"/>
|
||||||
|
<binding key="PAD_ENTER" mask="SHIFT" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="SHIFT" command="start_gesture"/>
|
||||||
|
</first_person>
|
||||||
|
<third_person>
|
||||||
|
<binding key="A" mask="NONE" command="turn_left"/>
|
||||||
|
<binding key="D" mask="NONE" command="turn_right"/>
|
||||||
|
<binding key="A" mask="SHIFT" command="slide_left"/>
|
||||||
|
<binding key="D" mask="SHIFT" command="slide_right"/>
|
||||||
|
<binding key="W" mask="NONE" command="push_forward"/>
|
||||||
|
<binding key="S" mask="NONE" command="push_backward"/>
|
||||||
|
<binding key="W" mask="SHIFT" command="push_forward"/>
|
||||||
|
<binding key="S" mask="SHIFT" command="push_backward"/>
|
||||||
|
<binding key="E" mask="NONE" command="jump"/>
|
||||||
|
<binding key="C" mask="NONE" command="push_down"/>
|
||||||
|
<binding key="E" mask="SHIFT" command="jump"/>
|
||||||
|
<binding key="C" mask="SHIFT" command="toggle_down"/>
|
||||||
|
|
||||||
|
<binding key="F" mask="NONE" command="toggle_fly"/>
|
||||||
|
<binding key="F" mask="SHIFT" command="toggle_fly"/>
|
||||||
|
|
||||||
|
<binding key="SPACE" mask="NONE" command="stop_moving"/>
|
||||||
|
<binding key="ENTER" mask="NONE" command="start_chat"/>
|
||||||
|
<binding key="DIVIDE" mask="NONE" command="start_gesture"/>
|
||||||
|
<binding key="/" mask="NONE" command="start_gesture"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="NONE" command="turn_left"/>
|
||||||
|
<binding key="LEFT" mask="SHIFT" command="slide_left"/>
|
||||||
|
<binding key="RIGHT" mask="NONE" command="turn_right"/>
|
||||||
|
<binding key="RIGHT" mask="SHIFT" command="slide_right"/>
|
||||||
|
<binding key="UP" mask="NONE" command="push_forward"/>
|
||||||
|
<binding key="DOWN" mask="NONE" command="push_backward"/>
|
||||||
|
<binding key="UP" mask="SHIFT" command="push_forward"/>
|
||||||
|
<binding key="DOWN" mask="SHIFT" command="push_backward"/>
|
||||||
|
<binding key="PGUP" mask="NONE" command="jump"/>
|
||||||
|
<binding key="PGDN" mask="NONE" command="push_down"/>
|
||||||
|
<binding key="PGUP" mask="SHIFT" command="jump"/>
|
||||||
|
<binding key="PGDN" mask="SHIFT" command="toggle_down"/>
|
||||||
|
<binding key="HOME" mask="SHIFT" command="toggle_fly"/>
|
||||||
|
<binding key="HOME" mask="NONE" command="toggle_fly"/>
|
||||||
|
|
||||||
|
<binding key="PAD_LEFT" mask="NONE" command="turn_left"/>
|
||||||
|
<binding key="PAD_LEFT" mask="SHIFT" command="slide_left"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="NONE" command="turn_right"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="SHIFT" command="slide_right"/>
|
||||||
|
<binding key="PAD_UP" mask="NONE" command="push_forward"/>
|
||||||
|
<binding key="PAD_DOWN" mask="NONE" command="push_backward"/>
|
||||||
|
<binding key="PAD_UP" mask="SHIFT" command="push_forward"/>
|
||||||
|
<binding key="PAD_DOWN" mask="SHIFT" command="push_backward"/>
|
||||||
|
<binding key="PAD_PGUP" mask="NONE" command="jump"/>
|
||||||
|
<binding key="PAD_PGDN" mask="NONE" command="push_down"/>
|
||||||
|
<binding key="PAD_PGUP" mask="SHIFT" command="jump"/>
|
||||||
|
<binding key="PAD_PGDN" mask="SHIFT" command="toggle_down"/>
|
||||||
|
<binding key="PAD_HOME" mask="NONE" command="toggle_fly"/>
|
||||||
|
<binding key="PAD_HOME" mask="SHIFT" command="toggle_fly"/>
|
||||||
|
<binding key="PAD_CENTER" mask="NONE" command="stop_moving"/>
|
||||||
|
<binding key="PAD_CENTER" mask="SHIFT" command="stop_moving"/>
|
||||||
|
<binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
|
||||||
|
<binding key="PAD_ENTER" mask="SHIFT" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="SHIFT" command="start_gesture"/>
|
||||||
|
|
||||||
|
<!--Camera controls in third person on Alt-->
|
||||||
|
<binding key="LEFT" mask="ALT" command="spin_around_cw"/>
|
||||||
|
<binding key="RIGHT" mask="ALT" command="spin_around_ccw"/>
|
||||||
|
<binding key="UP" mask="ALT" command="move_forward"/>
|
||||||
|
<binding key="DOWN" mask="ALT" command="move_backward"/>
|
||||||
|
<binding key="PGUP" mask="ALT" command="spin_over"/>
|
||||||
|
<binding key="PGDN" mask="ALT" command="spin_under"/>
|
||||||
|
|
||||||
|
<binding key="A" mask="ALT" command="spin_around_cw"/>
|
||||||
|
<binding key="D" mask="ALT" command="spin_around_ccw"/>
|
||||||
|
<binding key="W" mask="ALT" command="move_forward"/>
|
||||||
|
<binding key="S" mask="ALT" command="move_backward"/>
|
||||||
|
<binding key="E" mask="ALT" command="spin_over"/>
|
||||||
|
<binding key="C" mask="ALT" command="spin_under"/>
|
||||||
|
|
||||||
|
<binding key="PAD_LEFT" mask="ALT" command="spin_around_cw"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="ALT" command="spin_around_ccw"/>
|
||||||
|
<binding key="PAD_UP" mask="ALT" command="move_forward"/>
|
||||||
|
<binding key="PAD_DOWN" mask="ALT" command="move_backward"/>
|
||||||
|
<binding key="PAD_PGUP" mask="ALT" command="spin_over"/>
|
||||||
|
<binding key="PAD_PGDN" mask="ALT" command="spin_under"/>
|
||||||
|
<binding key="PAD_ENTER" mask="ALT" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="ALT" command="start_gesture"/>
|
||||||
|
|
||||||
|
<!--mimic alt zoom behavior with keyboard only-->
|
||||||
|
<binding key="A" mask="CTL_ALT" command="spin_around_cw"/>
|
||||||
|
<binding key="D" mask="CTL_ALT" command="spin_around_ccw"/>
|
||||||
|
<binding key="W" mask="CTL_ALT" command="spin_over"/>
|
||||||
|
<binding key="S" mask="CTL_ALT" command="spin_under"/>
|
||||||
|
<binding key="E" mask="CTL_ALT" command="spin_over"/>
|
||||||
|
<binding key="C" mask="CTL_ALT" command="spin_under"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="CTL_ALT" command="spin_around_cw"/>
|
||||||
|
<binding key="RIGHT" mask="CTL_ALT" command="spin_around_ccw"/>
|
||||||
|
<binding key="UP" mask="CTL_ALT" command="spin_over"/>
|
||||||
|
<binding key="DOWN" mask="CTL_ALT" command="spin_under"/>
|
||||||
|
<binding key="PGUP" mask="CTL_ALT" command="spin_over"/>
|
||||||
|
<binding key="PGDN" mask="CTL_ALT" command="spin_under"/>
|
||||||
|
|
||||||
|
<binding key="PAD_LEFT" mask="CTL_ALT" command="spin_around_cw"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="CTL_ALT" command="spin_around_ccw"/>
|
||||||
|
<binding key="PAD_UP" mask="CTL_ALT" command="spin_over"/>
|
||||||
|
<binding key="PAD_DOWN" mask="CTL_ALT" command="spin_under"/>
|
||||||
|
<binding key="PAD_PGUP" mask="CTL_ALT" command="spin_over"/>
|
||||||
|
<binding key="PAD_PGDN" mask="CTL_ALT" command="spin_under"/>
|
||||||
|
<binding key="PAD_ENTER" mask="CTL_ALT" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="CTL_ALT" command="start_gesture"/>
|
||||||
|
|
||||||
|
<!--Therefore pan on Alt-Shift-->
|
||||||
|
<binding key="A" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||||
|
<binding key="D" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||||
|
<binding key="W" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||||
|
<binding key="S" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||||
|
<binding key="E" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||||
|
<binding key="C" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||||
|
<binding key="RIGHT" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||||
|
<binding key="UP" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||||
|
<binding key="DOWN" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||||
|
<binding key="PGUP" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||||
|
<binding key="PGDN" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||||
|
|
||||||
|
<binding key="PAD_LEFT" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||||
|
<binding key="PAD_UP" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||||
|
<binding key="PAD_DOWN" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||||
|
<binding key="PAD_PGUP" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||||
|
<binding key="PAD_PGDN" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||||
|
<binding key="PAD_ENTER" mask="CTL_ALT_SHIFT" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="CTL_ALT_SHIFT" command="start_gesture"/>
|
||||||
|
</third_person>
|
||||||
|
|
||||||
|
<!-- Basic editing camera control -->
|
||||||
|
<edit>
|
||||||
|
<binding key="A" mask="NONE" command="spin_around_cw"/>
|
||||||
|
<binding key="D" mask="NONE" command="spin_around_ccw"/>
|
||||||
|
<binding key="W" mask="NONE" command="move_forward"/>
|
||||||
|
<binding key="S" mask="NONE" command="move_backward"/>
|
||||||
|
<binding key="E" mask="NONE" command="spin_over"/>
|
||||||
|
<binding key="C" mask="NONE" command="spin_under"/>
|
||||||
|
<binding key="ENTER" mask="NONE" command="start_chat"/>
|
||||||
|
<binding key="DIVIDE" mask="NONE" command="start_gesture"/>
|
||||||
|
<binding key="/" mask="NONE" command="start_gesture"/>
|
||||||
|
<binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="NONE" command="spin_around_cw"/>
|
||||||
|
<binding key="RIGHT" mask="NONE" command="spin_around_ccw"/>
|
||||||
|
<binding key="UP" mask="NONE" command="move_forward"/>
|
||||||
|
<binding key="DOWN" mask="NONE" command="move_backward"/>
|
||||||
|
<binding key="PGUP" mask="NONE" command="spin_over"/>
|
||||||
|
<binding key="PGDN" mask="NONE" command="spin_under"/>
|
||||||
|
|
||||||
|
<binding key="A" mask="SHIFT" command="pan_left"/>
|
||||||
|
<binding key="D" mask="SHIFT" command="pan_right"/>
|
||||||
|
<binding key="W" mask="SHIFT" command="pan_up"/>
|
||||||
|
<binding key="S" mask="SHIFT" command="pan_down"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="SHIFT" command="pan_left"/>
|
||||||
|
<binding key="RIGHT" mask="SHIFT" command="pan_right"/>
|
||||||
|
<binding key="UP" mask="SHIFT" command="pan_up"/>
|
||||||
|
<binding key="DOWN" mask="SHIFT" command="pan_down"/>
|
||||||
|
|
||||||
|
<!--Walking works with ALT held down.-->
|
||||||
|
<binding key="A" mask="ALT" command="slide_left"/>
|
||||||
|
<binding key="D" mask="ALT" command="slide_right"/>
|
||||||
|
<binding key="W" mask="ALT" command="push_forward"/>
|
||||||
|
<binding key="S" mask="ALT" command="push_backward"/>
|
||||||
|
<binding key="E" mask="ALT" command="jump"/>
|
||||||
|
<binding key="C" mask="ALT" command="push_down"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="ALT" command="slide_left"/>
|
||||||
|
<binding key="RIGHT" mask="ALT" command="slide_right"/>
|
||||||
|
<binding key="UP" mask="ALT" command="push_forward"/>
|
||||||
|
<binding key="DOWN" mask="ALT" command="push_backward"/>
|
||||||
|
<binding key="PGUP" mask="ALT" command="jump"/>
|
||||||
|
<binding key="PGDN" mask="ALT" command="push_down"/>
|
||||||
|
<binding key="HOME" mask="ALT" command="toggle_fly"/>
|
||||||
|
|
||||||
|
<binding key="PAD_LEFT" mask="ALT" command="slide_left"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="ALT" command="slide_right"/>
|
||||||
|
<binding key="PAD_UP" mask="ALT" command="push_forward"/>
|
||||||
|
<binding key="PAD_DOWN" mask="ALT" command="push_backward"/>
|
||||||
|
<binding key="PAD_PGUP" mask="ALT" command="jump"/>
|
||||||
|
<binding key="PAD_PGDN" mask="ALT" command="push_down"/>
|
||||||
|
<binding key="PAD_ENTER" mask="ALT" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="ALT" command="start_gesture"/>
|
||||||
|
</edit>
|
||||||
|
<sitting>
|
||||||
|
<binding key="A" mask="ALT" command="spin_around_cw"/>
|
||||||
|
<binding key="D" mask="ALT" command="spin_around_ccw"/>
|
||||||
|
<binding key="W" mask="ALT" command="move_forward"/>
|
||||||
|
<binding key="S" mask="ALT" command="move_backward"/>
|
||||||
|
<binding key="E" mask="ALT" command="spin_over_sitting"/>
|
||||||
|
<binding key="C" mask="ALT" command="spin_under_sitting"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="ALT" command="spin_around_cw"/>
|
||||||
|
<binding key="RIGHT" mask="ALT" command="spin_around_ccw"/>
|
||||||
|
<binding key="UP" mask="ALT" command="move_forward"/>
|
||||||
|
<binding key="DOWN" mask="ALT" command="move_backward"/>
|
||||||
|
<binding key="PGUP" mask="ALT" command="spin_over"/>
|
||||||
|
<binding key="PGDN" mask="ALT" command="spin_under"/>
|
||||||
|
|
||||||
|
<binding key="A" mask="CTL_ALT" command="spin_around_cw"/>
|
||||||
|
<binding key="D" mask="CTL_ALT" command="spin_around_ccw"/>
|
||||||
|
<binding key="W" mask="CTL_ALT" command="spin_over"/>
|
||||||
|
<binding key="S" mask="CTL_ALT" command="spin_under"/>
|
||||||
|
<binding key="E" mask="CTL_ALT" command="spin_over"/>
|
||||||
|
<binding key="C" mask="CTL_ALT" command="spin_under"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="CTL_ALT" command="spin_around_cw"/>
|
||||||
|
<binding key="RIGHT" mask="CTL_ALT" command="spin_around_ccw"/>
|
||||||
|
<binding key="UP" mask="CTL_ALT" command="spin_over"/>
|
||||||
|
<binding key="DOWN" mask="CTL_ALT" command="spin_under"/>
|
||||||
|
<binding key="PGUP" mask="CTL_ALT" command="spin_over"/>
|
||||||
|
<binding key="PGDN" mask="CTL_ALT" command="spin_under"/>
|
||||||
|
|
||||||
|
|
||||||
|
<binding key="A" mask="NONE" command="spin_around_cw_sitting"/>
|
||||||
|
<binding key="D" mask="NONE" command="spin_around_ccw_sitting"/>
|
||||||
|
<binding key="W" mask="NONE" command="move_forward_sitting"/>
|
||||||
|
<binding key="S" mask="NONE" command="move_backward_sitting"/>
|
||||||
|
<binding key="E" mask="NONE" command="spin_over_sitting"/>
|
||||||
|
<binding key="C" mask="NONE" command="spin_under_sitting"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="NONE" command="spin_around_cw_sitting"/>
|
||||||
|
<binding key="RIGHT" mask="NONE" command="spin_around_ccw_sitting"/>
|
||||||
|
<binding key="UP" mask="NONE" command="move_forward_sitting"/>
|
||||||
|
<binding key="DOWN" mask="NONE" command="move_backward_sitting"/>
|
||||||
|
<binding key="PGUP" mask="NONE" command="spin_over_sitting"/>
|
||||||
|
<binding key="PGDN" mask="NONE" command="spin_under_sitting"/>
|
||||||
|
|
||||||
|
<binding key="PAD_LEFT" mask="NONE" command="spin_around_cw_sitting"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="NONE" command="spin_around_ccw_sitting"/>
|
||||||
|
<binding key="PAD_UP" mask="NONE" command="move_forward_sitting"/>
|
||||||
|
<binding key="PAD_DOWN" mask="NONE" command="move_backward_sitting"/>
|
||||||
|
<binding key="PAD_PGUP" mask="NONE" command="spin_over_sitting"/>
|
||||||
|
<binding key="PAD_PGDN" mask="NONE" command="spin_under_sitting"/>
|
||||||
|
<binding key="PAD_CENTER" mask="NONE" command="stop_moving"/>
|
||||||
|
<binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
|
||||||
|
|
||||||
|
<!--these are for passing controls when sitting on vehicles-->
|
||||||
|
<binding key="A" mask="SHIFT" command="slide_left"/>
|
||||||
|
<binding key="D" mask="SHIFT" command="slide_right"/>
|
||||||
|
<binding key="W" mask="SHIFT" command="move_forward_sitting"/>
|
||||||
|
<binding key="S" mask="SHIFT" command="move_backward_sitting"/>
|
||||||
|
<binding key="E" mask="SHIFT" command="spin_over_sitting"/>
|
||||||
|
<binding key="C" mask="SHIFT" command="spin_under_sitting"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="SHIFT" command="slide_left"/>
|
||||||
|
<binding key="RIGHT" mask="SHIFT" command="slide_right"/>
|
||||||
|
<binding key="UP" mask="SHIFT" command="move_forward_sitting"/>
|
||||||
|
<binding key="DOWN" mask="SHIFT" command="move_backward_sitting"/>
|
||||||
|
<binding key="PGUP" mask="SHIFT" command="spin_over_sitting"/>
|
||||||
|
<binding key="PGDN" mask="SHIFT" command="spin_under_sitting"/>
|
||||||
|
|
||||||
|
<binding key="PAD_LEFT" mask="SHIFT" command="slide_left"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="SHIFT" command="slide_right"/>
|
||||||
|
<binding key="PAD_UP" mask="SHIFT" command="move_forward_sitting"/>
|
||||||
|
<binding key="PAD_DOWN" mask="SHIFT" command="move_backward_sitting"/>
|
||||||
|
<binding key="PAD_PGUP" mask="SHIFT" command="spin_over_sitting"/>
|
||||||
|
<binding key="PAD_PGDN" mask="SHIFT" command="spin_under_sitting"/>
|
||||||
|
<binding key="PAD_ENTER" mask="SHIFT" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="SHIFT" command="start_gesture"/>
|
||||||
|
|
||||||
|
<!--pan on Alt-Shift-->
|
||||||
|
<binding key="A" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||||
|
<binding key="D" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||||
|
<binding key="W" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||||
|
<binding key="S" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||||
|
<binding key="E" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||||
|
<binding key="C" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||||
|
<binding key="RIGHT" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||||
|
<binding key="UP" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||||
|
<binding key="DOWN" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||||
|
<binding key="PGUP" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||||
|
<binding key="PGDN" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||||
|
|
||||||
|
<binding key="PAD_LEFT" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||||
|
<binding key="PAD_UP" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||||
|
<binding key="PAD_DOWN" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||||
|
<binding key="PAD_PGUP" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||||
|
<binding key="PAD_PGDN" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||||
|
<binding key="PAD_ENTER" mask="CTL_ALT_SHIFT" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="CTL_ALT_SHIFT" command="start_gesture"/>
|
||||||
|
|
||||||
|
<binding key="ENTER" mask="NONE" command="start_chat"/>
|
||||||
|
<binding key="DIVIDE" mask="NONE" command="start_gesture"/>
|
||||||
|
<binding key="/" mask="NONE" command="start_gesture"/>
|
||||||
|
</sitting>
|
||||||
|
<edit_avatar>
|
||||||
|
<!--Avatar editing camera controls-->
|
||||||
|
<binding key="A" mask="NONE" command="edit_avatar_spin_cw"/>
|
||||||
|
<binding key="D" mask="NONE" command="edit_avatar_spin_ccw"/>
|
||||||
|
<binding key="W" mask="NONE" command="edit_avatar_move_forward"/>
|
||||||
|
<binding key="S" mask="NONE" command="edit_avatar_move_backward"/>
|
||||||
|
<binding key="E" mask="NONE" command="edit_avatar_spin_over"/>
|
||||||
|
<binding key="C" mask="NONE" command="edit_avatar_spin_under"/>
|
||||||
|
<binding key="LEFT" mask="NONE" command="edit_avatar_spin_cw"/>
|
||||||
|
<binding key="RIGHT" mask="NONE" command="edit_avatar_spin_ccw"/>
|
||||||
|
<binding key="UP" mask="NONE" command="edit_avatar_move_forward"/>
|
||||||
|
<binding key="DOWN" mask="NONE" command="edit_avatar_move_backward"/>
|
||||||
|
<binding key="PGUP" mask="NONE" command="edit_avatar_spin_over"/>
|
||||||
|
<binding key="PGDN" mask="NONE" command="edit_avatar_spin_under"/>
|
||||||
|
<binding key="ENTER" mask="NONE" command="start_chat"/>
|
||||||
|
<binding key="DIVIDE" mask="NONE" command="start_gesture"/>
|
||||||
|
<binding key="/" mask="NONE" command="start_gesture"/>
|
||||||
|
<binding key="PAD_LEFT" mask="NONE" command="edit_avatar_spin_cw"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="NONE" command="edit_avatar_spin_ccw"/>
|
||||||
|
<binding key="PAD_UP" mask="NONE" command="edit_avatar_move_forward"/>
|
||||||
|
<binding key="PAD_DOWN" mask="NONE" command="edit_avatar_move_backward"/>
|
||||||
|
<binding key="PAD_PGUP" mask="NONE" command="edit_avatar_spin_over"/>
|
||||||
|
<binding key="PAD_PGDN" mask="NONE" command="edit_avatar_spin_under"/>
|
||||||
|
<binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
|
||||||
|
</edit_avatar>
|
||||||
|
</keys>
|
||||||
@@ -1,387 +0,0 @@
|
|||||||
# keys.ini
|
|
||||||
#
|
|
||||||
# keyboard binding initialization
|
|
||||||
#
|
|
||||||
# comments must have # in the first column
|
|
||||||
# blank lines OK
|
|
||||||
#
|
|
||||||
# Format:
|
|
||||||
# mode key mask function
|
|
||||||
#
|
|
||||||
# mode must be one of FIRST_PERSON, THIRD_PERSON, EDIT, EDIT_AVATAR, or CONVERSATION
|
|
||||||
# key must be upper case, or SPACE, HOME, END, PGUP, PGDN, LEFT, RIGHT, UP, DOWN,
|
|
||||||
# or one of ,.;'[]
|
|
||||||
# mask must be NONE, SHIFT, ALT, ALT_SHIFT.
|
|
||||||
# Control is reserved for user commands.
|
|
||||||
# function must be a function named in llkeyboard.cpp
|
|
||||||
|
|
||||||
FIRST_PERSON Q NONE slide_left
|
|
||||||
FIRST_PERSON D NONE slide_right
|
|
||||||
FIRST_PERSON Z NONE push_forward
|
|
||||||
FIRST_PERSON S NONE push_backward
|
|
||||||
FIRST_PERSON E NONE jump
|
|
||||||
FIRST_PERSON C NONE push_down
|
|
||||||
FIRST_PERSON F NONE toggle_fly
|
|
||||||
|
|
||||||
FIRST_PERSON LEFT NONE slide_left
|
|
||||||
FIRST_PERSON RIGHT NONE slide_right
|
|
||||||
FIRST_PERSON UP NONE push_forward
|
|
||||||
FIRST_PERSON DOWN NONE push_backward
|
|
||||||
FIRST_PERSON PGUP NONE jump
|
|
||||||
FIRST_PERSON PGDN NONE push_down
|
|
||||||
FIRST_PERSON HOME NONE toggle_fly
|
|
||||||
|
|
||||||
FIRST_PERSON PAD_LEFT NONE slide_left
|
|
||||||
FIRST_PERSON PAD_RIGHT NONE slide_right
|
|
||||||
FIRST_PERSON PAD_UP NONE push_forward
|
|
||||||
FIRST_PERSON PAD_DOWN NONE push_backward
|
|
||||||
FIRST_PERSON PAD_PGUP NONE jump
|
|
||||||
FIRST_PERSON PAD_PGDN NONE push_down
|
|
||||||
FIRST_PERSON PAD_HOME NONE toggle_fly
|
|
||||||
FIRST_PERSON PAD_CENTER NONE stop_moving
|
|
||||||
FIRST_PERSON PAD_ENTER NONE start_chat
|
|
||||||
FIRST_PERSON PAD_DIVIDE NONE start_gesture
|
|
||||||
|
|
||||||
FIRST_PERSON Q SHIFT slide_left
|
|
||||||
FIRST_PERSON D SHIFT slide_right
|
|
||||||
FIRST_PERSON Z SHIFT push_forward
|
|
||||||
FIRST_PERSON S SHIFT push_backward
|
|
||||||
FIRST_PERSON E SHIFT jump
|
|
||||||
FIRST_PERSON C SHIFT toggle_down
|
|
||||||
FIRST_PERSON F SHIFT toggle_fly
|
|
||||||
|
|
||||||
FIRST_PERSON SPACE NONE stop_moving
|
|
||||||
FIRST_PERSON ENTER NONE start_chat
|
|
||||||
FIRST_PERSON DIVIDE NONE start_gesture
|
|
||||||
FIRST_PERSON / NONE start_gesture
|
|
||||||
|
|
||||||
FIRST_PERSON LEFT SHIFT slide_left
|
|
||||||
FIRST_PERSON RIGHT SHIFT slide_right
|
|
||||||
FIRST_PERSON UP SHIFT push_forward
|
|
||||||
FIRST_PERSON DOWN SHIFT push_backward
|
|
||||||
FIRST_PERSON PGUP SHIFT jump
|
|
||||||
FIRST_PERSON PGDN SHIFT toggle_down
|
|
||||||
|
|
||||||
FIRST_PERSON PAD_LEFT SHIFT slide_left
|
|
||||||
FIRST_PERSON PAD_RIGHT SHIFT slide_right
|
|
||||||
FIRST_PERSON PAD_UP SHIFT push_forward
|
|
||||||
FIRST_PERSON PAD_DOWN SHIFT push_backward
|
|
||||||
FIRST_PERSON PAD_PGUP SHIFT jump
|
|
||||||
FIRST_PERSON PAD_PGDN SHIFT toggle_down
|
|
||||||
FIRST_PERSON PAD_HOME SHIFT toggle_fly
|
|
||||||
FIRST_PERSON PAD_ENTER SHIFT start_chat
|
|
||||||
FIRST_PERSON PAD_DIVIDE SHIFT start_gesture
|
|
||||||
|
|
||||||
THIRD_PERSON Q NONE turn_left
|
|
||||||
THIRD_PERSON D NONE turn_right
|
|
||||||
THIRD_PERSON Q SHIFT slide_left
|
|
||||||
THIRD_PERSON D SHIFT slide_right
|
|
||||||
THIRD_PERSON Z NONE push_forward
|
|
||||||
THIRD_PERSON S NONE push_backward
|
|
||||||
THIRD_PERSON Z SHIFT push_forward
|
|
||||||
THIRD_PERSON S SHIFT push_backward
|
|
||||||
THIRD_PERSON E NONE jump
|
|
||||||
THIRD_PERSON C NONE push_down
|
|
||||||
THIRD_PERSON E SHIFT jump
|
|
||||||
THIRD_PERSON C SHIFT toggle_down
|
|
||||||
|
|
||||||
THIRD_PERSON F NONE toggle_fly
|
|
||||||
THIRD_PERSON F SHIFT toggle_fly
|
|
||||||
|
|
||||||
THIRD_PERSON SPACE NONE stop_moving
|
|
||||||
THIRD_PERSON ENTER NONE start_chat
|
|
||||||
THIRD_PERSON DIVIDE NONE start_gesture
|
|
||||||
THIRD_PERSON / NONE start_gesture
|
|
||||||
|
|
||||||
THIRD_PERSON LEFT NONE turn_left
|
|
||||||
THIRD_PERSON LEFT SHIFT slide_left
|
|
||||||
THIRD_PERSON RIGHT NONE turn_right
|
|
||||||
THIRD_PERSON RIGHT SHIFT slide_right
|
|
||||||
THIRD_PERSON UP NONE push_forward
|
|
||||||
THIRD_PERSON DOWN NONE push_backward
|
|
||||||
THIRD_PERSON UP SHIFT push_forward
|
|
||||||
THIRD_PERSON DOWN SHIFT push_backward
|
|
||||||
THIRD_PERSON PGUP NONE jump
|
|
||||||
THIRD_PERSON PGDN NONE push_down
|
|
||||||
THIRD_PERSON PGUP SHIFT jump
|
|
||||||
THIRD_PERSON PGDN SHIFT toggle_down
|
|
||||||
THIRD_PERSON HOME SHIFT toggle_fly
|
|
||||||
THIRD_PERSON HOME NONE toggle_fly
|
|
||||||
|
|
||||||
THIRD_PERSON PAD_LEFT NONE turn_left
|
|
||||||
THIRD_PERSON PAD_LEFT SHIFT slide_left
|
|
||||||
THIRD_PERSON PAD_RIGHT NONE turn_right
|
|
||||||
THIRD_PERSON PAD_RIGHT SHIFT slide_right
|
|
||||||
THIRD_PERSON PAD_UP NONE push_forward
|
|
||||||
THIRD_PERSON PAD_DOWN NONE push_backward
|
|
||||||
THIRD_PERSON PAD_UP SHIFT push_forward
|
|
||||||
THIRD_PERSON PAD_DOWN SHIFT push_backward
|
|
||||||
THIRD_PERSON PAD_PGUP NONE jump
|
|
||||||
THIRD_PERSON PAD_PGDN NONE push_down
|
|
||||||
THIRD_PERSON PAD_PGUP SHIFT jump
|
|
||||||
THIRD_PERSON PAD_PGDN SHIFT toggle_down
|
|
||||||
THIRD_PERSON PAD_HOME NONE toggle_fly
|
|
||||||
THIRD_PERSON PAD_HOME SHIFT toggle_fly
|
|
||||||
THIRD_PERSON PAD_CENTER NONE stop_moving
|
|
||||||
THIRD_PERSON PAD_CENTER SHIFT stop_moving
|
|
||||||
THIRD_PERSON PAD_ENTER NONE start_chat
|
|
||||||
THIRD_PERSON PAD_ENTER SHIFT start_chat
|
|
||||||
THIRD_PERSON PAD_DIVIDE NONE start_gesture
|
|
||||||
THIRD_PERSON PAD_DIVIDE SHIFT start_gesture
|
|
||||||
|
|
||||||
# Camera controls in third person on Alt
|
|
||||||
THIRD_PERSON LEFT ALT spin_around_cw
|
|
||||||
THIRD_PERSON RIGHT ALT spin_around_ccw
|
|
||||||
THIRD_PERSON UP ALT move_forward
|
|
||||||
THIRD_PERSON DOWN ALT move_backward
|
|
||||||
THIRD_PERSON PGUP ALT spin_over
|
|
||||||
THIRD_PERSON PGDN ALT spin_under
|
|
||||||
|
|
||||||
THIRD_PERSON Q ALT spin_around_cw
|
|
||||||
THIRD_PERSON D ALT spin_around_ccw
|
|
||||||
THIRD_PERSON Z ALT move_forward
|
|
||||||
THIRD_PERSON S ALT move_backward
|
|
||||||
THIRD_PERSON E ALT spin_over
|
|
||||||
THIRD_PERSON C ALT spin_under
|
|
||||||
|
|
||||||
THIRD_PERSON PAD_LEFT ALT spin_around_cw
|
|
||||||
THIRD_PERSON PAD_RIGHT ALT spin_around_ccw
|
|
||||||
THIRD_PERSON PAD_UP ALT move_forward
|
|
||||||
THIRD_PERSON PAD_DOWN ALT move_backward
|
|
||||||
THIRD_PERSON PAD_PGUP ALT spin_over
|
|
||||||
THIRD_PERSON PAD_PGDN ALT spin_under
|
|
||||||
THIRD_PERSON PAD_ENTER ALT start_chat
|
|
||||||
THIRD_PERSON PAD_DIVIDE ALT start_gesture
|
|
||||||
|
|
||||||
# mimic alt zoom behavior with keyboard only
|
|
||||||
THIRD_PERSON Q CTL_ALT spin_around_cw
|
|
||||||
THIRD_PERSON D CTL_ALT spin_around_ccw
|
|
||||||
THIRD_PERSON Z CTL_ALT spin_over
|
|
||||||
THIRD_PERSON S CTL_ALT spin_under
|
|
||||||
THIRD_PERSON E CTL_ALT spin_over
|
|
||||||
THIRD_PERSON C CTL_ALT spin_under
|
|
||||||
|
|
||||||
THIRD_PERSON LEFT CTL_ALT spin_around_cw
|
|
||||||
THIRD_PERSON RIGHT CTL_ALT spin_around_ccw
|
|
||||||
THIRD_PERSON UP CTL_ALT spin_over
|
|
||||||
THIRD_PERSON DOWN CTL_ALT spin_under
|
|
||||||
THIRD_PERSON PGUP CTL_ALT spin_over
|
|
||||||
THIRD_PERSON PGDN CTL_ALT spin_under
|
|
||||||
|
|
||||||
THIRD_PERSON PAD_LEFT CTL_ALT spin_around_cw
|
|
||||||
THIRD_PERSON PAD_RIGHT CTL_ALT spin_around_ccw
|
|
||||||
THIRD_PERSON PAD_UP CTL_ALT spin_over
|
|
||||||
THIRD_PERSON PAD_DOWN CTL_ALT spin_under
|
|
||||||
THIRD_PERSON PAD_PGUP CTL_ALT spin_over
|
|
||||||
THIRD_PERSON PAD_PGDN CTL_ALT spin_under
|
|
||||||
THIRD_PERSON PAD_ENTER CTL_ALT start_chat
|
|
||||||
THIRD_PERSON PAD_DIVIDE CTL_ALT start_gesture
|
|
||||||
|
|
||||||
# Therefore pan on Alt-Shift
|
|
||||||
THIRD_PERSON Q CTL_ALT_SHIFT pan_left
|
|
||||||
THIRD_PERSON D CTL_ALT_SHIFT pan_right
|
|
||||||
THIRD_PERSON Z CTL_ALT_SHIFT pan_up
|
|
||||||
THIRD_PERSON S CTL_ALT_SHIFT pan_down
|
|
||||||
THIRD_PERSON E CTL_ALT_SHIFT pan_in
|
|
||||||
THIRD_PERSON C CTL_ALT_SHIFT pan_out
|
|
||||||
|
|
||||||
THIRD_PERSON LEFT CTL_ALT_SHIFT pan_left
|
|
||||||
THIRD_PERSON RIGHT CTL_ALT_SHIFT pan_right
|
|
||||||
THIRD_PERSON UP CTL_ALT_SHIFT pan_up
|
|
||||||
THIRD_PERSON DOWN CTL_ALT_SHIFT pan_down
|
|
||||||
THIRD_PERSON PGUP CTL_ALT_SHIFT pan_in
|
|
||||||
THIRD_PERSON PGDN CTL_ALT_SHIFT pan_out
|
|
||||||
|
|
||||||
THIRD_PERSON PAD_LEFT CTL_ALT_SHIFT pan_left
|
|
||||||
THIRD_PERSON PAD_RIGHT CTL_ALT_SHIFT pan_right
|
|
||||||
THIRD_PERSON PAD_UP CTL_ALT_SHIFT pan_up
|
|
||||||
THIRD_PERSON PAD_DOWN CTL_ALT_SHIFT pan_down
|
|
||||||
THIRD_PERSON PAD_PGUP CTL_ALT_SHIFT pan_in
|
|
||||||
THIRD_PERSON PAD_PGDN CTL_ALT_SHIFT pan_out
|
|
||||||
THIRD_PERSON PAD_ENTER CTL_ALT_SHIFT start_chat
|
|
||||||
THIRD_PERSON PAD_DIVIDE CTL_ALT_SHIFT start_gesture
|
|
||||||
|
|
||||||
# Basic editing camera control
|
|
||||||
EDIT Q NONE spin_around_cw
|
|
||||||
EDIT D NONE spin_around_ccw
|
|
||||||
EDIT Z NONE move_forward
|
|
||||||
EDIT S NONE move_backward
|
|
||||||
EDIT E NONE spin_over
|
|
||||||
EDIT C NONE spin_under
|
|
||||||
EDIT ENTER NONE start_chat
|
|
||||||
EDIT DIVIDE NONE start_gesture
|
|
||||||
EDIT / NONE start_gesture
|
|
||||||
EDIT PAD_ENTER NONE start_chat
|
|
||||||
EDIT PAD_DIVIDE NONE start_gesture
|
|
||||||
|
|
||||||
EDIT LEFT NONE spin_around_cw
|
|
||||||
EDIT RIGHT NONE spin_around_ccw
|
|
||||||
EDIT UP NONE move_forward
|
|
||||||
EDIT DOWN NONE move_backward
|
|
||||||
EDIT PGUP NONE spin_over
|
|
||||||
EDIT PGDN NONE spin_under
|
|
||||||
|
|
||||||
EDIT Q SHIFT pan_left
|
|
||||||
EDIT D SHIFT pan_right
|
|
||||||
EDIT Z SHIFT pan_up
|
|
||||||
EDIT S SHIFT pan_down
|
|
||||||
|
|
||||||
EDIT LEFT SHIFT pan_left
|
|
||||||
EDIT RIGHT SHIFT pan_right
|
|
||||||
EDIT UP SHIFT pan_up
|
|
||||||
EDIT DOWN SHIFT pan_down
|
|
||||||
|
|
||||||
# Walking works with ALT held down.
|
|
||||||
EDIT Q ALT slide_left
|
|
||||||
EDIT D ALT slide_right
|
|
||||||
EDIT Z ALT push_forward
|
|
||||||
EDIT S ALT push_backward
|
|
||||||
EDIT E ALT jump
|
|
||||||
EDIT C ALT push_down
|
|
||||||
|
|
||||||
EDIT LEFT ALT slide_left
|
|
||||||
EDIT RIGHT ALT slide_right
|
|
||||||
EDIT UP ALT push_forward
|
|
||||||
EDIT DOWN ALT push_backward
|
|
||||||
EDIT PGUP ALT jump
|
|
||||||
EDIT PGDN ALT push_down
|
|
||||||
EDIT HOME ALT toggle_fly
|
|
||||||
|
|
||||||
EDIT PAD_LEFT ALT slide_left
|
|
||||||
EDIT PAD_RIGHT ALT slide_right
|
|
||||||
EDIT PAD_UP ALT push_forward
|
|
||||||
EDIT PAD_DOWN ALT push_backward
|
|
||||||
EDIT PAD_PGUP ALT jump
|
|
||||||
EDIT PAD_PGDN ALT push_down
|
|
||||||
EDIT PAD_ENTER ALT start_chat
|
|
||||||
EDIT PAD_DIVIDE ALT start_gesture
|
|
||||||
|
|
||||||
SITTING Q ALT spin_around_cw
|
|
||||||
SITTING D ALT spin_around_ccw
|
|
||||||
SITTING Z ALT move_forward
|
|
||||||
SITTING S ALT move_backward
|
|
||||||
SITTING E ALT spin_over_sitting
|
|
||||||
SITTING C ALT spin_under_sitting
|
|
||||||
|
|
||||||
SITTING LEFT ALT spin_around_cw
|
|
||||||
SITTING RIGHT ALT spin_around_ccw
|
|
||||||
SITTING UP ALT move_forward
|
|
||||||
SITTING DOWN ALT move_backward
|
|
||||||
SITTING PGUP ALT spin_over
|
|
||||||
SITTING PGDN ALT spin_under
|
|
||||||
|
|
||||||
SITTING Q CTL_ALT spin_around_cw
|
|
||||||
SITTING D CTL_ALT spin_around_ccw
|
|
||||||
SITTING Z CTL_ALT spin_over
|
|
||||||
SITTING S CTL_ALT spin_under
|
|
||||||
SITTING E CTL_ALT spin_over
|
|
||||||
SITTING C CTL_ALT spin_under
|
|
||||||
|
|
||||||
SITTING LEFT CTL_ALT spin_around_cw
|
|
||||||
SITTING RIGHT CTL_ALT spin_around_ccw
|
|
||||||
SITTING UP CTL_ALT spin_over
|
|
||||||
SITTING DOWN CTL_ALT spin_under
|
|
||||||
SITTING PGUP CTL_ALT spin_over
|
|
||||||
SITTING PGDN CTL_ALT spin_under
|
|
||||||
|
|
||||||
|
|
||||||
SITTING Q NONE spin_around_cw_sitting
|
|
||||||
SITTING D NONE spin_around_ccw_sitting
|
|
||||||
SITTING Z NONE move_forward_sitting
|
|
||||||
SITTING S NONE move_backward_sitting
|
|
||||||
SITTING E NONE spin_over_sitting
|
|
||||||
SITTING C NONE spin_under_sitting
|
|
||||||
|
|
||||||
SITTING LEFT NONE spin_around_cw_sitting
|
|
||||||
SITTING RIGHT NONE spin_around_ccw_sitting
|
|
||||||
SITTING UP NONE move_forward_sitting
|
|
||||||
SITTING DOWN NONE move_backward_sitting
|
|
||||||
SITTING PGUP NONE spin_over_sitting
|
|
||||||
SITTING PGDN NONE spin_under_sitting
|
|
||||||
|
|
||||||
SITTING PAD_LEFT NONE spin_around_cw_sitting
|
|
||||||
SITTING PAD_RIGHT NONE spin_around_ccw_sitting
|
|
||||||
SITTING PAD_UP NONE move_forward_sitting
|
|
||||||
SITTING PAD_DOWN NONE move_backward_sitting
|
|
||||||
SITTING PAD_PGUP NONE spin_over_sitting
|
|
||||||
SITTING PAD_PGDN NONE spin_under_sitting
|
|
||||||
SITTING PAD_CENTER NONE stop_moving
|
|
||||||
SITTING PAD_ENTER NONE start_chat
|
|
||||||
SITTING PAD_DIVIDE NONE start_gesture
|
|
||||||
|
|
||||||
# these are for passing controls when sitting on vehicles
|
|
||||||
SITTING Q SHIFT slide_left
|
|
||||||
SITTING D SHIFT slide_right
|
|
||||||
SITTING Z SHIFT move_forward_sitting
|
|
||||||
SITTING S SHIFT move_backward_sitting
|
|
||||||
SITTING E SHIFT spin_over_sitting
|
|
||||||
SITTING C SHIFT spin_under_sitting
|
|
||||||
|
|
||||||
SITTING LEFT SHIFT slide_left
|
|
||||||
SITTING RIGHT SHIFT slide_right
|
|
||||||
SITTING UP SHIFT move_forward_sitting
|
|
||||||
SITTING DOWN SHIFT move_backward_sitting
|
|
||||||
SITTING PGUP SHIFT spin_over_sitting
|
|
||||||
SITTING PGDN SHIFT spin_under_sitting
|
|
||||||
|
|
||||||
SITTING PAD_LEFT SHIFT slide_left
|
|
||||||
SITTING PAD_RIGHT SHIFT slide_right
|
|
||||||
SITTING PAD_UP SHIFT move_forward_sitting
|
|
||||||
SITTING PAD_DOWN SHIFT move_backward_sitting
|
|
||||||
SITTING PAD_PGUP SHIFT spin_over_sitting
|
|
||||||
SITTING PAD_PGDN SHIFT spin_under_sitting
|
|
||||||
SITTING PAD_ENTER SHIFT start_chat
|
|
||||||
SITTING PAD_DIVIDE SHIFT start_gesture
|
|
||||||
|
|
||||||
# pan on Alt-Shift
|
|
||||||
SITTING Q CTL_ALT_SHIFT pan_left
|
|
||||||
SITTING D CTL_ALT_SHIFT pan_right
|
|
||||||
SITTING Z CTL_ALT_SHIFT pan_up
|
|
||||||
SITTING S CTL_ALT_SHIFT pan_down
|
|
||||||
SITTING E CTL_ALT_SHIFT pan_in
|
|
||||||
SITTING C CTL_ALT_SHIFT pan_out
|
|
||||||
|
|
||||||
SITTING LEFT CTL_ALT_SHIFT pan_left
|
|
||||||
SITTING RIGHT CTL_ALT_SHIFT pan_right
|
|
||||||
SITTING UP CTL_ALT_SHIFT pan_up
|
|
||||||
SITTING DOWN CTL_ALT_SHIFT pan_down
|
|
||||||
SITTING PGUP CTL_ALT_SHIFT pan_in
|
|
||||||
SITTING PGDN CTL_ALT_SHIFT pan_out
|
|
||||||
|
|
||||||
SITTING PAD_LEFT CTL_ALT_SHIFT pan_left
|
|
||||||
SITTING PAD_RIGHT CTL_ALT_SHIFT pan_right
|
|
||||||
SITTING PAD_UP CTL_ALT_SHIFT pan_up
|
|
||||||
SITTING PAD_DOWN CTL_ALT_SHIFT pan_down
|
|
||||||
SITTING PAD_PGUP CTL_ALT_SHIFT pan_in
|
|
||||||
SITTING PAD_PGDN CTL_ALT_SHIFT pan_out
|
|
||||||
SITTING PAD_ENTER CTL_ALT_SHIFT start_chat
|
|
||||||
SITTING PAD_DIVIDE CTL_ALT_SHIFT start_gesture
|
|
||||||
|
|
||||||
SITTING ENTER NONE start_chat
|
|
||||||
SITTING DIVIDE NONE start_gesture
|
|
||||||
SITTING / NONE start_gesture
|
|
||||||
|
|
||||||
# Avatar editing camera controls
|
|
||||||
EDIT_AVATAR Q NONE edit_avatar_spin_cw
|
|
||||||
EDIT_AVATAR D NONE edit_avatar_spin_ccw
|
|
||||||
EDIT_AVATAR Z NONE edit_avatar_move_forward
|
|
||||||
EDIT_AVATAR S NONE edit_avatar_move_backward
|
|
||||||
EDIT_AVATAR E NONE edit_avatar_spin_over
|
|
||||||
EDIT_AVATAR C NONE edit_avatar_spin_under
|
|
||||||
EDIT_AVATAR LEFT NONE edit_avatar_spin_cw
|
|
||||||
EDIT_AVATAR RIGHT NONE edit_avatar_spin_ccw
|
|
||||||
EDIT_AVATAR UP NONE edit_avatar_move_forward
|
|
||||||
EDIT_AVATAR DOWN NONE edit_avatar_move_backward
|
|
||||||
EDIT_AVATAR PGUP NONE edit_avatar_spin_over
|
|
||||||
EDIT_AVATAR PGDN NONE edit_avatar_spin_under
|
|
||||||
EDIT_AVATAR ENTER NONE start_chat
|
|
||||||
EDIT_AVATAR DIVIDE NONE start_gesture
|
|
||||||
EDIT_AVATAR / NONE start_gesture
|
|
||||||
EDIT_AVATAR PAD_LEFT NONE edit_avatar_spin_cw
|
|
||||||
EDIT_AVATAR PAD_RIGHT NONE edit_avatar_spin_ccw
|
|
||||||
EDIT_AVATAR PAD_UP NONE edit_avatar_move_forward
|
|
||||||
EDIT_AVATAR PAD_DOWN NONE edit_avatar_move_backward
|
|
||||||
EDIT_AVATAR PAD_PGUP NONE edit_avatar_spin_over
|
|
||||||
EDIT_AVATAR PAD_PGDN NONE edit_avatar_spin_under
|
|
||||||
EDIT_AVATAR PAD_ENTER NONE start_chat
|
|
||||||
EDIT_AVATAR PAD_DIVIDE NONE start_gesture
|
|
||||||
380
indra/newview/app_settings/keysZQSD.xml
Normal file
380
indra/newview/app_settings/keysZQSD.xml
Normal file
@@ -0,0 +1,380 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
|
<keys>
|
||||||
|
<first_person>
|
||||||
|
<binding key="Q" mask="NONE" command="slide_left"/>
|
||||||
|
<binding key="D" mask="NONE" command="slide_right"/>
|
||||||
|
<binding key="Z" mask="NONE" command="push_forward"/>
|
||||||
|
<binding key="S" mask="NONE" command="push_backward"/>
|
||||||
|
<binding key="E" mask="NONE" command="jump"/>
|
||||||
|
<binding key="C" mask="NONE" command="push_down"/>
|
||||||
|
<binding key="F" mask="NONE" command="toggle_fly"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="NONE" command="slide_left"/>
|
||||||
|
<binding key="RIGHT" mask="NONE" command="slide_right"/>
|
||||||
|
<binding key="UP" mask="NONE" command="push_forward"/>
|
||||||
|
<binding key="DOWN" mask="NONE" command="push_backward"/>
|
||||||
|
<binding key="PGUP" mask="NONE" command="jump"/>
|
||||||
|
<binding key="PGDN" mask="NONE" command="push_down"/>
|
||||||
|
<binding key="HOME" mask="NONE" command="toggle_fly"/>
|
||||||
|
|
||||||
|
<binding key="PAD_LEFT" mask="NONE" command="slide_left"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="NONE" command="slide_right"/>
|
||||||
|
<binding key="PAD_UP" mask="NONE" command="push_forward"/>
|
||||||
|
<binding key="PAD_DOWN" mask="NONE" command="push_backward"/>
|
||||||
|
<binding key="PAD_PGUP" mask="NONE" command="jump"/>
|
||||||
|
<binding key="PAD_PGDN" mask="NONE" command="push_down"/>
|
||||||
|
<binding key="PAD_HOME" mask="NONE" command="toggle_fly"/>
|
||||||
|
<binding key="PAD_CENTER" mask="NONE" command="stop_moving"/>
|
||||||
|
<binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
|
||||||
|
|
||||||
|
<binding key="Q" mask="SHIFT" command="slide_left"/>
|
||||||
|
<binding key="D" mask="SHIFT" command="slide_right"/>
|
||||||
|
<binding key="Z" mask="SHIFT" command="push_forward"/>
|
||||||
|
<binding key="S" mask="SHIFT" command="push_backward"/>
|
||||||
|
<binding key="E" mask="SHIFT" command="jump"/>
|
||||||
|
<binding key="C" mask="SHIFT" command="toggle_down"/>
|
||||||
|
<binding key="F" mask="SHIFT" command="toggle_fly"/>
|
||||||
|
|
||||||
|
<binding key="SPACE" mask="NONE" command="stop_moving"/>
|
||||||
|
<binding key="ENTER" mask="NONE" command="start_chat"/>
|
||||||
|
<binding key="DIVIDE" mask="NONE" command="start_gesture"/>
|
||||||
|
<binding key="/" mask="NONE" command="start_gesture"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="SHIFT" command="slide_left"/>
|
||||||
|
<binding key="RIGHT" mask="SHIFT" command="slide_right"/>
|
||||||
|
<binding key="UP" mask="SHIFT" command="push_forward"/>
|
||||||
|
<binding key="DOWN" mask="SHIFT" command="push_backward"/>
|
||||||
|
<binding key="PGUP" mask="SHIFT" command="jump"/>
|
||||||
|
<binding key="PGDN" mask="SHIFT" command="toggle_down"/>
|
||||||
|
|
||||||
|
<binding key="PAD_LEFT" mask="SHIFT" command="slide_left"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="SHIFT" command="slide_right"/>
|
||||||
|
<binding key="PAD_UP" mask="SHIFT" command="push_forward"/>
|
||||||
|
<binding key="PAD_DOWN" mask="SHIFT" command="push_backward"/>
|
||||||
|
<binding key="PAD_PGUP" mask="SHIFT" command="jump"/>
|
||||||
|
<binding key="PAD_PGDN" mask="SHIFT" command="toggle_down"/>
|
||||||
|
<binding key="PAD_HOME" mask="SHIFT" command="toggle_fly"/>
|
||||||
|
<binding key="PAD_ENTER" mask="SHIFT" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="SHIFT" command="start_gesture"/>
|
||||||
|
</first_person>
|
||||||
|
<third_person>
|
||||||
|
<binding key="Q" mask="NONE" command="turn_left"/>
|
||||||
|
<binding key="D" mask="NONE" command="turn_right"/>
|
||||||
|
<binding key="Q" mask="SHIFT" command="slide_left"/>
|
||||||
|
<binding key="D" mask="SHIFT" command="slide_right"/>
|
||||||
|
<binding key="Z" mask="NONE" command="push_forward"/>
|
||||||
|
<binding key="S" mask="NONE" command="push_backward"/>
|
||||||
|
<binding key="Z" mask="SHIFT" command="push_forward"/>
|
||||||
|
<binding key="S" mask="SHIFT" command="push_backward"/>
|
||||||
|
<binding key="E" mask="NONE" command="jump"/>
|
||||||
|
<binding key="C" mask="NONE" command="push_down"/>
|
||||||
|
<binding key="E" mask="SHIFT" command="jump"/>
|
||||||
|
<binding key="C" mask="SHIFT" command="toggle_down"/>
|
||||||
|
|
||||||
|
<binding key="F" mask="NONE" command="toggle_fly"/>
|
||||||
|
<binding key="F" mask="SHIFT" command="toggle_fly"/>
|
||||||
|
|
||||||
|
<binding key="SPACE" mask="NONE" command="stop_moving"/>
|
||||||
|
<binding key="ENTER" mask="NONE" command="start_chat"/>
|
||||||
|
<binding key="DIVIDE" mask="NONE" command="start_gesture"/>
|
||||||
|
<binding key="/" mask="NONE" command="start_gesture"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="NONE" command="turn_left"/>
|
||||||
|
<binding key="LEFT" mask="SHIFT" command="slide_left"/>
|
||||||
|
<binding key="RIGHT" mask="NONE" command="turn_right"/>
|
||||||
|
<binding key="RIGHT" mask="SHIFT" command="slide_right"/>
|
||||||
|
<binding key="UP" mask="NONE" command="push_forward"/>
|
||||||
|
<binding key="DOWN" mask="NONE" command="push_backward"/>
|
||||||
|
<binding key="UP" mask="SHIFT" command="push_forward"/>
|
||||||
|
<binding key="DOWN" mask="SHIFT" command="push_backward"/>
|
||||||
|
<binding key="PGUP" mask="NONE" command="jump"/>
|
||||||
|
<binding key="PGDN" mask="NONE" command="push_down"/>
|
||||||
|
<binding key="PGUP" mask="SHIFT" command="jump"/>
|
||||||
|
<binding key="PGDN" mask="SHIFT" command="toggle_down"/>
|
||||||
|
<binding key="HOME" mask="SHIFT" command="toggle_fly"/>
|
||||||
|
<binding key="HOME" mask="NONE" command="toggle_fly"/>
|
||||||
|
|
||||||
|
<binding key="PAD_LEFT" mask="NONE" command="turn_left"/>
|
||||||
|
<binding key="PAD_LEFT" mask="SHIFT" command="slide_left"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="NONE" command="turn_right"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="SHIFT" command="slide_right"/>
|
||||||
|
<binding key="PAD_UP" mask="NONE" command="push_forward"/>
|
||||||
|
<binding key="PAD_DOWN" mask="NONE" command="push_backward"/>
|
||||||
|
<binding key="PAD_UP" mask="SHIFT" command="push_forward"/>
|
||||||
|
<binding key="PAD_DOWN" mask="SHIFT" command="push_backward"/>
|
||||||
|
<binding key="PAD_PGUP" mask="NONE" command="jump"/>
|
||||||
|
<binding key="PAD_PGDN" mask="NONE" command="push_down"/>
|
||||||
|
<binding key="PAD_PGUP" mask="SHIFT" command="jump"/>
|
||||||
|
<binding key="PAD_PGDN" mask="SHIFT" command="toggle_down"/>
|
||||||
|
<binding key="PAD_HOME" mask="NONE" command="toggle_fly"/>
|
||||||
|
<binding key="PAD_HOME" mask="SHIFT" command="toggle_fly"/>
|
||||||
|
<binding key="PAD_CENTER" mask="NONE" command="stop_moving"/>
|
||||||
|
<binding key="PAD_CENTER" mask="SHIFT" command="stop_moving"/>
|
||||||
|
<binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
|
||||||
|
<binding key="PAD_ENTER" mask="SHIFT" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="SHIFT" command="start_gesture"/>
|
||||||
|
|
||||||
|
<!--Camera controls in third person on Alt-->
|
||||||
|
<binding key="LEFT" mask="ALT" command="spin_around_cw"/>
|
||||||
|
<binding key="RIGHT" mask="ALT" command="spin_around_ccw"/>
|
||||||
|
<binding key="UP" mask="ALT" command="move_forward"/>
|
||||||
|
<binding key="DOWN" mask="ALT" command="move_backward"/>
|
||||||
|
<binding key="PGUP" mask="ALT" command="spin_over"/>
|
||||||
|
<binding key="PGDN" mask="ALT" command="spin_under"/>
|
||||||
|
|
||||||
|
<binding key="Q" mask="ALT" command="spin_around_cw"/>
|
||||||
|
<binding key="D" mask="ALT" command="spin_around_ccw"/>
|
||||||
|
<binding key="Z" mask="ALT" command="move_forward"/>
|
||||||
|
<binding key="S" mask="ALT" command="move_backward"/>
|
||||||
|
<binding key="E" mask="ALT" command="spin_over"/>
|
||||||
|
<binding key="C" mask="ALT" command="spin_under"/>
|
||||||
|
|
||||||
|
<binding key="PAD_LEFT" mask="ALT" command="spin_around_cw"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="ALT" command="spin_around_ccw"/>
|
||||||
|
<binding key="PAD_UP" mask="ALT" command="move_forward"/>
|
||||||
|
<binding key="PAD_DOWN" mask="ALT" command="move_backward"/>
|
||||||
|
<binding key="PAD_PGUP" mask="ALT" command="spin_over"/>
|
||||||
|
<binding key="PAD_PGDN" mask="ALT" command="spin_under"/>
|
||||||
|
<binding key="PAD_ENTER" mask="ALT" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="ALT" command="start_gesture"/>
|
||||||
|
|
||||||
|
<!--mimic alt zoom behavior with keyboard only-->
|
||||||
|
<binding key="Q" mask="CTL_ALT" command="spin_around_cw"/>
|
||||||
|
<binding key="D" mask="CTL_ALT" command="spin_around_ccw"/>
|
||||||
|
<binding key="Z" mask="CTL_ALT" command="spin_over"/>
|
||||||
|
<binding key="S" mask="CTL_ALT" command="spin_under"/>
|
||||||
|
<binding key="E" mask="CTL_ALT" command="spin_over"/>
|
||||||
|
<binding key="C" mask="CTL_ALT" command="spin_under"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="CTL_ALT" command="spin_around_cw"/>
|
||||||
|
<binding key="RIGHT" mask="CTL_ALT" command="spin_around_ccw"/>
|
||||||
|
<binding key="UP" mask="CTL_ALT" command="spin_over"/>
|
||||||
|
<binding key="DOWN" mask="CTL_ALT" command="spin_under"/>
|
||||||
|
<binding key="PGUP" mask="CTL_ALT" command="spin_over"/>
|
||||||
|
<binding key="PGDN" mask="CTL_ALT" command="spin_under"/>
|
||||||
|
|
||||||
|
<binding key="PAD_LEFT" mask="CTL_ALT" command="spin_around_cw"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="CTL_ALT" command="spin_around_ccw"/>
|
||||||
|
<binding key="PAD_UP" mask="CTL_ALT" command="spin_over"/>
|
||||||
|
<binding key="PAD_DOWN" mask="CTL_ALT" command="spin_under"/>
|
||||||
|
<binding key="PAD_PGUP" mask="CTL_ALT" command="spin_over"/>
|
||||||
|
<binding key="PAD_PGDN" mask="CTL_ALT" command="spin_under"/>
|
||||||
|
<binding key="PAD_ENTER" mask="CTL_ALT" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="CTL_ALT" command="start_gesture"/>
|
||||||
|
|
||||||
|
<!--Therefore pan on Alt-Shift-->
|
||||||
|
<binding key="Q" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||||
|
<binding key="D" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||||
|
<binding key="Z" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||||
|
<binding key="S" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||||
|
<binding key="E" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||||
|
<binding key="C" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||||
|
<binding key="RIGHT" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||||
|
<binding key="UP" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||||
|
<binding key="DOWN" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||||
|
<binding key="PGUP" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||||
|
<binding key="PGDN" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||||
|
|
||||||
|
<binding key="PAD_LEFT" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||||
|
<binding key="PAD_UP" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||||
|
<binding key="PAD_DOWN" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||||
|
<binding key="PAD_PGUP" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||||
|
<binding key="PAD_PGDN" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||||
|
<binding key="PAD_ENTER" mask="CTL_ALT_SHIFT" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="CTL_ALT_SHIFT" command="start_gesture"/>
|
||||||
|
</third_person>
|
||||||
|
|
||||||
|
<!-- Basic editing camera control -->
|
||||||
|
<edit>
|
||||||
|
<binding key="Q" mask="NONE" command="spin_around_cw"/>
|
||||||
|
<binding key="D" mask="NONE" command="spin_around_ccw"/>
|
||||||
|
<binding key="Z" mask="NONE" command="move_forward"/>
|
||||||
|
<binding key="S" mask="NONE" command="move_backward"/>
|
||||||
|
<binding key="E" mask="NONE" command="spin_over"/>
|
||||||
|
<binding key="C" mask="NONE" command="spin_under"/>
|
||||||
|
<binding key="ENTER" mask="NONE" command="start_chat"/>
|
||||||
|
<binding key="DIVIDE" mask="NONE" command="start_gesture"/>
|
||||||
|
<binding key="/" mask="NONE" command="start_gesture"/>
|
||||||
|
<binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="NONE" command="spin_around_cw"/>
|
||||||
|
<binding key="RIGHT" mask="NONE" command="spin_around_ccw"/>
|
||||||
|
<binding key="UP" mask="NONE" command="move_forward"/>
|
||||||
|
<binding key="DOWN" mask="NONE" command="move_backward"/>
|
||||||
|
<binding key="PGUP" mask="NONE" command="spin_over"/>
|
||||||
|
<binding key="PGDN" mask="NONE" command="spin_under"/>
|
||||||
|
|
||||||
|
<binding key="Q" mask="SHIFT" command="pan_left"/>
|
||||||
|
<binding key="D" mask="SHIFT" command="pan_right"/>
|
||||||
|
<binding key="Z" mask="SHIFT" command="pan_up"/>
|
||||||
|
<binding key="S" mask="SHIFT" command="pan_down"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="SHIFT" command="pan_left"/>
|
||||||
|
<binding key="RIGHT" mask="SHIFT" command="pan_right"/>
|
||||||
|
<binding key="UP" mask="SHIFT" command="pan_up"/>
|
||||||
|
<binding key="DOWN" mask="SHIFT" command="pan_down"/>
|
||||||
|
|
||||||
|
<!--Walking works with ALT held down.-->
|
||||||
|
<binding key="Q" mask="ALT" command="slide_left"/>
|
||||||
|
<binding key="D" mask="ALT" command="slide_right"/>
|
||||||
|
<binding key="Z" mask="ALT" command="push_forward"/>
|
||||||
|
<binding key="S" mask="ALT" command="push_backward"/>
|
||||||
|
<binding key="E" mask="ALT" command="jump"/>
|
||||||
|
<binding key="C" mask="ALT" command="push_down"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="ALT" command="slide_left"/>
|
||||||
|
<binding key="RIGHT" mask="ALT" command="slide_right"/>
|
||||||
|
<binding key="UP" mask="ALT" command="push_forward"/>
|
||||||
|
<binding key="DOWN" mask="ALT" command="push_backward"/>
|
||||||
|
<binding key="PGUP" mask="ALT" command="jump"/>
|
||||||
|
<binding key="PGDN" mask="ALT" command="push_down"/>
|
||||||
|
<binding key="HOME" mask="ALT" command="toggle_fly"/>
|
||||||
|
|
||||||
|
<binding key="PAD_LEFT" mask="ALT" command="slide_left"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="ALT" command="slide_right"/>
|
||||||
|
<binding key="PAD_UP" mask="ALT" command="push_forward"/>
|
||||||
|
<binding key="PAD_DOWN" mask="ALT" command="push_backward"/>
|
||||||
|
<binding key="PAD_PGUP" mask="ALT" command="jump"/>
|
||||||
|
<binding key="PAD_PGDN" mask="ALT" command="push_down"/>
|
||||||
|
<binding key="PAD_ENTER" mask="ALT" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="ALT" command="start_gesture"/>
|
||||||
|
</edit>
|
||||||
|
<sitting>
|
||||||
|
<binding key="Q" mask="ALT" command="spin_around_cw"/>
|
||||||
|
<binding key="D" mask="ALT" command="spin_around_ccw"/>
|
||||||
|
<binding key="Z" mask="ALT" command="move_forward"/>
|
||||||
|
<binding key="S" mask="ALT" command="move_backward"/>
|
||||||
|
<binding key="E" mask="ALT" command="spin_over_sitting"/>
|
||||||
|
<binding key="C" mask="ALT" command="spin_under_sitting"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="ALT" command="spin_around_cw"/>
|
||||||
|
<binding key="RIGHT" mask="ALT" command="spin_around_ccw"/>
|
||||||
|
<binding key="UP" mask="ALT" command="move_forward"/>
|
||||||
|
<binding key="DOWN" mask="ALT" command="move_backward"/>
|
||||||
|
<binding key="PGUP" mask="ALT" command="spin_over"/>
|
||||||
|
<binding key="PGDN" mask="ALT" command="spin_under"/>
|
||||||
|
|
||||||
|
<binding key="Q" mask="CTL_ALT" command="spin_around_cw"/>
|
||||||
|
<binding key="D" mask="CTL_ALT" command="spin_around_ccw"/>
|
||||||
|
<binding key="Z" mask="CTL_ALT" command="spin_over"/>
|
||||||
|
<binding key="S" mask="CTL_ALT" command="spin_under"/>
|
||||||
|
<binding key="E" mask="CTL_ALT" command="spin_over"/>
|
||||||
|
<binding key="C" mask="CTL_ALT" command="spin_under"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="CTL_ALT" command="spin_around_cw"/>
|
||||||
|
<binding key="RIGHT" mask="CTL_ALT" command="spin_around_ccw"/>
|
||||||
|
<binding key="UP" mask="CTL_ALT" command="spin_over"/>
|
||||||
|
<binding key="DOWN" mask="CTL_ALT" command="spin_under"/>
|
||||||
|
<binding key="PGUP" mask="CTL_ALT" command="spin_over"/>
|
||||||
|
<binding key="PGDN" mask="CTL_ALT" command="spin_under"/>
|
||||||
|
|
||||||
|
|
||||||
|
<binding key="Q" mask="NONE" command="spin_around_cw_sitting"/>
|
||||||
|
<binding key="D" mask="NONE" command="spin_around_ccw_sitting"/>
|
||||||
|
<binding key="Z" mask="NONE" command="move_forward_sitting"/>
|
||||||
|
<binding key="S" mask="NONE" command="move_backward_sitting"/>
|
||||||
|
<binding key="E" mask="NONE" command="spin_over_sitting"/>
|
||||||
|
<binding key="C" mask="NONE" command="spin_under_sitting"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="NONE" command="spin_around_cw_sitting"/>
|
||||||
|
<binding key="RIGHT" mask="NONE" command="spin_around_ccw_sitting"/>
|
||||||
|
<binding key="UP" mask="NONE" command="move_forward_sitting"/>
|
||||||
|
<binding key="DOWN" mask="NONE" command="move_backward_sitting"/>
|
||||||
|
<binding key="PGUP" mask="NONE" command="spin_over_sitting"/>
|
||||||
|
<binding key="PGDN" mask="NONE" command="spin_under_sitting"/>
|
||||||
|
|
||||||
|
<binding key="PAD_LEFT" mask="NONE" command="spin_around_cw_sitting"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="NONE" command="spin_around_ccw_sitting"/>
|
||||||
|
<binding key="PAD_UP" mask="NONE" command="move_forward_sitting"/>
|
||||||
|
<binding key="PAD_DOWN" mask="NONE" command="move_backward_sitting"/>
|
||||||
|
<binding key="PAD_PGUP" mask="NONE" command="spin_over_sitting"/>
|
||||||
|
<binding key="PAD_PGDN" mask="NONE" command="spin_under_sitting"/>
|
||||||
|
<binding key="PAD_CENTER" mask="NONE" command="stop_moving"/>
|
||||||
|
<binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
|
||||||
|
|
||||||
|
<!--these are for passing controls when sitting on vehicles-->
|
||||||
|
<binding key="Q" mask="SHIFT" command="slide_left"/>
|
||||||
|
<binding key="D" mask="SHIFT" command="slide_right"/>
|
||||||
|
<binding key="Z" mask="SHIFT" command="move_forward_sitting"/>
|
||||||
|
<binding key="S" mask="SHIFT" command="move_backward_sitting"/>
|
||||||
|
<binding key="E" mask="SHIFT" command="spin_over_sitting"/>
|
||||||
|
<binding key="C" mask="SHIFT" command="spin_under_sitting"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="SHIFT" command="slide_left"/>
|
||||||
|
<binding key="RIGHT" mask="SHIFT" command="slide_right"/>
|
||||||
|
<binding key="UP" mask="SHIFT" command="move_forward_sitting"/>
|
||||||
|
<binding key="DOWN" mask="SHIFT" command="move_backward_sitting"/>
|
||||||
|
<binding key="PGUP" mask="SHIFT" command="spin_over_sitting"/>
|
||||||
|
<binding key="PGDN" mask="SHIFT" command="spin_under_sitting"/>
|
||||||
|
|
||||||
|
<binding key="PAD_LEFT" mask="SHIFT" command="slide_left"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="SHIFT" command="slide_right"/>
|
||||||
|
<binding key="PAD_UP" mask="SHIFT" command="move_forward_sitting"/>
|
||||||
|
<binding key="PAD_DOWN" mask="SHIFT" command="move_backward_sitting"/>
|
||||||
|
<binding key="PAD_PGUP" mask="SHIFT" command="spin_over_sitting"/>
|
||||||
|
<binding key="PAD_PGDN" mask="SHIFT" command="spin_under_sitting"/>
|
||||||
|
<binding key="PAD_ENTER" mask="SHIFT" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="SHIFT" command="start_gesture"/>
|
||||||
|
|
||||||
|
<!--pan on Alt-Shift-->
|
||||||
|
<binding key="Q" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||||
|
<binding key="D" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||||
|
<binding key="Z" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||||
|
<binding key="S" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||||
|
<binding key="E" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||||
|
<binding key="C" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||||
|
|
||||||
|
<binding key="LEFT" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||||
|
<binding key="RIGHT" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||||
|
<binding key="UP" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||||
|
<binding key="DOWN" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||||
|
<binding key="PGUP" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||||
|
<binding key="PGDN" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||||
|
|
||||||
|
<binding key="PAD_LEFT" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||||
|
<binding key="PAD_UP" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||||
|
<binding key="PAD_DOWN" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||||
|
<binding key="PAD_PGUP" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||||
|
<binding key="PAD_PGDN" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||||
|
<binding key="PAD_ENTER" mask="CTL_ALT_SHIFT" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="CTL_ALT_SHIFT" command="start_gesture"/>
|
||||||
|
|
||||||
|
<binding key="ENTER" mask="NONE" command="start_chat"/>
|
||||||
|
<binding key="DIVIDE" mask="NONE" command="start_gesture"/>
|
||||||
|
<binding key="/" mask="NONE" command="start_gesture"/>
|
||||||
|
</sitting>
|
||||||
|
<edit_avatar>
|
||||||
|
<!--Avatar editing camera controls-->
|
||||||
|
<binding key="Q" mask="NONE" command="edit_avatar_spin_cw"/>
|
||||||
|
<binding key="D" mask="NONE" command="edit_avatar_spin_ccw"/>
|
||||||
|
<binding key="Z" mask="NONE" command="edit_avatar_move_forward"/>
|
||||||
|
<binding key="S" mask="NONE" command="edit_avatar_move_backward"/>
|
||||||
|
<binding key="E" mask="NONE" command="edit_avatar_spin_over"/>
|
||||||
|
<binding key="C" mask="NONE" command="edit_avatar_spin_under"/>
|
||||||
|
<binding key="LEFT" mask="NONE" command="edit_avatar_spin_cw"/>
|
||||||
|
<binding key="RIGHT" mask="NONE" command="edit_avatar_spin_ccw"/>
|
||||||
|
<binding key="UP" mask="NONE" command="edit_avatar_move_forward"/>
|
||||||
|
<binding key="DOWN" mask="NONE" command="edit_avatar_move_backward"/>
|
||||||
|
<binding key="PGUP" mask="NONE" command="edit_avatar_spin_over"/>
|
||||||
|
<binding key="PGDN" mask="NONE" command="edit_avatar_spin_under"/>
|
||||||
|
<binding key="ENTER" mask="NONE" command="start_chat"/>
|
||||||
|
<binding key="DIVIDE" mask="NONE" command="start_gesture"/>
|
||||||
|
<binding key="/" mask="NONE" command="start_gesture"/>
|
||||||
|
<binding key="PAD_LEFT" mask="NONE" command="edit_avatar_spin_cw"/>
|
||||||
|
<binding key="PAD_RIGHT" mask="NONE" command="edit_avatar_spin_ccw"/>
|
||||||
|
<binding key="PAD_UP" mask="NONE" command="edit_avatar_move_forward"/>
|
||||||
|
<binding key="PAD_DOWN" mask="NONE" command="edit_avatar_move_backward"/>
|
||||||
|
<binding key="PAD_PGUP" mask="NONE" command="edit_avatar_spin_over"/>
|
||||||
|
<binding key="PAD_PGDN" mask="NONE" command="edit_avatar_spin_under"/>
|
||||||
|
<binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
|
||||||
|
<binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
|
||||||
|
</edit_avatar>
|
||||||
|
</keys>
|
||||||
@@ -592,13 +592,32 @@ public:
|
|||||||
void load_default_bindings(bool zqsd)
|
void load_default_bindings(bool zqsd)
|
||||||
{
|
{
|
||||||
gViewerKeyboard.unloadBindings();
|
gViewerKeyboard.unloadBindings();
|
||||||
const std::string keys(zqsd ? "keysZQSD.ini" : "keys.ini");
|
const std::string key_bindings_file(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, zqsd ? "keysZQSD.xml" : "keys.xml"));
|
||||||
if (!gViewerKeyboard.loadBindings(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, keys)))
|
if (!gDirUtilp->fileExists(key_bindings_file) || !gViewerKeyboard.loadBindingsXML(key_bindings_file))
|
||||||
{
|
{
|
||||||
LL_ERRS("InitInfo") << "Unable to open " << keys << LL_ENDL;
|
const std::string key_bindings_file(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, zqsd ? "keysZQSD.ini" : "keys.ini"));
|
||||||
|
if (!gViewerKeyboard.loadBindings(key_bindings_file))
|
||||||
|
{
|
||||||
|
LL_ERRS("InitInfo") << "Unable to open " << key_bindings_file << LL_ENDL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Load Custom bindings (override defaults)
|
// Load Custom bindings (override defaults)
|
||||||
gViewerKeyboard.loadBindings(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,"custom_keys.ini"));
|
std::string custom_keys(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "custom_keys.xml"));
|
||||||
|
if (!gDirUtilp->fileExists(custom_keys) || !gViewerKeyboard.loadBindingsXML(custom_keys))
|
||||||
|
{
|
||||||
|
custom_keys = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "custom_keys.ini");
|
||||||
|
if (gDirUtilp->fileExists(custom_keys))
|
||||||
|
gViewerKeyboard.loadBindings(custom_keys);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
// With Xcode 6, _exit() is too magical to use with boost::bind(), so provide
|
||||||
|
// this little helper function.
|
||||||
|
void fast_exit(int rc)
|
||||||
|
{
|
||||||
|
_exit(rc);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LLAppViewer::init()
|
bool LLAppViewer::init()
|
||||||
@@ -645,7 +664,6 @@ bool LLAppViewer::init()
|
|||||||
//
|
//
|
||||||
// OK to write stuff to logs now, we've now crash reported if necessary
|
// OK to write stuff to logs now, we've now crash reported if necessary
|
||||||
//
|
//
|
||||||
|
|
||||||
init_default_trans_args();
|
init_default_trans_args();
|
||||||
|
|
||||||
if (!initConfiguration())
|
if (!initConfiguration())
|
||||||
|
|||||||
@@ -88,22 +88,22 @@ namespace
|
|||||||
static LLCachedControl<bool> radar_alert_chat_range(gSavedSettings, "RadarAlertChatRange");
|
static LLCachedControl<bool> radar_alert_chat_range(gSavedSettings, "RadarAlertChatRange");
|
||||||
static LLCachedControl<bool> radar_alert_age(gSavedSettings, "RadarAlertAge");
|
static LLCachedControl<bool> radar_alert_age(gSavedSettings, "RadarAlertAge");
|
||||||
|
|
||||||
LLFloaterAvatarList* self = LLFloaterAvatarList::getInstance();
|
LLFloaterAvatarList& inst(LLFloaterAvatarList::instance());
|
||||||
LLStringUtil::format_map_t args;
|
LLStringUtil::format_map_t args;
|
||||||
LLChat chat;
|
LLChat chat;
|
||||||
switch(type)
|
switch(type)
|
||||||
{
|
{
|
||||||
case STAT_TYPE_SIM: if (radar_alert_sim) args["[RANGE]"] = self->getString("the_sim"); break;
|
case STAT_TYPE_SIM: if (radar_alert_sim) args["[RANGE]"] = inst.getString("the_sim"); break;
|
||||||
case STAT_TYPE_DRAW: if (radar_alert_draw) args["[RANGE]"] = self->getString("draw_distance"); break;
|
case STAT_TYPE_DRAW: if (radar_alert_draw) args["[RANGE]"] = inst.getString("draw_distance"); break;
|
||||||
case STAT_TYPE_SHOUTRANGE: if (radar_alert_shout_range) args["[RANGE]"] = self->getString("shout_range"); break;
|
case STAT_TYPE_SHOUTRANGE: if (radar_alert_shout_range) args["[RANGE]"] = inst.getString("shout_range"); break;
|
||||||
case STAT_TYPE_CHATRANGE: if (radar_alert_chat_range) args["[RANGE]"] = self->getString("chat_range"); break;
|
case STAT_TYPE_CHATRANGE: if (radar_alert_chat_range) args["[RANGE]"] = inst.getString("chat_range"); break;
|
||||||
case STAT_TYPE_AGE: if (radar_alert_age) chat.mText = name + " " + self->getString("has_triggered_your_avatar_age_alert") + "."; break;
|
case STAT_TYPE_AGE: if (radar_alert_age) chat.mText = name + " " + inst.getString("has_triggered_your_avatar_age_alert") + "."; break;
|
||||||
default: llassert(type); break;
|
default: llassert(type); break;
|
||||||
}
|
}
|
||||||
args["[NAME]"] = name;
|
args["[NAME]"] = name;
|
||||||
args["[ACTION]"] = self->getString(entering ? "has_entered" : "has_left");
|
args["[ACTION]"] = inst.getString(entering ? "has_entered" : "has_left");
|
||||||
if (args.find("[RANGE]") != args.end())
|
if (args.find("[RANGE]") != args.end())
|
||||||
chat.mText = self->getString("template", args);
|
chat.mText = inst.getString("template", args);
|
||||||
else if (chat.mText.empty()) return;
|
else if (chat.mText.empty()) return;
|
||||||
if (entering) // Note: If we decide to make this for leaving as well, change this check to dist != F32_MIN
|
if (entering) // Note: If we decide to make this for leaving as well, change this check to dist != F32_MIN
|
||||||
{
|
{
|
||||||
@@ -138,13 +138,14 @@ LLAvatarListEntry::LLAvatarListEntry(const LLUUID& id, const std::string& name,
|
|||||||
mActivityType(ACTIVITY_NEW), mActivityTimer(),
|
mActivityType(ACTIVITY_NEW), mActivityTimer(),
|
||||||
mIsInList(false), mAge(-1), mTime(time(NULL))
|
mIsInList(false), mAge(-1), mTime(time(NULL))
|
||||||
{
|
{
|
||||||
LLAvatarPropertiesProcessor::getInstance()->addObserver(mID, this);
|
LLAvatarPropertiesProcessor& inst(LLAvatarPropertiesProcessor::instance());
|
||||||
LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesRequest(mID);
|
inst.addObserver(mID, this);
|
||||||
|
inst.sendAvatarPropertiesRequest(mID);
|
||||||
}
|
}
|
||||||
|
|
||||||
LLAvatarListEntry::~LLAvatarListEntry()
|
LLAvatarListEntry::~LLAvatarListEntry()
|
||||||
{
|
{
|
||||||
LLAvatarPropertiesProcessor::getInstance()->removeObserver(mID, this);
|
LLAvatarPropertiesProcessor::instance().removeObserver(mID, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
// virtual
|
// virtual
|
||||||
@@ -152,7 +153,8 @@ void LLAvatarListEntry::processProperties(void* data, EAvatarProcessorType type)
|
|||||||
{
|
{
|
||||||
if (type == APT_PROPERTIES)
|
if (type == APT_PROPERTIES)
|
||||||
{
|
{
|
||||||
LLAvatarPropertiesProcessor::getInstance()->removeObserver(mID, this);
|
LLAvatarPropertiesProcessor& inst(LLAvatarPropertiesProcessor::instance());
|
||||||
|
inst.removeObserver(mID, this);
|
||||||
const LLAvatarData* pAvatarData = static_cast<const LLAvatarData*>(data);
|
const LLAvatarData* pAvatarData = static_cast<const LLAvatarData*>(data);
|
||||||
if (pAvatarData && (pAvatarData->avatar_id != LLUUID::null))
|
if (pAvatarData && (pAvatarData->avatar_id != LLUUID::null))
|
||||||
{
|
{
|
||||||
@@ -166,8 +168,8 @@ void LLAvatarListEntry::processProperties(void* data, EAvatarProcessorType type)
|
|||||||
catch(const std::exception&)
|
catch(const std::exception&)
|
||||||
{
|
{
|
||||||
LL_WARNS() << "Failed to extract age from APT_PROPERTIES for " << mID << ", received \"" << pAvatarData->born_on << "\". Requesting properties again." << LL_ENDL;
|
LL_WARNS() << "Failed to extract age from APT_PROPERTIES for " << mID << ", received \"" << pAvatarData->born_on << "\". Requesting properties again." << LL_ENDL;
|
||||||
LLAvatarPropertiesProcessor::getInstance()->addObserver(mID, this);
|
inst.addObserver(mID, this);
|
||||||
LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesRequest(mID);
|
inst.sendAvatarPropertiesRequest(mID);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!mStats[STAT_TYPE_AGE] && mAge >= 0) //Only announce age once per entry.
|
if (!mStats[STAT_TYPE_AGE] && mAge >= 0) //Only announce age once per entry.
|
||||||
@@ -210,7 +212,7 @@ void LLAvatarListEntry::resetName(const bool& hide_tags, const bool& anon_names,
|
|||||||
const F32 ACTIVITY_TIMEOUT = 1.0f;
|
const F32 ACTIVITY_TIMEOUT = 1.0f;
|
||||||
void LLAvatarListEntry::setActivity(ACTIVITY_TYPE activity)
|
void LLAvatarListEntry::setActivity(ACTIVITY_TYPE activity)
|
||||||
{
|
{
|
||||||
if ( activity >= mActivityType || mActivityTimer.getElapsedTimeF32() > ACTIVITY_TIMEOUT )
|
if (activity >= mActivityType || mActivityTimer.getElapsedTimeF32() > ACTIVITY_TIMEOUT)
|
||||||
{
|
{
|
||||||
mActivityType = activity;
|
mActivityType = activity;
|
||||||
mActivityTimer.start();
|
mActivityTimer.start();
|
||||||
@@ -266,20 +268,15 @@ void LLFloaterAvatarList::draw()
|
|||||||
|
|
||||||
void LLFloaterAvatarList::onOpen()
|
void LLFloaterAvatarList::onOpen()
|
||||||
{
|
{
|
||||||
gSavedSettings.setBOOL("ShowRadar", true);
|
if (mAvatars.size()) refreshAvatarList();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLFloaterAvatarList::onClose(bool app_quitting)
|
void LLFloaterAvatarList::onClose(bool app_quitting)
|
||||||
{
|
{
|
||||||
setVisible(false);
|
if (app_quitting || !gSavedSettings.getBOOL("RadarKeepOpen"))
|
||||||
if (!app_quitting)
|
|
||||||
{
|
|
||||||
gSavedSettings.setBOOL("ShowRadar", false);
|
|
||||||
}
|
|
||||||
if (!gSavedSettings.getBOOL("RadarKeepOpen") || app_quitting)
|
|
||||||
{
|
|
||||||
destroy();
|
destroy();
|
||||||
}
|
else
|
||||||
|
setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL LLFloaterAvatarList::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
BOOL LLFloaterAvatarList::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
||||||
@@ -414,7 +411,10 @@ BOOL LLFloaterAvatarList::postBuild()
|
|||||||
mAvatarList->setCommitCallback(boost::bind(&LLFloaterAvatarList::onSelectName,this));
|
mAvatarList->setCommitCallback(boost::bind(&LLFloaterAvatarList::onSelectName,this));
|
||||||
mAvatarList->setDoubleClickCallback(boost::bind(&LLFloaterAvatarList::onClickFocus,this));
|
mAvatarList->setDoubleClickCallback(boost::bind(&LLFloaterAvatarList::onClickFocus,this));
|
||||||
mAvatarList->setSortChangedCallback(boost::bind(&LLFloaterAvatarList::onAvatarSortingChanged,this));
|
mAvatarList->setSortChangedCallback(boost::bind(&LLFloaterAvatarList::onAvatarSortingChanged,this));
|
||||||
refreshAvatarList();
|
BOOST_FOREACH(LLViewerRegion* region, LLWorld::instance().getRegionList())
|
||||||
|
{
|
||||||
|
updateAvatarList(region);
|
||||||
|
}
|
||||||
|
|
||||||
assessColumns();
|
assessColumns();
|
||||||
|
|
||||||
@@ -906,8 +906,8 @@ void LLFloaterAvatarList::refreshAvatarList()
|
|||||||
agep.column = "age";
|
agep.column = "age";
|
||||||
agep.type = "text";
|
agep.type = "text";
|
||||||
color = sDefaultListText;
|
color = sDefaultListText;
|
||||||
std::string age = boost::lexical_cast<std::string>(entry->mAge);
|
bool age_set(entry->mAge > -1);
|
||||||
if (entry->mAge > -1)
|
if (age_set)
|
||||||
{
|
{
|
||||||
static const LLCachedControl<U32> sAvatarAgeAlertDays(gSavedSettings, "AvatarAgeAlertDays");
|
static const LLCachedControl<U32> sAvatarAgeAlertDays(gSavedSettings, "AvatarAgeAlertDays");
|
||||||
if ((U32)entry->mAge < sAvatarAgeAlertDays)
|
if ((U32)entry->mAge < sAvatarAgeAlertDays)
|
||||||
@@ -916,11 +916,7 @@ void LLFloaterAvatarList::refreshAvatarList()
|
|||||||
color = sRadarTextYoung;
|
color = sRadarTextYoung;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
agep.value = age_set ? boost::lexical_cast<std::string>(entry->mAge) : "?";
|
||||||
{
|
|
||||||
age = "?";
|
|
||||||
}
|
|
||||||
agep.value = age;
|
|
||||||
agep.color = color;
|
agep.color = color;
|
||||||
element.columns.add(agep);
|
element.columns.add(agep);
|
||||||
}
|
}
|
||||||
@@ -981,7 +977,6 @@ void LLFloaterAvatarList::refreshAvatarList()
|
|||||||
mDirtyAvatarSorting = true;
|
mDirtyAvatarSorting = true;
|
||||||
|
|
||||||
// LL_INFOS() << "radar refresh: done" << LL_ENDL;
|
// LL_INFOS() << "radar refresh: done" << LL_ENDL;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLFloaterAvatarList::resetAvatarNames()
|
void LLFloaterAvatarList::resetAvatarNames()
|
||||||
@@ -1042,7 +1037,7 @@ void LLFloaterAvatarList::onClickTrack()
|
|||||||
mTracking = true;
|
mTracking = true;
|
||||||
mTrackedAvatar = agent_id;
|
mTrackedAvatar = agent_id;
|
||||||
// trackAvatar only works for friends allowing you to see them on map...
|
// trackAvatar only works for friends allowing you to see them on map...
|
||||||
// LLTracker::trackAvatar(agent_id, self->mAvatars[agent_id].getName());
|
// LLTracker::trackAvatar(agent_id, mAvatars[agent_id].getName());
|
||||||
trackAvatar(getAvatarEntry(mTrackedAvatar));
|
trackAvatar(getAvatarEntry(mTrackedAvatar));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,7 +112,6 @@ const std::string PANEL_NAMES[LLFloaterTools::PANEL_COUNT] =
|
|||||||
|
|
||||||
// Local prototypes
|
// Local prototypes
|
||||||
void commit_grid_mode(LLUICtrl *ctrl);
|
void commit_grid_mode(LLUICtrl *ctrl);
|
||||||
void commit_select_component(void *data);
|
|
||||||
void click_show_more(void*);
|
void click_show_more(void*);
|
||||||
void click_popup_info(void*);
|
void click_popup_info(void*);
|
||||||
void click_popup_done(void*);
|
void click_popup_done(void*);
|
||||||
@@ -444,7 +443,7 @@ LLFloaterTools::LLFloaterTools()
|
|||||||
mCommitCallbackRegistrar.add("BuildTool.commitRadioEdit", boost::bind(&commit_radio_group_edit,_1));
|
mCommitCallbackRegistrar.add("BuildTool.commitRadioEdit", boost::bind(&commit_radio_group_edit,_1));
|
||||||
|
|
||||||
mCommitCallbackRegistrar.add("BuildTool.gridMode", boost::bind(&commit_grid_mode,_1));
|
mCommitCallbackRegistrar.add("BuildTool.gridMode", boost::bind(&commit_grid_mode,_1));
|
||||||
mCommitCallbackRegistrar.add("BuildTool.selectComponent", boost::bind(&commit_select_component, this));
|
mCommitCallbackRegistrar.add("BuildTool.selectComponent", boost::bind(&LLFloaterTools::commitSelectComponent, this, _2));
|
||||||
mCommitCallbackRegistrar.add("BuildTool.gridOptions", boost::bind(&LLFloaterTools::onClickGridOptions,this));
|
mCommitCallbackRegistrar.add("BuildTool.gridOptions", boost::bind(&LLFloaterTools::onClickGridOptions,this));
|
||||||
mCommitCallbackRegistrar.add("BuildTool.applyToSelection", boost::bind(&click_apply_to_selection, this));
|
mCommitCallbackRegistrar.add("BuildTool.applyToSelection", boost::bind(&click_apply_to_selection, this));
|
||||||
mCommitCallbackRegistrar.add("BuildTool.commitRadioLand", boost::bind(&commit_radio_group_land,_1));
|
mCommitCallbackRegistrar.add("BuildTool.commitRadioLand", boost::bind(&commit_radio_group_land,_1));
|
||||||
@@ -1155,19 +1154,14 @@ void commit_radio_group_land(LLUICtrl* ctrl)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void commit_select_component(void *data)
|
void LLFloaterTools::commitSelectComponent(bool select_individuals)
|
||||||
{
|
{
|
||||||
LLFloaterTools* floaterp = (LLFloaterTools*)data;
|
|
||||||
|
|
||||||
//forfeit focus
|
//forfeit focus
|
||||||
if (gFocusMgr.childHasKeyboardFocus(floaterp))
|
if (gFocusMgr.childHasKeyboardFocus(this))
|
||||||
{
|
{
|
||||||
gFocusMgr.setKeyboardFocus(NULL);
|
gFocusMgr.setKeyboardFocus(NULL);
|
||||||
}
|
}
|
||||||
|
dirty();
|
||||||
BOOL select_individuals = floaterp->mCheckSelectIndividual->get();
|
|
||||||
gSavedSettings.setBOOL("EditLinkedParts", select_individuals);
|
|
||||||
floaterp->dirty();
|
|
||||||
|
|
||||||
if (select_individuals)
|
if (select_individuals)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -122,6 +122,7 @@ private:
|
|||||||
void updateMediaSettings();
|
void updateMediaSettings();
|
||||||
static bool deleteMediaConfirm(const LLSD& notification, const LLSD& response);
|
static bool deleteMediaConfirm(const LLSD& notification, const LLSD& response);
|
||||||
static bool multipleFacesSelectedConfirm(const LLSD& notification, const LLSD& response);
|
static bool multipleFacesSelectedConfirm(const LLSD& notification, const LLSD& response);
|
||||||
|
void commitSelectComponent(bool select_individuals);
|
||||||
static void setObjectType( LLPCode pcode );
|
static void setObjectType( LLPCode pcode );
|
||||||
void onClickGridOptions();
|
void onClickGridOptions();
|
||||||
|
|
||||||
|
|||||||
@@ -952,6 +952,8 @@ static void formatDateString(std::string &date_string)
|
|||||||
using namespace boost;
|
using namespace boost;
|
||||||
cmatch result;
|
cmatch result;
|
||||||
const regex expression("([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})");
|
const regex expression("([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})");
|
||||||
|
try
|
||||||
|
{
|
||||||
if (regex_match(date_string.c_str(), result, expression))
|
if (regex_match(date_string.c_str(), result, expression))
|
||||||
{
|
{
|
||||||
// convert matches to integers so that we can pad them with zeroes on Linux
|
// convert matches to integers so that we can pad them with zeroes on Linux
|
||||||
@@ -962,6 +964,11 @@ static void formatDateString(std::string &date_string)
|
|||||||
// ISO 8601 date format
|
// ISO 8601 date format
|
||||||
date_string = llformat("%04d-%02d-%02dT00:00:00Z", year, month, day);
|
date_string = llformat("%04d-%02d-%02dT00:00:00Z", year, month, day);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
catch(...)
|
||||||
|
{
|
||||||
|
LL_ERRS() << "Decode of non-compliant DateTime format from [GroupMembersReply.GroupData.MemberData.OnlineStatus]. Please notify grid operators of this defect." << LL_ENDL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::string& localized_online()
|
const std::string& localized_online()
|
||||||
|
|||||||
@@ -2257,47 +2257,6 @@ void LLPanelObject::draw()
|
|||||||
LLPanel::draw();
|
LLPanel::draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
// virtual
|
|
||||||
void LLPanelObject::clearCtrls()
|
|
||||||
{
|
|
||||||
LLPanel::clearCtrls();
|
|
||||||
|
|
||||||
mCheckLock ->set(FALSE);
|
|
||||||
mCheckLock ->setEnabled( FALSE );
|
|
||||||
mCheckPhysics ->set(FALSE);
|
|
||||||
mCheckPhysics ->setEnabled( FALSE );
|
|
||||||
mCheckTemporary ->set(FALSE);
|
|
||||||
mCheckTemporary ->setEnabled( FALSE );
|
|
||||||
mCheckPhantom ->set(FALSE);
|
|
||||||
mCheckPhantom ->setEnabled( FALSE );
|
|
||||||
mComboMaterial ->setEnabled( FALSE );
|
|
||||||
mLabelMaterial ->setEnabled( FALSE );
|
|
||||||
// Disable text labels
|
|
||||||
mLabelPosition ->setEnabled( FALSE );
|
|
||||||
mLabelSize ->setEnabled( FALSE );
|
|
||||||
mLabelRotation ->setEnabled( FALSE );
|
|
||||||
mLabelBaseType ->setEnabled( FALSE );
|
|
||||||
mLabelCut ->setEnabled( FALSE );
|
|
||||||
mLabelHollow ->setEnabled( FALSE );
|
|
||||||
mLabelHoleType ->setEnabled( FALSE );
|
|
||||||
mLabelTwist ->setEnabled( FALSE );
|
|
||||||
mLabelSkew ->setEnabled( FALSE );
|
|
||||||
mLabelShear ->setEnabled( FALSE );
|
|
||||||
mLabelTaper ->setEnabled( FALSE );
|
|
||||||
mLabelRadiusOffset->setEnabled( FALSE );
|
|
||||||
mLabelRevolutions->setEnabled( FALSE );
|
|
||||||
|
|
||||||
childSetVisible("select_single", FALSE);
|
|
||||||
childSetVisible("edit_object", TRUE);
|
|
||||||
childSetEnabled("edit_object", FALSE);
|
|
||||||
|
|
||||||
childSetEnabled("scale_hole", FALSE);
|
|
||||||
childSetEnabled("scale_taper", FALSE);
|
|
||||||
childSetEnabled("advanced_cut", FALSE);
|
|
||||||
childSetEnabled("advanced_dimple", FALSE);
|
|
||||||
childSetVisible("advanced_slice", FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Static functions
|
// Static functions
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -63,7 +63,6 @@ public:
|
|||||||
|
|
||||||
virtual BOOL postBuild();
|
virtual BOOL postBuild();
|
||||||
virtual void draw();
|
virtual void draw();
|
||||||
virtual void clearCtrls();
|
|
||||||
|
|
||||||
void refresh();
|
void refresh();
|
||||||
|
|
||||||
|
|||||||
@@ -512,51 +512,6 @@ void LLPanelVolume::draw()
|
|||||||
LLPanel::draw();
|
LLPanel::draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
// virtual
|
|
||||||
void LLPanelVolume::clearCtrls()
|
|
||||||
{
|
|
||||||
LLPanel::clearCtrls();
|
|
||||||
|
|
||||||
getChildView("select_single")->setEnabled(false);
|
|
||||||
getChildView("select_single")->setVisible(true);
|
|
||||||
getChildView("edit_object")->setEnabled(false);
|
|
||||||
getChildView("edit_object")->setVisible(false);
|
|
||||||
getChildView("Light Checkbox Ctrl")->setEnabled(false);
|
|
||||||
getChildView("label color")->setEnabled(false);
|
|
||||||
LLColorSwatchCtrl* LightColorSwatch = getChild<LLColorSwatchCtrl>("colorswatch");
|
|
||||||
if(LightColorSwatch)
|
|
||||||
{
|
|
||||||
LightColorSwatch->setEnabled( FALSE );
|
|
||||||
LightColorSwatch->setValid( FALSE );
|
|
||||||
}
|
|
||||||
childSetEnabled("label texture",false);
|
|
||||||
LLTextureCtrl* LightTextureCtrl = getChild<LLTextureCtrl>("light texture control");
|
|
||||||
if(LightTextureCtrl)
|
|
||||||
{
|
|
||||||
LightTextureCtrl->setEnabled( FALSE );
|
|
||||||
LightTextureCtrl->setValid( FALSE );
|
|
||||||
}
|
|
||||||
|
|
||||||
getChildView("Light Intensity")->setEnabled(false);
|
|
||||||
getChildView("Light Radius")->setEnabled(false);
|
|
||||||
getChildView("Light Falloff")->setEnabled(false);
|
|
||||||
|
|
||||||
getChildView("Flexible1D Checkbox Ctrl")->setEnabled(false);
|
|
||||||
getChildView("FlexNumSections")->setEnabled(false);
|
|
||||||
getChildView("FlexGravity")->setEnabled(false);
|
|
||||||
getChildView("FlexTension")->setEnabled(false);
|
|
||||||
getChildView("FlexFriction")->setEnabled(false);
|
|
||||||
getChildView("FlexWind")->setEnabled(false);
|
|
||||||
getChildView("FlexForceX")->setEnabled(false);
|
|
||||||
getChildView("FlexForceY")->setEnabled(false);
|
|
||||||
getChildView("FlexForceZ")->setEnabled(false);
|
|
||||||
|
|
||||||
mSpinPhysicsGravity->setEnabled(FALSE);
|
|
||||||
mSpinPhysicsFriction->setEnabled(FALSE);
|
|
||||||
mSpinPhysicsDensity->setEnabled(FALSE);
|
|
||||||
mSpinPhysicsRestitution->setEnabled(FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Static functions
|
// Static functions
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -53,7 +53,6 @@ public:
|
|||||||
virtual ~LLPanelVolume();
|
virtual ~LLPanelVolume();
|
||||||
|
|
||||||
virtual void draw();
|
virtual void draw();
|
||||||
virtual void clearCtrls();
|
|
||||||
|
|
||||||
virtual BOOL postBuild();
|
virtual BOOL postBuild();
|
||||||
|
|
||||||
|
|||||||
@@ -45,6 +45,7 @@
|
|||||||
#include "lltoolfocus.h"
|
#include "lltoolfocus.h"
|
||||||
#include "llviewerwindow.h"
|
#include "llviewerwindow.h"
|
||||||
#include "llvoavatarself.h"
|
#include "llvoavatarself.h"
|
||||||
|
#include "llxuiparser.h"
|
||||||
|
|
||||||
void handle_reset_view();
|
void handle_reset_view();
|
||||||
|
|
||||||
@@ -58,7 +59,6 @@ const F32 FLY_FRAMES = 4;
|
|||||||
const F32 NUDGE_TIME = 0.25f; // in seconds
|
const F32 NUDGE_TIME = 0.25f; // in seconds
|
||||||
const S32 NUDGE_FRAMES = 2;
|
const S32 NUDGE_FRAMES = 2;
|
||||||
const F32 ORBIT_NUDGE_RATE = 0.05f; // fraction of normal speed
|
const F32 ORBIT_NUDGE_RATE = 0.05f; // fraction of normal speed
|
||||||
const F32 YAW_NUDGE_RATE = 0.05f; // fraction of normal speed
|
|
||||||
|
|
||||||
struct LLKeyboardActionRegistry
|
struct LLKeyboardActionRegistry
|
||||||
: public LLRegistrySingleton<std::string, boost::function<void (EKeystate keystate)>, LLKeyboardActionRegistry>
|
: public LLRegistrySingleton<std::string, boost::function<void (EKeystate keystate)>, LLKeyboardActionRegistry>
|
||||||
@@ -86,6 +86,7 @@ void agent_jump( EKeystate s )
|
|||||||
gAgent.moveUp(1);
|
gAgent.moveUp(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// <singu>
|
||||||
void agent_toggle_down( EKeystate s )
|
void agent_toggle_down( EKeystate s )
|
||||||
{
|
{
|
||||||
if (KEYSTATE_UP == s) return;
|
if (KEYSTATE_UP == s) return;
|
||||||
@@ -96,6 +97,7 @@ void agent_toggle_down( EKeystate s )
|
|||||||
}
|
}
|
||||||
gAgent.moveUp(-1);
|
gAgent.moveUp(-1);
|
||||||
}
|
}
|
||||||
|
// </singu>
|
||||||
|
|
||||||
void agent_push_down( EKeystate s )
|
void agent_push_down( EKeystate s )
|
||||||
{
|
{
|
||||||
@@ -103,22 +105,29 @@ void agent_push_down( EKeystate s )
|
|||||||
gAgent.moveUp(-1);
|
gAgent.moveUp(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void agent_check_temporary_run(LLAgent::EDoubleTapRunMode mode)
|
||||||
|
{
|
||||||
|
// if (gAgent.mDoubleTapRunMode == mode &&
|
||||||
|
// gAgent.getRunning() &&
|
||||||
|
// !gAgent.getAlwaysRun())
|
||||||
|
// {
|
||||||
|
// // Turn off temporary running.
|
||||||
|
// gAgent.clearRunning();
|
||||||
|
// gAgent.sendWalkRun(gAgent.getRunning());
|
||||||
|
// }
|
||||||
|
// [RLVa:KB] - Checked: 2011-05-11 (RLVa-1.3.0i) | Added: RLVa-1.3.0i
|
||||||
|
if ( (gAgent.mDoubleTapRunMode == mode) && (gAgent.getTempRun()) )
|
||||||
|
gAgent.clearTempRun();
|
||||||
|
// [/RLVa:KB]
|
||||||
|
}
|
||||||
|
|
||||||
static void agent_handle_doubletap_run(EKeystate s, LLAgent::EDoubleTapRunMode mode)
|
static void agent_handle_doubletap_run(EKeystate s, LLAgent::EDoubleTapRunMode mode)
|
||||||
{
|
{
|
||||||
if (KEYSTATE_UP == s)
|
if (KEYSTATE_UP == s)
|
||||||
{
|
{
|
||||||
// if (gAgent.mDoubleTapRunMode == mode &&
|
// Note: in case shift is already released, slide left/right run
|
||||||
// gAgent.getRunning() &&
|
// will be released in agent_turn_left()/agent_turn_right()
|
||||||
// !gAgent.getAlwaysRun())
|
agent_check_temporary_run(mode);
|
||||||
// {
|
|
||||||
// // Turn off temporary running.
|
|
||||||
// gAgent.clearRunning();
|
|
||||||
// gAgent.sendWalkRun(gAgent.getRunning());
|
|
||||||
// }
|
|
||||||
// [RLVa:KB] - Checked: 2011-05-11 (RLVa-1.3.0i) | Added: RLVa-1.3.0i
|
|
||||||
if ( (gAgent.mDoubleTapRunMode == mode) && (gAgent.getTempRun()) )
|
|
||||||
gAgent.clearTempRun();
|
|
||||||
// [/RLVa:KB]
|
|
||||||
}
|
}
|
||||||
else if (gSavedSettings.getBOOL("AllowTapTapHoldRun") &&
|
else if (gSavedSettings.getBOOL("AllowTapTapHoldRun") &&
|
||||||
KEYSTATE_DOWN == s &&
|
KEYSTATE_DOWN == s &&
|
||||||
@@ -208,7 +217,10 @@ void agent_turn_left( EKeystate s )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (KEYSTATE_UP == s) return;
|
if (KEYSTATE_UP == s)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
F32 time = gKeyboard->getCurKeyElapsedTime();
|
F32 time = gKeyboard->getCurKeyElapsedTime();
|
||||||
gAgent.moveYaw( LLFloaterMove::getYawRate( time ) );
|
gAgent.moveYaw( LLFloaterMove::getYawRate( time ) );
|
||||||
}
|
}
|
||||||
@@ -223,7 +235,10 @@ void agent_turn_right( EKeystate s )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (KEYSTATE_UP == s) return;
|
if (KEYSTATE_UP == s)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
F32 time = gKeyboard->getCurKeyElapsedTime();
|
F32 time = gKeyboard->getCurKeyElapsedTime();
|
||||||
gAgent.moveYaw( -LLFloaterMove::getYawRate( time ) );
|
gAgent.moveYaw( -LLFloaterMove::getYawRate( time ) );
|
||||||
}
|
}
|
||||||
@@ -758,6 +773,61 @@ BOOL LLViewerKeyboard::bindKey(const S32 mode, const KEY key, const MASK mask, c
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LLViewerKeyboard::KeyBinding::KeyBinding()
|
||||||
|
: key("key"),
|
||||||
|
mask("mask"),
|
||||||
|
command("command")
|
||||||
|
{}
|
||||||
|
|
||||||
|
LLViewerKeyboard::KeyMode::KeyMode(EKeyboardMode _mode)
|
||||||
|
: bindings("binding"),
|
||||||
|
mode(_mode)
|
||||||
|
{}
|
||||||
|
|
||||||
|
LLViewerKeyboard::Keys::Keys()
|
||||||
|
: first_person("first_person", KeyMode(MODE_FIRST_PERSON)),
|
||||||
|
third_person("third_person", KeyMode(MODE_THIRD_PERSON)),
|
||||||
|
edit("edit", KeyMode(MODE_EDIT)),
|
||||||
|
sitting("sitting", KeyMode(MODE_SITTING)),
|
||||||
|
edit_avatar("edit_avatar", KeyMode(MODE_EDIT_AVATAR))
|
||||||
|
{}
|
||||||
|
|
||||||
|
S32 LLViewerKeyboard::loadBindingsXML(const std::string& filename)
|
||||||
|
{
|
||||||
|
S32 binding_count = 0;
|
||||||
|
Keys keys;
|
||||||
|
LLSimpleXUIParser parser;
|
||||||
|
|
||||||
|
if (parser.readXUI(filename, keys)
|
||||||
|
&& keys.validateBlock())
|
||||||
|
{
|
||||||
|
binding_count += loadBindingMode(keys.first_person);
|
||||||
|
binding_count += loadBindingMode(keys.third_person);
|
||||||
|
binding_count += loadBindingMode(keys.edit);
|
||||||
|
binding_count += loadBindingMode(keys.sitting);
|
||||||
|
binding_count += loadBindingMode(keys.edit_avatar);
|
||||||
|
}
|
||||||
|
return binding_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
S32 LLViewerKeyboard::loadBindingMode(const LLViewerKeyboard::KeyMode& keymode)
|
||||||
|
{
|
||||||
|
S32 binding_count = 0;
|
||||||
|
for (LLInitParam::ParamIterator<KeyBinding>::const_iterator it = keymode.bindings.begin(),
|
||||||
|
end_it = keymode.bindings.end();
|
||||||
|
it != end_it;
|
||||||
|
++it)
|
||||||
|
{
|
||||||
|
KEY key;
|
||||||
|
MASK mask;
|
||||||
|
LLKeyboard::keyFromString(it->key, &key);
|
||||||
|
LLKeyboard::maskFromString(it->mask, &mask);
|
||||||
|
bindKey(keymode.mode, key, mask, it->command);
|
||||||
|
binding_count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return binding_count;
|
||||||
|
}
|
||||||
|
|
||||||
S32 LLViewerKeyboard::loadBindings(const std::string& filename)
|
S32 LLViewerKeyboard::loadBindings(const std::string& filename)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,31 +2,25 @@
|
|||||||
* @file llviewerkeyboard.h
|
* @file llviewerkeyboard.h
|
||||||
* @brief LLViewerKeyboard class header file
|
* @brief LLViewerKeyboard class header file
|
||||||
*
|
*
|
||||||
* $LicenseInfo:firstyear=2005&license=viewergpl$
|
* $LicenseInfo:firstyear=2005&license=viewerlgpl$
|
||||||
*
|
|
||||||
* Copyright (c) 2005-2009, Linden Research, Inc.
|
|
||||||
*
|
|
||||||
* Second Life Viewer Source Code
|
* Second Life Viewer Source Code
|
||||||
* The source code in this file ("Source Code") is provided by Linden Lab
|
* Copyright (C) 2010, Linden Research, Inc.
|
||||||
* to you under the terms of the GNU General Public License, version 2.0
|
|
||||||
* ("GPL"), unless you have obtained a separate licensing agreement
|
|
||||||
* ("Other License"), formally executed by you and Linden Lab. Terms of
|
|
||||||
* the GPL can be found in doc/GPL-license.txt in this distribution, or
|
|
||||||
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
|
|
||||||
*
|
*
|
||||||
* There are special exceptions to the terms and conditions of the GPL as
|
* This library is free software; you can redistribute it and/or
|
||||||
* it is applied to this Source Code. View the full text of the exception
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
* in the file doc/FLOSS-exception.txt in this software distribution, or
|
* License as published by the Free Software Foundation;
|
||||||
* online at
|
* version 2.1 of the License only.
|
||||||
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
|
|
||||||
*
|
*
|
||||||
* By copying, modifying or distributing this software, you acknowledge
|
* This library is distributed in the hope that it will be useful,
|
||||||
* that you have read and understood your obligations described above,
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* and agree to abide by those obligations.
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
*
|
*
|
||||||
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
|
* License along with this library; if not, write to the Free Software
|
||||||
* COMPLETENESS OR PERFORMANCE.
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*
|
||||||
|
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||||
* $/LicenseInfo$
|
* $/LicenseInfo$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -34,6 +28,7 @@
|
|||||||
#define LL_LLVIEWERKEYBOARD_H
|
#define LL_LLVIEWERKEYBOARD_H
|
||||||
|
|
||||||
#include "llkeyboard.h" // For EKeystate
|
#include "llkeyboard.h" // For EKeystate
|
||||||
|
#include "llinitparam.h"
|
||||||
|
|
||||||
const S32 MAX_NAMED_FUNCTIONS = 100;
|
const S32 MAX_NAMED_FUNCTIONS = 100;
|
||||||
const S32 MAX_KEY_BINDINGS = 128; // was 60
|
const S32 MAX_KEY_BINDINGS = 128; // was 60
|
||||||
@@ -64,18 +59,48 @@ void bind_keyboard_functions();
|
|||||||
class LLViewerKeyboard
|
class LLViewerKeyboard
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
struct KeyBinding : public LLInitParam::Block<KeyBinding>
|
||||||
|
{
|
||||||
|
Mandatory<std::string> key,
|
||||||
|
mask,
|
||||||
|
command;
|
||||||
|
|
||||||
|
KeyBinding();
|
||||||
|
};
|
||||||
|
|
||||||
|
struct KeyMode : public LLInitParam::Block<KeyMode>
|
||||||
|
{
|
||||||
|
Multiple<KeyBinding> bindings;
|
||||||
|
EKeyboardMode mode;
|
||||||
|
KeyMode(EKeyboardMode mode);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Keys : public LLInitParam::Block<Keys>
|
||||||
|
{
|
||||||
|
Optional<KeyMode> first_person,
|
||||||
|
third_person,
|
||||||
|
edit,
|
||||||
|
sitting,
|
||||||
|
edit_avatar;
|
||||||
|
|
||||||
|
Keys();
|
||||||
|
};
|
||||||
|
|
||||||
LLViewerKeyboard();
|
LLViewerKeyboard();
|
||||||
|
|
||||||
BOOL handleKey(KEY key, MASK mask, BOOL repeated);
|
BOOL handleKey(KEY key, MASK mask, BOOL repeated);
|
||||||
|
|
||||||
S32 loadBindings(const std::string& filename); // returns number bound, 0 on error
|
S32 loadBindings(const std::string& filename); // returns number bound, 0 on error
|
||||||
|
S32 loadBindingsXML(const std::string& filename); // returns number bound, 0 on error
|
||||||
void unloadBindings();
|
void unloadBindings();
|
||||||
EKeyboardMode getMode();
|
EKeyboardMode getMode();
|
||||||
|
|
||||||
BOOL modeFromString(const std::string& string, S32 *mode); // False on failure
|
BOOL modeFromString(const std::string& string, S32 *mode); // False on failure
|
||||||
|
|
||||||
void scanKey(KEY key, BOOL key_down, BOOL key_up, BOOL key_level);
|
void scanKey(KEY key, BOOL key_down, BOOL key_up, BOOL key_level);
|
||||||
protected:
|
|
||||||
|
private:
|
||||||
|
S32 loadBindingMode(const LLViewerKeyboard::KeyMode& keymode);
|
||||||
BOOL bindKey(const S32 mode, const KEY key, const MASK mask, const std::string& function_name);
|
BOOL bindKey(const S32 mode, const KEY key, const MASK mask, const std::string& function_name);
|
||||||
|
|
||||||
// Hold all the ugly stuff torn out to make LLKeyboard non-viewer-specific here
|
// Hold all the ugly stuff torn out to make LLKeyboard non-viewer-specific here
|
||||||
|
|||||||
@@ -5082,14 +5082,14 @@ void LLViewerWindow::drawMouselookInstructions()
|
|||||||
LLFontGL::HCENTER, LLFontGL::TOP,
|
LLFontGL::HCENTER, LLFontGL::TOP,
|
||||||
LLFontGL::BOLD, LLFontGL::DROP_SHADOW_SOFT);
|
LLFontGL::BOLD, LLFontGL::DROP_SHADOW_SOFT);
|
||||||
font->renderUTF8(
|
font->renderUTF8(
|
||||||
llformat("Y: %.2f", vec.mV[VX]), 0,
|
llformat("Y: %.2f", vec.mV[VY]), 0,
|
||||||
text_pos_start + 100,
|
text_pos_start + 100,
|
||||||
INSTRUCTIONS_PAD,
|
INSTRUCTIONS_PAD,
|
||||||
LLColor4(0.5f, 1.0f, 0.5f, 0.5),
|
LLColor4(0.5f, 1.0f, 0.5f, 0.5),
|
||||||
LLFontGL::HCENTER, LLFontGL::TOP,
|
LLFontGL::HCENTER, LLFontGL::TOP,
|
||||||
LLFontGL::BOLD, LLFontGL::DROP_SHADOW_SOFT);
|
LLFontGL::BOLD, LLFontGL::DROP_SHADOW_SOFT);
|
||||||
font->renderUTF8(
|
font->renderUTF8(
|
||||||
llformat("Z: %.2f", vec.mV[VX]), 0,
|
llformat("Z: %.2f", vec.mV[VZ]), 0,
|
||||||
text_pos_start + 200,
|
text_pos_start + 200,
|
||||||
INSTRUCTIONS_PAD,
|
INSTRUCTIONS_PAD,
|
||||||
LLColor4(0.5f, 0.5f, 1.0f, 0.5),
|
LLColor4(0.5f, 0.5f, 1.0f, 0.5),
|
||||||
|
|||||||
@@ -26,7 +26,6 @@
|
|||||||
#include "llviewerparcelmgr.h"
|
#include "llviewerparcelmgr.h"
|
||||||
#include "llviewermenu.h"
|
#include "llviewermenu.h"
|
||||||
#include "llviewerregion.h"
|
#include "llviewerregion.h"
|
||||||
#include "llviewerstats.h"
|
|
||||||
#include "llworld.h"
|
#include "llworld.h"
|
||||||
|
|
||||||
#include "rlvactions.h"
|
#include "rlvactions.h"
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
#include "llagent.h"
|
#include "llagent.h"
|
||||||
#include "llagentcamera.h"
|
#include "llagentcamera.h"
|
||||||
#include "lldaycyclemanager.h"
|
#include "lldaycyclemanager.h"
|
||||||
#include "llviewercontrol.h"
|
|
||||||
#include "llvoavatarself.h"
|
#include "llvoavatarself.h"
|
||||||
#include "llwlparammanager.h"
|
#include "llwlparammanager.h"
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
#include "llviewerregion.h"
|
#include "llviewerregion.h"
|
||||||
|
|
||||||
#include "rlvhandler.h"
|
#include "rlvhandler.h"
|
||||||
|
#include "rlvhelper.h"
|
||||||
#include "rlvinventory.h"
|
#include "rlvinventory.h"
|
||||||
#include "rlvlocks.h"
|
#include "rlvlocks.h"
|
||||||
#include "rlvui.h"
|
#include "rlvui.h"
|
||||||
|
|||||||
@@ -15,15 +15,11 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "llviewerprecompiledheaders.h"
|
#include "llviewerprecompiledheaders.h"
|
||||||
#include "llagent.h"
|
|
||||||
#include "llagentwearables.h"
|
|
||||||
#include "llappearancemgr.h"
|
#include "llappearancemgr.h"
|
||||||
#include "llattachmentsmgr.h"
|
#include "llattachmentsmgr.h"
|
||||||
#include "llgesturemgr.h"
|
#include "llgesturemgr.h"
|
||||||
#include "llnotificationsutil.h"
|
#include "llnotificationsutil.h"
|
||||||
#include "llviewerobject.h"
|
|
||||||
#include "llviewerobjectlist.h"
|
#include "llviewerobjectlist.h"
|
||||||
#include "llwlparammanager.h"
|
|
||||||
|
|
||||||
#include "rlvhelper.h"
|
#include "rlvhelper.h"
|
||||||
#include "rlvhandler.h"
|
#include "rlvhandler.h"
|
||||||
|
|||||||
@@ -21,7 +21,6 @@
|
|||||||
#include "llinventorymodel.h"
|
#include "llinventorymodel.h"
|
||||||
#include "llviewerinventory.h"
|
#include "llviewerinventory.h"
|
||||||
#include "llwearabletype.h"
|
#include "llwearabletype.h"
|
||||||
#include "llwlparamset.h"
|
|
||||||
|
|
||||||
#include "rlvdefines.h"
|
#include "rlvdefines.h"
|
||||||
#include "rlvcommon.h"
|
#include "rlvcommon.h"
|
||||||
|
|||||||
@@ -17,17 +17,10 @@
|
|||||||
#include "llviewerprecompiledheaders.h"
|
#include "llviewerprecompiledheaders.h"
|
||||||
#include "llagent.h"
|
#include "llagent.h"
|
||||||
#include "llappearancemgr.h"
|
#include "llappearancemgr.h"
|
||||||
#include "llinventoryobserver.h"
|
|
||||||
#include "llstartup.h"
|
#include "llstartup.h"
|
||||||
#include "llviewerfoldertype.h"
|
#include "llviewerfoldertype.h"
|
||||||
#include "llviewerobject.h"
|
|
||||||
#include "llvoavatarself.h"
|
|
||||||
|
|
||||||
#include "rlvdefines.h"
|
|
||||||
#include "rlvcommon.h"
|
|
||||||
#include "rlvlocks.h"
|
|
||||||
#include "rlvinventory.h"
|
#include "rlvinventory.h"
|
||||||
#include "rlvhandler.h"
|
|
||||||
|
|
||||||
#include "boost/algorithm/string.hpp"
|
#include "boost/algorithm/string.hpp"
|
||||||
|
|
||||||
|
|||||||
@@ -18,10 +18,8 @@
|
|||||||
#define RLV_INVENTORY_H
|
#define RLV_INVENTORY_H
|
||||||
|
|
||||||
#include "llinventoryfunctions.h"
|
#include "llinventoryfunctions.h"
|
||||||
#include "llinventorymodel.h"
|
|
||||||
#include "llinventoryobserver.h"
|
#include "llinventoryobserver.h"
|
||||||
#include "llsingleton.h"
|
#include "llsingleton.h"
|
||||||
#include "llviewerinventory.h"
|
|
||||||
|
|
||||||
#include "rlvhelper.h"
|
#include "rlvhelper.h"
|
||||||
#include "rlvlocks.h"
|
#include "rlvlocks.h"
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
#include "llagent.h"
|
#include "llagent.h"
|
||||||
#include "llappearancemgr.h"
|
#include "llappearancemgr.h"
|
||||||
#include "llattachmentsmgr.h"
|
#include "llattachmentsmgr.h"
|
||||||
#include "llinventoryobserver.h"
|
|
||||||
#include "lloutfitobserver.h"
|
#include "lloutfitobserver.h"
|
||||||
#include "llviewerobjectlist.h"
|
#include "llviewerobjectlist.h"
|
||||||
#include "pipeline.h"
|
#include "pipeline.h"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||||
<floater name="radar" title="Radar"
|
<floater name="radar" title="Radar" control_name="ShowRadar"
|
||||||
can_resize="true" can_minimize="true" can_close="true" can_drag_on_left="false"
|
can_resize="true" can_minimize="true" can_close="true" can_drag_on_left="false"
|
||||||
rect_control="FloaterRadarRect" min_width="300" min_height="300">
|
rect_control="FloaterRadarRect" min_width="300" min_height="300">
|
||||||
<string name="Title">Radar</string>
|
<string name="Title">Radar</string>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
<button.commit_callback function="Wlf.ChangeCameraPreset" parameter="2"/>
|
<button.commit_callback function="Wlf.ChangeCameraPreset" parameter="2"/>
|
||||||
</button>
|
</button>
|
||||||
<slider bottom_delta="-20" left="5" control_name="RenderFarClip" decimal_digits="0" height="20" increment="8" label="Draw Dist.:" can_edit_text="true" label_width="60" max_val="1024" min_val="24" val_width="36" name="DrawDistance" width="190" tool_tip="Change your Draw Distance"/>
|
<slider bottom_delta="-20" left="5" control_name="RenderFarClip" decimal_digits="0" height="20" increment="8" label="Draw Dist.:" can_edit_text="true" label_width="60" max_val="1024" min_val="24" val_width="36" name="DrawDistance" width="190" tool_tip="Change your Draw Distance"/>
|
||||||
<slider bottom_delta="-20" control_name="AvatarHoverOffsetZ" height="20" increment=".001" label="Hover Ht.:" can_edit_text="true" label_width="60" max_val="5" min_val="-5" val_width="36" name="HoverHeightSlider" width="189"/>
|
<slider bottom_delta="-20" height="20" increment=".001" label="Hover Ht.:" can_edit_text="true" label_width="60" max_val="5" min_val="-5" val_width="36" name="HoverHeightSlider" width="189"/>
|
||||||
<slider bottom_delta="-20" control_name="RenderMaxPartCount" decimal_digits="0" height="20" increment="256" label="Particles:" can_edit_text="true" label_width="60" max_val="8192" min_val="0" val_width="36" name="MaxParticleCount" width="190" tool_tip="Amount of particles to render"/>
|
<slider bottom_delta="-20" control_name="RenderMaxPartCount" decimal_digits="0" height="20" increment="256" label="Particles:" can_edit_text="true" label_width="60" max_val="8192" min_val="0" val_width="36" name="MaxParticleCount" width="190" tool_tip="Amount of particles to render"/>
|
||||||
<slider bottom_delta="-20" control_name="RenderAvatarMaxVisible" decimal_digits="0" height="20" increment="1" label="Max Avs:" can_edit_text="true" label_width="60" max_val="50" min_val="1" val_width="36" name="RenderAvatarMaxVisible" width="190" tool_tip="How many avatars to fully render on screen. Lowering this greatly improves FPS in crowded situations. Requires Avatar Impostors to be on. [Default 35]"/>
|
<slider bottom_delta="-20" control_name="RenderAvatarMaxVisible" decimal_digits="0" height="20" increment="1" label="Max Avs:" can_edit_text="true" label_width="60" max_val="50" min_val="1" val_width="36" name="RenderAvatarMaxVisible" width="190" tool_tip="How many avatars to fully render on screen. Lowering this greatly improves FPS in crowded situations. Requires Avatar Impostors to be on. [Default 35]"/>
|
||||||
<slider bottom_delta="-20" control_name="RenderVolumeLODFactor" height="20" increment="0.125" label="Obj. Detail:" can_edit_text="true" label_width="60" max_val="4" min_val="0.5" name="Object Detail" val_width="36" width="190" tool_tip="Controls level of detail of primitives (multiplier for current screen area when calculated level of detail[0.5 to 2.0 is stable])"/>
|
<slider bottom_delta="-20" control_name="RenderVolumeLODFactor" height="20" increment="0.125" label="Obj. Detail:" can_edit_text="true" label_width="60" max_val="4" min_val="0.5" name="Object Detail" val_width="36" width="190" tool_tip="Controls level of detail of primitives (multiplier for current screen area when calculated level of detail[0.5 to 2.0 is stable])"/>
|
||||||
|
|||||||
@@ -222,6 +222,10 @@ BOOL wlfPanel_AdvSettings::postBuild()
|
|||||||
// Set up based on initial region.
|
// Set up based on initial region.
|
||||||
onRegionChanged();
|
onRegionChanged();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mHoverHeight = NULL;
|
||||||
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -513,7 +517,7 @@ void wlfPanel_AdvSettings::updateEditHoverEnabled()
|
|||||||
{
|
{
|
||||||
const LLViewerRegion* region = gAgent.getRegion();
|
const LLViewerRegion* region = gAgent.getRegion();
|
||||||
bool enabled = region && region->avatarHoverHeightEnabled();
|
bool enabled = region && region->avatarHoverHeightEnabled();
|
||||||
mHoverHeight->setEnabled(enabled);
|
if (mHoverHeight) mHoverHeight->setEnabled(enabled);
|
||||||
if (enabled)
|
if (enabled)
|
||||||
{
|
{
|
||||||
syncFromPreferenceSetting(mHoverHeight);
|
syncFromPreferenceSetting(mHoverHeight);
|
||||||
|
|||||||
Reference in New Issue
Block a user