diff options
Diffstat (limited to 'indra/newview')
30 files changed, 168 insertions, 86 deletions
diff --git a/indra/newview/app_settings/keywords.ini b/indra/newview/app_settings/keywords.ini index 961e86c6cb..9a8b1f7537 100644 --- a/indra/newview/app_settings/keywords.ini +++ b/indra/newview/app_settings/keywords.ini @@ -339,7 +339,7 @@ PRIM_FLEXIBLE Sets primitive flexibility to TRUE or FALSE PRIM_POINT_LIGHT Sets light emission to TRUE or FALSE PRIM_TEMP_ON_REZ Sets temporay on rez to TRUE or FALSE PRIM_PHANTOM Sets phantom to TRUE or FALSE -PRIM_CAST_SHADOWS Enables or disables shadow casting for the primitive +PRIM_CAST_SHADOWS DEPRECATED. Takes 1 parameter, an integer, but has no effect when set and always returns 0 if used in llGetPrimitiveParams. PRIM_POSITION Sets primitive position to a vector position PRIM_SIZE Sets primitive size to a vector size PRIM_ROTATION Sets primitive rotation diff --git a/indra/newview/linux_tools/handle_secondlifeprotocol.sh b/indra/newview/linux_tools/handle_secondlifeprotocol.sh index 7ff86d1b93..7ff86d1b93 100755..100644 --- a/indra/newview/linux_tools/handle_secondlifeprotocol.sh +++ b/indra/newview/linux_tools/handle_secondlifeprotocol.sh diff --git a/indra/newview/linux_tools/register_secondlifeprotocol.sh b/indra/newview/linux_tools/register_secondlifeprotocol.sh index 4ab96f97d6..4ab96f97d6 100755..100644 --- a/indra/newview/linux_tools/register_secondlifeprotocol.sh +++ b/indra/newview/linux_tools/register_secondlifeprotocol.sh diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index d00dfef478..2f5589a966 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -92,7 +92,7 @@ #include "llquantize.h" #include "llselectmgr.h" #include "llsky.h" -#include "llsphere.h" +#include "llrendersphere.h" #include "llstatusbar.h" #include "llimview.h" #include "lltool.h" @@ -1907,7 +1907,7 @@ void LLAgent::cameraOrbitIn(const F32 meters) if( CAMERA_MODE_CUSTOMIZE_AVATAR == getCameraMode() ) { - llclamp( new_distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM ); + new_distance = llclamp( new_distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM ); } // Compute new camera offset @@ -6891,7 +6891,7 @@ void LLAgent::sendAgentSetAppearance() msg->addUUIDFast(_PREHASH_AgentID, getID()); msg->addUUIDFast(_PREHASH_SessionID, getSessionID()); - // correct for the collisiton tolerance (to make it look like the + // correct for the collision tolerance (to make it look like the // agent is actually walking on the ground/object) // NOTE -- when we start correcting all of the other Havok geometry // to compensate for the COLLISION_TOLERANCE ugliness we will have diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index 50830a75f0..1a7d239288 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -181,7 +181,7 @@ public: void updateCamera(); // call once per frame to update camera location/orientation void resetCamera(); // slam camera into its default position void setupSitCamera(); - void setCameraCollidePlane(LLVector4 &plane) { mCameraCollidePlane = plane; } + void setCameraCollidePlane(const LLVector4 &plane) { mCameraCollidePlane = plane; } void changeCameraToDefault(); void changeCameraToMouselook(BOOL animate = TRUE); @@ -428,7 +428,7 @@ public: U32 getControlFlags(); void setControlFlags(U32 mask); // performs bitwise mControlFlags |= mask - void clearControlFlags(U32 mask); // performs bitwise mControlFlags &= mask + void clearControlFlags(U32 mask); // performs bitwise mControlFlags &= ~mask BOOL controlFlagsDirty() const; void enableControlFlagReset(); void resetControlFlags(); diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 502160716e..fc092e5cba 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -32,6 +32,7 @@ #include "llviewerprecompiledheaders.h" #include "llappviewer.h" +#include "llprimitive.h" #include "llversionviewer.h" #include "llfeaturemanager.h" @@ -1207,10 +1208,12 @@ bool LLAppViewer::cleanup() gLcdScreen = NULL; #endif - if (!gVolumeMgr->cleanup()) + LLVolumeMgr* volume_manager = LLPrimitive::getVolumeManager(); + if (!volume_manager->cleanup()) { llwarns << "Remaining references in the volume manager!" << llendflush; } + LLPrimitive::cleanupVolumeManager(); LLViewerParcelMgr::cleanupGlobals(); @@ -1219,7 +1222,8 @@ bool LLAppViewer::cleanup() //end_messaging_system(); LLFollowCamMgr::cleanupClass(); - LLVolumeMgr::cleanupClass(); + //LLVolumeMgr::cleanupClass(); + LLPrimitive::cleanupVolumeManager(); LLWorldMapView::cleanupClass(); LLUI::cleanupClass(); @@ -1766,7 +1770,10 @@ bool LLAppViewer::initConfiguration() LLSplashScreen::show(); LLSplashScreen::update(splash_msg.str().c_str()); - LLVolumeMgr::initClass(); + //LLVolumeMgr::initClass(); + LLVolumeMgr* volume_manager = new LLVolumeMgr(); + volume_manager->useMutex(); // LLApp and LLMutex magic must be manually enabled + LLPrimitive::setVolumeManager(volume_manager); // Note: this is where we used to initialize LLFeatureManager::getInstance()->. diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp index b700faeccc..c18dc069a4 100644 --- a/indra/newview/llflexibleobject.cpp +++ b/indra/newview/llflexibleobject.cpp @@ -36,7 +36,7 @@ #include "llface.h" #include "llflexibleobject.h" #include "llglheaders.h" -#include "llsphere.h" +#include "llrendersphere.h" #include "llviewerobject.h" #include "llimagegl.h" #include "llagent.h" diff --git a/indra/newview/llglsandbox.cpp b/indra/newview/llglsandbox.cpp index a29136214c..493b69f99e 100644 --- a/indra/newview/llglsandbox.cpp +++ b/indra/newview/llglsandbox.cpp @@ -53,7 +53,7 @@ #include "lltoolmgr.h" #include "llselectmgr.h" #include "llhudmanager.h" -#include "llsphere.h" +#include "llrendersphere.h" #include "llviewerobjectlist.h" #include "lltoolselectrect.h" #include "llviewerwindow.h" diff --git a/indra/newview/llhudeffect.cpp b/indra/newview/llhudeffect.cpp index 1385141bd0..83fdb66fe5 100644 --- a/indra/newview/llhudeffect.cpp +++ b/indra/newview/llhudeffect.cpp @@ -36,7 +36,7 @@ #include "message.h" #include "llgl.h" #include "llagent.h" -#include "llsphere.h" +#include "llrendersphere.h" #include "llimagegl.h" #include "llviewerobjectlist.h" diff --git a/indra/newview/llhudeffectbeam.cpp b/indra/newview/llhudeffectbeam.cpp index 613a234ba5..9fae0e3387 100644 --- a/indra/newview/llhudeffectbeam.cpp +++ b/indra/newview/llhudeffectbeam.cpp @@ -43,7 +43,7 @@ #include "llglheaders.h" #include "llhudrender.h" #include "llimagegl.h" -#include "llsphere.h" +#include "llrendersphere.h" #include "llviewercamera.h" #include "llvoavatar.h" #include "llviewercontrol.h" diff --git a/indra/newview/llhudeffectlookat.cpp b/indra/newview/llhudeffectlookat.cpp index 920a1caaf3..613f310b08 100644 --- a/indra/newview/llhudeffectlookat.cpp +++ b/indra/newview/llhudeffectlookat.cpp @@ -40,7 +40,7 @@ #include "llvoavatar.h" #include "lldrawable.h" #include "llviewerobjectlist.h" -#include "llsphere.h" +#include "llrendersphere.h" #include "llselectmgr.h" #include "llglheaders.h" diff --git a/indra/newview/llmanipscale.cpp b/indra/newview/llmanipscale.cpp index cd9cd83968..a2d6909b28 100644 --- a/indra/newview/llmanipscale.cpp +++ b/indra/newview/llmanipscale.cpp @@ -962,8 +962,8 @@ void LLManipScale::dragCorner( S32 x, S32 y ) mInSnapRegime = FALSE; } - F32 max_scale_factor = MAX_OBJECT_SCALE / MIN_OBJECT_SCALE; - F32 min_scale_factor = MIN_OBJECT_SCALE / MAX_OBJECT_SCALE; + F32 max_scale_factor = DEFAULT_MAX_PRIM_SCALE / MIN_PRIM_SCALE; + F32 min_scale_factor = MIN_PRIM_SCALE / DEFAULT_MAX_PRIM_SCALE; // find max and min scale factors that will make biggest object hit max absolute scale and smallest object hit min absolute scale for (LLObjectSelection::iterator iter = mObjectSelection->begin(); @@ -975,10 +975,10 @@ void LLManipScale::dragCorner( S32 x, S32 y ) { const LLVector3& scale = selectNode->mSavedScale; - F32 cur_max_scale_factor = llmin( MAX_OBJECT_SCALE / scale.mV[VX], MAX_OBJECT_SCALE / scale.mV[VY], MAX_OBJECT_SCALE / scale.mV[VZ] ); + F32 cur_max_scale_factor = llmin( DEFAULT_MAX_PRIM_SCALE / scale.mV[VX], DEFAULT_MAX_PRIM_SCALE / scale.mV[VY], DEFAULT_MAX_PRIM_SCALE / scale.mV[VZ] ); max_scale_factor = llmin( max_scale_factor, cur_max_scale_factor ); - F32 cur_min_scale_factor = llmax( MIN_OBJECT_SCALE / scale.mV[VX], MIN_OBJECT_SCALE / scale.mV[VY], MIN_OBJECT_SCALE / scale.mV[VZ] ); + F32 cur_min_scale_factor = llmax( MIN_PRIM_SCALE / scale.mV[VX], MIN_PRIM_SCALE / scale.mV[VY], MIN_PRIM_SCALE / scale.mV[VZ] ); min_scale_factor = llmax( min_scale_factor, cur_min_scale_factor ); } } @@ -1270,7 +1270,7 @@ void LLManipScale::stretchFace( const LLVector3& drag_start_agent, const LLVecto F32 denom = axis * dir_local; F32 desired_delta_size = is_approx_zero(denom) ? 0.f : (delta_local_mag / denom); // in meters - F32 desired_scale = llclamp(selectNode->mSavedScale.mV[axis_index] + desired_delta_size, MIN_OBJECT_SCALE, MAX_OBJECT_SCALE); + F32 desired_scale = llclamp(selectNode->mSavedScale.mV[axis_index] + desired_delta_size, MIN_PRIM_SCALE, DEFAULT_MAX_PRIM_SCALE); // propagate scale constraint back to position offset desired_delta_size = desired_scale - selectNode->mSavedScale.mV[axis_index]; // propagate constraint back to position @@ -1968,7 +1968,7 @@ F32 LLManipScale::partToMaxScale( S32 part, const LLBBox &bbox ) const max_extent = bbox_extents.mV[i]; } } - max_scale_factor = bbox_extents.magVec() * MAX_OBJECT_SCALE / max_extent; + max_scale_factor = bbox_extents.magVec() * DEFAULT_MAX_PRIM_SCALE / max_extent; if (getUniform()) { @@ -1983,7 +1983,7 @@ F32 LLManipScale::partToMinScale( S32 part, const LLBBox &bbox ) const { LLVector3 bbox_extents = unitVectorToLocalBBoxExtent( partToUnitVector( part ), bbox ); bbox_extents.abs(); - F32 min_extent = MAX_OBJECT_SCALE; + F32 min_extent = DEFAULT_MAX_PRIM_SCALE; for (U32 i = VX; i <= VZ; i++) { if (bbox_extents.mV[i] > 0.f && bbox_extents.mV[i] < min_extent) @@ -1991,7 +1991,7 @@ F32 LLManipScale::partToMinScale( S32 part, const LLBBox &bbox ) const min_extent = bbox_extents.mV[i]; } } - F32 min_scale_factor = bbox_extents.magVec() * MIN_OBJECT_SCALE / min_extent; + F32 min_scale_factor = bbox_extents.magVec() * MIN_PRIM_SCALE / min_extent; if (getUniform()) { diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp index 9856b47830..c55f9f806a 100644 --- a/indra/newview/llmaniptranslate.cpp +++ b/indra/newview/llmaniptranslate.cpp @@ -53,7 +53,7 @@ #include "llhudrender.h" #include "llresmgr.h" #include "llselectmgr.h" -#include "llsphere.h" +#include "llrendersphere.h" #include "llstatusbar.h" #include "lltoolmgr.h" #include "llviewercamera.h" diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp index 83f72160e1..d6ac5908dc 100644 --- a/indra/newview/llpanelobject.cpp +++ b/indra/newview/llpanelobject.cpp @@ -1666,15 +1666,8 @@ void LLPanelObject::sendPosition() mObject->setPositionEdit(newpos); } LLSelectMgr::getInstance()->sendMultipleUpdate(UPD_POSITION); - //mRootObject->sendPositionUpdate(); LLSelectMgr::getInstance()->updateSelectionCenter(); - -// llinfos << "position sent" << llendl; - } - else - { -// llinfos << "position not changed" << llendl; } } else diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 331d13d85d..fb692d257b 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -3263,6 +3263,41 @@ void init_stat_view() stat_barp->mDisplayBar = FALSE; stat_barp->mDisplayMean = FALSE; + LLStatView *phys_details_viewp; + phys_details_viewp = new LLStatView("phys detail view", "Physics Details", "", rect); + sim_statviewp->addChildAtEnd(phys_details_viewp); + + stat_barp = phys_details_viewp->addStat("Pinned Objects", &(LLViewerStats::getInstance()->mPhysicsPinnedTasks)); + stat_barp->mPrecision = 0; + stat_barp->mMinBar = 0.f; + stat_barp->mMaxBar = 500.f; + stat_barp->mTickSpacing = 10.f; + stat_barp->mLabelSpacing = 40.f; + stat_barp->mPerSec = FALSE; + stat_barp->mDisplayBar = FALSE; + stat_barp->mDisplayMean = FALSE; + + stat_barp = phys_details_viewp->addStat("Low LOD Objects", &(LLViewerStats::getInstance()->mPhysicsLODTasks)); + stat_barp->mPrecision = 0; + stat_barp->mMinBar = 0.f; + stat_barp->mMaxBar = 500.f; + stat_barp->mTickSpacing = 10.f; + stat_barp->mLabelSpacing = 40.f; + stat_barp->mPerSec = FALSE; + stat_barp->mDisplayBar = FALSE; + stat_barp->mDisplayMean = FALSE; + + stat_barp = phys_details_viewp->addStat("Memory Allocated", &(LLViewerStats::getInstance()->mPhysicsMemoryAllocated)); + stat_barp->setUnitLabel(" MB"); + stat_barp->mPrecision = 0; + stat_barp->mMinBar = 0.f; + stat_barp->mMaxBar = 1024.f; + stat_barp->mTickSpacing = 128.f; + stat_barp->mLabelSpacing = 256.f; + stat_barp->mPerSec = FALSE; + stat_barp->mDisplayBar = FALSE; + stat_barp->mDisplayMean = FALSE; + stat_barp = sim_statviewp->addStat("Agent Updates/Sec", &(LLViewerStats::getInstance()->mSimAgentUPS)); stat_barp->mPrecision = 1; stat_barp->mMinBar = 0.f; @@ -3424,6 +3459,44 @@ void init_stat_view() stat_barp->mDisplayBar = FALSE; stat_barp->mDisplayMean = FALSE; + LLStatView *physics_time_viewp; + physics_time_viewp = new LLStatView("physics perf view", "Physics Details (ms)", "", rect); + sim_time_viewp->addChildAtEnd(physics_time_viewp); + { + stat_barp = physics_time_viewp->addStat("Physics Step", &(LLViewerStats::getInstance()->mSimSimPhysicsStepMsec)); + stat_barp->setUnitLabel("ms"); + stat_barp->mPrecision = 1; + stat_barp->mMinBar = 0.f; + stat_barp->mMaxBar = 40.f; + stat_barp->mTickSpacing = 10.f; + stat_barp->mLabelSpacing = 20.f; + stat_barp->mPerSec = FALSE; + stat_barp->mDisplayBar = FALSE; + stat_barp->mDisplayMean = FALSE; + + stat_barp = physics_time_viewp->addStat("Update Shapes", &(LLViewerStats::getInstance()->mSimSimPhysicsShapeUpdateMsec)); + stat_barp->setUnitLabel("ms"); + stat_barp->mPrecision = 1; + stat_barp->mMinBar = 0.f; + stat_barp->mMaxBar = 40.f; + stat_barp->mTickSpacing = 10.f; + stat_barp->mLabelSpacing = 20.f; + stat_barp->mPerSec = FALSE; + stat_barp->mDisplayBar = FALSE; + stat_barp->mDisplayMean = FALSE; + + stat_barp = physics_time_viewp->addStat("Other", &(LLViewerStats::getInstance()->mSimSimPhysicsOtherMsec)); + stat_barp->setUnitLabel("ms"); + stat_barp->mPrecision = 1; + stat_barp->mMinBar = 0.f; + stat_barp->mMaxBar = 40.f; + stat_barp->mTickSpacing = 10.f; + stat_barp->mLabelSpacing = 20.f; + stat_barp->mPerSec = FALSE; + stat_barp->mDisplayBar = FALSE; + stat_barp->mDisplayMean = FALSE; + } + stat_barp = sim_time_viewp->addStat("Sim Time (Other)", &(LLViewerStats::getInstance()->mSimSimOtherMsec)); stat_barp->setUnitLabel("ms"); stat_barp->mPrecision = 1; diff --git a/indra/newview/llviewercamera.cpp b/indra/newview/llviewercamera.cpp index 517a02b4ad..8657f59ccb 100644 --- a/indra/newview/llviewercamera.cpp +++ b/indra/newview/llviewercamera.cpp @@ -168,7 +168,7 @@ void LLViewerCamera::calcProjection(const F32 far_distance) const f = 1/tan(fov_y*0.5f); - mProjectionMatrix.zero(); + mProjectionMatrix.setZero(); mProjectionMatrix.mMatrix[0][0] = f/aspect; mProjectionMatrix.mMatrix[1][1] = f; mProjectionMatrix.mMatrix[2][2] = (z_far + z_near)/(z_near - z_far); diff --git a/indra/newview/llviewerjoint.cpp b/indra/newview/llviewerjoint.cpp index 04de6bed92..b1cad86a61 100644 --- a/indra/newview/llviewerjoint.cpp +++ b/indra/newview/llviewerjoint.cpp @@ -40,7 +40,7 @@ #include "llglimmediate.h" #include "llmath.h" #include "llglheaders.h" -#include "llsphere.h" +#include "llrendersphere.h" #include "llvoavatar.h" #include "pipeline.h" diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 4d7ef5e2fd..4234d4862c 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -1193,7 +1193,6 @@ void init_debug_ui_menu(LLMenuGL* menu) menu->append(new LLMenuItemCallGL( "Dump SelectMgr", &dump_select_mgr)); menu->append(new LLMenuItemCallGL( "Dump Inventory", &dump_inventory)); menu->append(new LLMenuItemCallGL( "Dump Focus Holder", &handle_dump_focus, NULL, NULL, 'F', MASK_ALT | MASK_CONTROL)); - menu->append(new LLMenuItemCallGL( "Dump VolumeMgr", &dump_volume_mgr, NULL, NULL)); menu->append(new LLMenuItemCallGL( "Print Selected Object Info", &print_object_info, NULL, NULL, 'P', MASK_CONTROL|MASK_SHIFT )); menu->append(new LLMenuItemCallGL( "Print Agent Info", &print_agent_nvpairs, NULL, NULL, 'P', MASK_SHIFT )); menu->append(new LLMenuItemCallGL( "Texture Memory Stats", &output_statistics, NULL, NULL, 'M', MASK_SHIFT | MASK_ALT | MASK_CONTROL)); @@ -5219,11 +5218,6 @@ void dump_select_mgr(void*) LLSelectMgr::getInstance()->dump(); } -void dump_volume_mgr(void*) -{ - gVolumeMgr->dump(); -} - void dump_inventory(void*) { gInventory.dumpInventory(); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 938034a009..439063e439 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -3490,6 +3490,24 @@ void process_sim_stats(LLMessageSystem *msg, void **user_data) case LL_SIM_STAT_TOTAL_UNACKED_BYTES: LLViewerStats::getInstance()->mSimTotalUnackedBytes.addValue(stat_value / 1024.f); break; + case LL_SIM_STAT_PHYSICS_PINNED_TASKS: + LLViewerStats::getInstance()->mPhysicsPinnedTasks.addValue(stat_value); + break; + case LL_SIM_STAT_PHYSICS_LOD_TASKS: + LLViewerStats::getInstance()->mPhysicsLODTasks.addValue(stat_value); + break; + case LL_SIM_STAT_SIMPHYSICSSTEPMS: + LLViewerStats::getInstance()->mSimSimPhysicsStepMsec.addValue(stat_value); + break; + case LL_SIM_STAT_SIMPHYSICSSHAPEMS: + LLViewerStats::getInstance()->mSimSimPhysicsShapeUpdateMsec.addValue(stat_value); + break; + case LL_SIM_STAT_SIMPHYSICSOTHERMS: + LLViewerStats::getInstance()->mSimSimPhysicsOtherMsec.addValue(stat_value); + break; + case LL_SIM_STAT_SIMPHYSICSMEMORY: + LLViewerStats::getInstance()->mPhysicsMemoryAllocated.addValue(stat_value); + break; default: // llwarns << "Unknown stat id" << stat_id << llendl; break; diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index d32eb6414c..30668172f1 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -67,7 +67,7 @@ #include "llfollowcam.h" #include "llnetmap.h" #include "llselectmgr.h" -#include "llsphere.h" +#include "llrendersphere.h" #include "lltooldraganddrop.h" #include "llviewercamera.h" #include "llviewerimagelist.h" @@ -202,7 +202,7 @@ LLViewerObject::LLViewerObject(const LLUUID &id, const LLPCode pcode, LLViewerRe { llassert(mRegionp); - LLPrimitive::init(pcode); + LLPrimitive::init_primitive(pcode); // CP: added 12/2/2005 - this was being initialised to 0, not the current frame time mLastInterpUpdateSecs = LLFrameTimer::getElapsedSeconds(); @@ -723,6 +723,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, LLVector3 new_vel; LLVector3 new_acc; LLVector3 new_angv; + LLVector3 old_angv = getAngularVelocity(); LLQuaternion new_rot; LLVector3 new_scale = getScale(); @@ -1857,7 +1858,8 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, } } - if (new_rot != mLastRot) + if (new_rot != mLastRot + || new_angv != old_angv) { mLastRot = new_rot; setChanged(ROTATED | SILHOUETTE); @@ -1974,7 +1976,7 @@ BOOL LLViewerObject::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) F32 dt_raw = (F32)(time - mLastInterpUpdateSecs); F32 dt = mTimeDilation * dt_raw; - if (!mUserSelected && !mJointInfo) + if (!mJointInfo) { applyAngularVelocity(dt); } @@ -2060,9 +2062,9 @@ BOOL LLViewerObject::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) else { // linear motion - // HAVOK_TIMESTEP is used below to correct for the fact that the velocity in object + // PHYSICS_TIMESTEP is used below to correct for the fact that the velocity in object // updates represents the average velocity of the last timestep, rather than the final velocity. - // the time dilation above should guarrantee that dt is never less than HAVOK_TIMESTEP, theoretically + // the time dilation above should guarantee that dt is never less than PHYSICS_TIMESTEP, theoretically // // There is a problem here if dt is negative. . . @@ -2074,7 +2076,7 @@ BOOL LLViewerObject::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) if (!(accel.isExactlyZero() && vel.isExactlyZero())) { - LLVector3 pos = (vel + (0.5f * (dt-HAVOK_TIMESTEP)) * accel) * dt; + LLVector3 pos = (vel + (0.5f * (dt-PHYSICS_TIMESTEP)) * accel) * dt; // region local setPositionRegion(pos + getPositionRegion()); @@ -3526,36 +3528,21 @@ void LLViewerObject::sendRotationUpdate() const gMessageSystem->sendReliable( regionp->getHost() ); } -// formerly send_object_position_global -void LLViewerObject::sendPositionUpdate() const -{ - gMessageSystem->newMessageFast(_PREHASH_ObjectPosition); - gMessageSystem->nextBlockFast(_PREHASH_AgentData); - gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); - gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - gMessageSystem->nextBlockFast(_PREHASH_ObjectData); - gMessageSystem->addU32Fast(_PREHASH_ObjectLocalID, mLocalID ); - gMessageSystem->addVector3Fast(_PREHASH_Position, getPositionRegion()); - LLViewerRegion* regionp = getRegion(); - gMessageSystem->sendReliable(regionp->getHost()); -} - - -//formerly send_object_scale -void LLViewerObject::sendScaleUpdate() -{ - gMessageSystem->newMessageFast(_PREHASH_ObjectScale); - gMessageSystem->nextBlockFast(_PREHASH_AgentData); - gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); - gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - gMessageSystem->nextBlockFast(_PREHASH_ObjectData); - gMessageSystem->addU32Fast(_PREHASH_ObjectLocalID, mLocalID ); - gMessageSystem->addVector3Fast(_PREHASH_Scale, (getScale())); - - LLViewerRegion *regionp = getRegion(); - gMessageSystem->sendReliable(regionp->getHost() ); -} - +/* Obsolete, we use MultipleObjectUpdate instead +//// formerly send_object_position_global +//void LLViewerObject::sendPositionUpdate() const +//{ +// gMessageSystem->newMessageFast(_PREHASH_ObjectPosition); +// gMessageSystem->nextBlockFast(_PREHASH_AgentData); +// gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); +// gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); +// gMessageSystem->nextBlockFast(_PREHASH_ObjectData); +// gMessageSystem->addU32Fast(_PREHASH_ObjectLocalID, mLocalID ); +// gMessageSystem->addVector3Fast(_PREHASH_Position, getPositionRegion()); +// LLViewerRegion* regionp = getRegion(); +// gMessageSystem->sendReliable(regionp->getHost()); +//} +*/ //formerly send_object_shape(LLViewerObject *object) void LLViewerObject::sendShapeUpdate() diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index 06cf2b2266..20616b32d6 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -268,7 +268,6 @@ public: void setPositionAgent(const LLVector3 &pos_agent, BOOL damped = FALSE); void setPositionParent(const LLVector3 &pos_parent, BOOL damped = FALSE); void setPositionAbsoluteGlobal( const LLVector3d &pos_global, BOOL damped = FALSE ); - void sendPositionUpdate() const; virtual const LLMatrix4& getWorldMatrix(LLXformMatrix* xform) const { return xform->getWorldMatrix(); } @@ -303,7 +302,6 @@ public: void sendTEUpdate() const; // Sends packed representation of all texture entry information virtual void setScale(const LLVector3 &scale, BOOL damped = FALSE); - void sendScaleUpdate(); void sendShapeUpdate(); diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp index 6cfef5b18f..ccf7a5d1d7 100644 --- a/indra/newview/llviewerpartsim.cpp +++ b/indra/newview/llviewerpartsim.cpp @@ -243,7 +243,7 @@ void LLViewerPartGroup::updateParticles(const F32 lastdt) S32 i; F32 dt; - LLVector3 gravity(0.f, 0.f, -9.8f); + LLVector3 gravity(0.f, 0.f, GRAVITY); LLViewerRegion *regionp = getRegion(); S32 end = (S32) mParticles.size(); diff --git a/indra/newview/llviewerstats.h b/indra/newview/llviewerstats.h index 819438832d..bd16e61149 100644 --- a/indra/newview/llviewerstats.h +++ b/indra/newview/llviewerstats.h @@ -69,6 +69,11 @@ public: LLStat mSimNetMsec; LLStat mSimSimOtherMsec; LLStat mSimSimPhysicsMsec; + + LLStat mSimSimPhysicsStepMsec; + LLStat mSimSimPhysicsShapeUpdateMsec; + LLStat mSimSimPhysicsOtherMsec; + LLStat mSimAgentMsec; LLStat mSimImagesMsec; LLStat mSimScriptMsec; @@ -86,6 +91,9 @@ public: LLStat mSimPendingLocalUploads; LLStat mSimTotalUnackedBytes; + LLStat mPhysicsPinnedTasks; + LLStat mPhysicsLODTasks; + LLStat mPhysicsMemoryAllocated; /* LLStat mSimCPUUsageStat; LLStat mSimMemTotalStat; diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 5c3128b8e0..697aea8582 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -131,7 +131,7 @@ #include "llresmgr.h" #include "llrootview.h" #include "llselectmgr.h" -#include "llsphere.h" +#include "llrendersphere.h" #include "llstartup.h" #include "llstatusbar.h" #include "llstatview.h" diff --git a/indra/newview/llvotextbubble.cpp b/indra/newview/llvotextbubble.cpp index 775b1ec61d..b48a5a989c 100644 --- a/indra/newview/llvotextbubble.cpp +++ b/indra/newview/llvotextbubble.cpp @@ -36,7 +36,7 @@ #include "imageids.h" #include "llviewercontrol.h" #include "llprimitive.h" -#include "llsphere.h" +#include "llrendersphere.h" #include "llagent.h" #include "llbox.h" diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index a1b3c32e01..2b8cf93b2d 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -83,8 +83,8 @@ LLVOVolume::LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *re mVolumeImpl(NULL) { mTexAnimMode = 0; - mRelativeXform.identity(); - mRelativeXformInvTrans.identity(); + mRelativeXform.setIdentity(); + mRelativeXformInvTrans.setIdentity(); mLOD = MIN_LOD; mTextureAnimp = NULL; @@ -326,7 +326,7 @@ void LLVOVolume::animateTextures() } LLMatrix4& tex_mat = *facep->mTextureMatrix; - tex_mat.identity(); + tex_mat.setIdentity(); tex_mat.translate(LLVector3(-0.5f, -0.5f, 0.f)); tex_mat.rotate(quat); diff --git a/indra/newview/llvowater.cpp b/indra/newview/llvowater.cpp index 8755a5ae4a..3cc834d323 100644 --- a/indra/newview/llvowater.cpp +++ b/indra/newview/llvowater.cpp @@ -67,7 +67,6 @@ const U32 N_RES_HALF = (N_RES >> 1); const U32 WIDTH = (N_RES * WAVE_STEP); //128.f //64 // width of wave tile, in meters const F32 WAVE_STEP_INV = (1. / WAVE_STEP); -const F32 g = 9.81f; // gravitational constant (m/s^2) LLVOWater::LLVOWater(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp) : LLStaticViewerObject(id, LL_VO_WATER, regionp) diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index 923b45fc5a..ca947bed97 100644 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp @@ -527,6 +527,11 @@ F32 LLWorld::resolveStepHeightGlobal(const LLVOAvatar* avatarp, const LLVector3d intersection.mdV[VZ] -= norm_dist_from_plane * segment_length; intersection_normal = foot_plane_normal; } + else + { + intersection = land_intersection; + intersection_normal = resolveLandNormalGlobal(land_intersection); + } } return normalized_land_distance; diff --git a/indra/newview/llworld.h b/indra/newview/llworld.h index cb6102268e..9dd90480b6 100644 --- a/indra/newview/llworld.h +++ b/indra/newview/llworld.h @@ -113,7 +113,7 @@ public: // region X and Y size in meters F32 getRegionWidthInMeters() const { return mWidthInMeters; } F32 getRegionMinHeight() const { return -mWidthInMeters; } - F32 getRegionMaxHeight() const { return 3.f*mWidthInMeters; } + F32 getRegionMaxHeight() const { return MAX_OBJECT_Z; } void updateRegions(F32 max_update_time); void updateVisibilities(); diff --git a/indra/newview/macview_Prefix.h b/indra/newview/macview_Prefix.h index ac19cd924e..b6dcc1d127 100644 --- a/indra/newview/macview_Prefix.h +++ b/indra/newview/macview_Prefix.h @@ -82,7 +82,7 @@ #include "llmoveview.h" #include "llselectmgr.h" #include "llsky.h" -#include "llsphere.h" +#include "llrendersphere.h" #include "llstatusbar.h" #include "lltalkview.h" #include "lltool.h" |