diff --git a/indra/llvfs/llpidlock.cpp b/indra/llvfs/llpidlock.cpp index cb6442816..93f1af52b 100755 --- a/indra/llvfs/llpidlock.cpp +++ b/indra/llvfs/llpidlock.cpp @@ -60,8 +60,12 @@ class LLPidLockFile { public: LLPidLockFile( ) : - mSaving(FALSE), mWaiting(FALSE), - mClean(TRUE), mPID(LLApp::getPid()) + mAutosave(false), + mSaving(false), + mWaiting(false), + mPID(LLApp::getPid()), + mNameTable(NULL), + mClean(true) { mLockName = gDirUtilp->getTempDir() + "/savelock"; } diff --git a/indra/llvfs/llvfile.h b/indra/llvfs/llvfile.h index 8db45d30b..c3bca8c73 100644 --- a/indra/llvfs/llvfile.h +++ b/indra/llvfs/llvfile.h @@ -80,16 +80,14 @@ public: static const S32 READ_WRITE; static const S32 APPEND; +protected: LLAssetType::EType mFileType; LLUUID mFileID; - -protected: S32 mPosition; S32 mMode; LLVFS *mVFS; F32 mPriority; - BOOL mOnReadQueue; S32 mBytesRead; LLVFSThread::handle_t mHandle; diff --git a/indra/newview/app_settings/settings_sh.xml b/indra/newview/app_settings/settings_sh.xml index 95e494f46..6165c069d 100644 --- a/indra/newview/app_settings/settings_sh.xml +++ b/indra/newview/app_settings/settings_sh.xml @@ -89,7 +89,7 @@ Type Boolean Value - 1 + 0 SGBlockCardSpam diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml index 2f92d6212..47433ae01 100755 --- a/indra/newview/character/avatar_lad.xml +++ b/indra/newview/character/avatar_lad.xml @@ -11390,6 +11390,7 @@ mExtents[1] - facep->mExtents[0]) * 0.25f; LLVector3 v = (facep->mCenterLocal-camera.getOrigin()); - LLVector3 at = camera.getAtAxis(); - for (U32 j = 0; j < 3; j++) + const LLVector3& at = camera.getAtAxis(); + for (U32 j = 0; j < 3; j++) { v.mV[j] -= box.mV[j] * at.mV[j]; } diff --git a/indra/newview/llphysicsmotion.cpp b/indra/newview/llphysicsmotion.cpp index e9a127cf3..18ec57fe7 100644 --- a/indra/newview/llphysicsmotion.cpp +++ b/indra/newview/llphysicsmotion.cpp @@ -102,11 +102,15 @@ public: mLastTime(0), mPosition_local(0), mVelocityJoint_local(0), - mPositionLastUpdate_local(0) + mPositionLastUpdate_local(0), + mAccelerationJoint_local(0), + mVelocity_local(0) { mJointState = new LLJointState; } + void getString(std::ostringstream &oss); + BOOL initialize(); ~LLPhysicsMotion() {} @@ -127,8 +131,7 @@ protected: { return sDefaultController[controller_key]; } - const std::string& param_name = (*entry).second.c_str(); - return mCharacter->getVisualParamWeight(param_name.c_str()); + return mCharacter->getVisualParamWeight((*entry).second.c_str()); } void setParamValue(LLViewerVisualParam *param, const F32 new_value_local, @@ -194,6 +197,80 @@ BOOL LLPhysicsMotion::initialize() return TRUE; } +std::string LLPhysicsMotionController::getString() +{ + std::ostringstream oss; + oss << "{" << std::endl << + "Active: " << mActive << std::endl << + "IsDefault: " << mIsDefault << std::endl << + "Stopped: " << isStopped() << std::endl << + "Name: " << getName() << std::endl << + "ID: " << getID().asString() << std::endl; + + for (motion_vec_t::iterator iter = mMotions.begin();iter != mMotions.end();++iter) + { + (*iter)->getString(oss); + } + oss << "}" << std::endl; + return oss.str(); +} +void getParamString(U32 depth, LLViewerVisualParam *param, std::ostringstream &oss) +{ + std::string indent; + indent.resize(depth,' '); + + oss << + indent << "getID: " << param->getID() << std::endl << + indent << "getName: " << param->getName() << std::endl << + indent << "getDisplayName: " << param->getDisplayName() << std::endl << + indent << "getGroup: " << param->getGroup() << std::endl << + indent << "getSex: " << param->getSex() << std::endl << + indent << "getMinWeight: " << param->getMinWeight() << std::endl << + indent << "getMaxWeight: " << param->getMaxWeight() << std::endl << + indent << "getDefaultWeight: " << param->getDefaultWeight() << std::endl << + indent << "getWeight: " << param->getWeight() << std::endl << + indent << "getCurrentWeight: " << param->getCurrentWeight() << std::endl << + indent << "getLastWeight: " << param->getLastWeight() << std::endl << + indent << "isAnimating: " << param->isAnimating() << std::endl << + indent << "isTweakable: " << param->isTweakable() << std::endl; +} +void LLPhysicsMotion::getString(std::ostringstream &oss) +{ + oss << + " mParamDriverName: " << mParamDriverName << std::endl << + " mParamControllerName: " << mParamControllerName << std::endl << + " mMotionDirectionVec: " << mMotionDirectionVec << std::endl << + " mJointName: " << mJointName << std::endl << + " mPosition_local: " << mPosition_local << std::endl << + " mVelocityJoint_local: " << mVelocityJoint_local << std::endl << + " mAccelerationJoint_local: " << mAccelerationJoint_local << std::endl << + " mPositionLastUpdate_local: " << mPositionLastUpdate_local << std::endl << + " mPosition_world: " << mPosition_world << std::endl << + " mVelocity_local: " << mVelocity_local << std::endl; + if(mParamDriver) + { + oss << " " << std::endl; + getParamString(2,mParamDriver,oss); + LLDriverParam *driver_param = dynamic_cast(mParamDriver); + if(driver_param) + { + for (LLDriverParam::entry_list_t::iterator iter = driver_param->mDriven.begin(); + iter != driver_param->mDriven.end();++iter) + { + oss << " " << std::endl; + getParamString(3,iter->mParam,oss); + } + } + } + else + oss << " mParamDriver: (NULL)" << std::endl; + oss << " Controllers:" << std::endl; + for(controller_map_t::const_iterator it = mParamControllers.begin(); it!= mParamControllers.end(); ++it) + { + oss << " mParamControllers[\"" << it->first << "\"] = \"" << it->second << "\" =" << getParamValue(it->first) << std::endl; + } +} + LLPhysicsMotionController::LLPhysicsMotionController(const LLUUID &id) : LLMotion(id), mCharacter(NULL), diff --git a/indra/newview/llphysicsmotion.h b/indra/newview/llphysicsmotion.h index 3ee44f8d5..7e6bddd17 100644 --- a/indra/newview/llphysicsmotion.h +++ b/indra/newview/llphysicsmotion.h @@ -51,6 +51,9 @@ class LLPhysicsMotionController : public LLMotion { public: + + std::string getString(); + // Constructor LLPhysicsMotionController(const LLUUID &id); diff --git a/indra/newview/llviewerjointattachment.cpp b/indra/newview/llviewerjointattachment.cpp index b89e1eeaa..8e8dcef98 100644 --- a/indra/newview/llviewerjointattachment.cpp +++ b/indra/newview/llviewerjointattachment.cpp @@ -139,7 +139,7 @@ void LLViewerJointAttachment::setupDrawable(LLViewerObject *object) LLViewerObject::const_child_list_t& child_list = object->getChildren(); for (LLViewerObject::child_list_t::const_iterator iter = child_list.begin(); - iter != child_list.end(); iter++) + iter != child_list.end(); ++iter) { LLViewerObject* childp = *iter; if (childp && childp->mDrawable.notNull()) @@ -197,7 +197,7 @@ BOOL LLViewerJointAttachment::addObject(LLViewerObject* object) } LLViewerObject::const_child_list_t& child_list = object->getChildren(); for (LLViewerObject::child_list_t::const_iterator iter = child_list.begin(); - iter != child_list.end(); iter++) + iter != child_list.end(); ++iter) { LLViewerObject* childp = *iter; if (childp && childp->mText.notNull()) @@ -266,7 +266,7 @@ void LLViewerJointAttachment::removeObject(LLViewerObject *object) LLViewerObject::const_child_list_t& child_list = object->getChildren(); for (LLViewerObject::child_list_t::const_iterator iter = child_list.begin(); - iter != child_list.end(); iter++) + iter != child_list.end(); ++iter) { LLViewerObject* childp = *iter; if (childp && childp->mDrawable.notNull()) @@ -291,7 +291,7 @@ void LLViewerJointAttachment::removeObject(LLViewerObject *object) } LLViewerObject::const_child_list_t& child_list = object->getChildren(); for (LLViewerObject::child_list_t::const_iterator iter = child_list.begin(); - iter != child_list.end(); iter++) + iter != child_list.end(); ++iter) { LLViewerObject* childp = *iter; if (childp->mText.notNull()) diff --git a/indra/newview/llviewerjointattachment.h b/indra/newview/llviewerjointattachment.h index 7037db039..269f7158b 100644 --- a/indra/newview/llviewerjointattachment.h +++ b/indra/newview/llviewerjointattachment.h @@ -114,8 +114,8 @@ public: protected: void calcLOD(); void setupDrawable(LLViewerObject *object); - -protected: + +private: BOOL mVisibleInFirst; LLVector3 mOriginalPos; S32 mGroup; diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 264948fb4..74a84cd00 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -3421,8 +3421,8 @@ void LLViewerObject::setPositionParent(const LLVector3 &pos_parent, BOOL damped) // Set position relative to parent, if no parent, relative to region if (!isRoot()) { - LLViewerObject::setPosition(pos_parent); - updateDrawable(damped); + LLViewerObject::setPosition(pos_parent, damped); + //updateDrawable(damped); } else { @@ -3463,6 +3463,7 @@ void LLViewerObject::setPositionEdit(const LLVector3 &pos_edit, BOOL damped) LLVector3 position_offset = getPosition() * getParent()->getRotation(); ((LLViewerObject *)getParent())->setPositionEdit(pos_edit - position_offset); + updateDrawable(damped); } else if (isJointChild()) { @@ -3471,15 +3472,14 @@ void LLViewerObject::setPositionEdit(const LLVector3 &pos_edit, BOOL damped) LLQuaternion inv_parent_rot = parent->getRotation(); inv_parent_rot.transQuat(); LLVector3 pos_parent = (pos_edit - parent->getPositionRegion()) * inv_parent_rot; - LLViewerObject::setPosition(pos_parent); + LLViewerObject::setPosition(pos_parent, damped); } else { - LLViewerObject::setPosition(pos_edit); + LLViewerObject::setPosition(pos_edit, damped); mPositionRegion = pos_edit; mPositionAgent = mRegionp->getPosAgentFromRegion(mPositionRegion); - } - updateDrawable(damped); + } } diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 0d61f4886..9fc072b59 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -827,13 +827,14 @@ void LLViewerObjectList::clearDebugText() void LLViewerObjectList::cleanupReferences(LLViewerObject *objectp) { LLMemType mt(LLMemType::MTYPE_OBJECT); - if (mDeadObjects.count(objectp->mID)) + if (mDeadObjects.find(objectp->mID) != mDeadObjects.end()) { - llinfos << "Object " << objectp->mID << " already on dead list, ignoring cleanup!" << llendl; - return; + llinfos << "Object " << objectp->mID << " already on dead list!" << llendl; + } + else + { + mDeadObjects.insert(objectp->mID); } - - mDeadObjects.insert(std::pair >(objectp->mID, objectp)); // Cleanup any references we have to this object // Remove from object map so noone can look it up. diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h index 868e0ba8b..43d25229e 100644 --- a/indra/newview/llviewerobjectlist.h +++ b/indra/newview/llviewerobjectlist.h @@ -202,8 +202,7 @@ protected: vobj_list_t mMapObjects; - typedef std::map > vo_map; - vo_map mDeadObjects; // Need to keep multiple entries per UUID + std::set mDeadObjects; std::map > mUUIDObjectMap; std::map > mUUIDAvatarMap; diff --git a/indra/newview/shcommandhandler.cpp b/indra/newview/shcommandhandler.cpp index da2cc1aa1..a0c5eb9dd 100644 --- a/indra/newview/shcommandhandler.cpp +++ b/indra/newview/shcommandhandler.cpp @@ -175,4 +175,27 @@ CMD_SCRIPT(gettext) } } +#include "llphysicsmotion.h" + +void cmdline_printchat(std::string message); +CMD_CHAT(physparams) +{ + //args[1] = avatar name + for (std::vector::iterator iter = LLCharacter::sInstances.begin();iter != LLCharacter::sInstances.end(); ++iter) + { + LLVOAvatar* inst = (LLVOAvatar*) *iter; + if(!inst)continue; + if(inst->getFullname().find(args[1].asString())!=std::string::npos) + { + LLPhysicsMotionController *motion = (LLPhysicsMotionController*)(inst->findMotion(LLUUID("7360e029-3cb8-ebc4-863e-212df440d987"))); + cmdline_printchat(std::string("Phys param info for ")+inst->getFullname()+":\n"); + if(motion) + { + cmdline_printchat(motion->getString()); + } + else + cmdline_printchat("Unable to find physics motion controller\n"); + } + } +} #endif //shy_mod