diff options
| author | Roxie Linden <roxie@lindenlab.com> | 2010-12-23 01:48:44 -0800 |
|---|---|---|
| committer | Roxie Linden <roxie@lindenlab.com> | 2010-12-23 01:48:44 -0800 |
| commit | 57153cf0f1fffe669b9d8871c33f9c4aaba67a2f (patch) | |
| tree | 42e58fd10165bcd4bb7e65f5fbab7a16b518ddc3 /indra/llmath/llcamera.h | |
| parent | 4351160958efa1c352e8af1ab3f48c1486ba9c5c (diff) | |
SH-655 - Project mesh viewer crashes on exit.
A copy constructor was implemented which did a memcpy,
which included the vtable pointer which was to another object of another
class (same child though). This resulted in the wrong destructor
being called.
The reason for the memcpy was for alignment purposes.
The solution was to move to LLVector4a, which is intrinsicly aligned.
Also, did some performance optimizations based on the LLVector4a optimizations.
The solution was to re-implement the
Diffstat (limited to 'indra/llmath/llcamera.h')
| -rw-r--r-- | indra/llmath/llcamera.h | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/indra/llmath/llcamera.h b/indra/llmath/llcamera.h index e15bd7ad43..a346322e0e 100644 --- a/indra/llmath/llcamera.h +++ b/indra/llmath/llcamera.h @@ -79,8 +79,6 @@ public: { *this = rhs; } - - const LLCamera& operator=(const LLCamera& rhs); enum { PLANE_LEFT = 0, @@ -119,6 +117,9 @@ public: }; private: + LLPlane mAgentPlanes[7]; //frustum planes in agent space a la gluUnproject (I'm a bastard, I know) - DaveP + U8 mPlaneMask[8]; // 8 for alignment + F32 mView; // angle between top and bottom frustum planes in radians. F32 mAspect; // width/height S32 mViewHeightInPixels; // for ViewHeightInPixels() only @@ -132,10 +133,6 @@ private: LLPlane mWorldPlanes[PLANE_NUM]; LLPlane mHorizPlanes[HORIZ_PLANE_NUM]; - LLPlane* mAgentPlanes; //frustum planes in agent space a la gluUnproject (I'm a bastard, I know) - DaveP - U8 mAgentPlaneBuffer[sizeof(LLPlane)*8]; - U8 mPlaneMask[7]; - U32 mPlaneCount; //defaults to 6, if setUserClipPlane is called, uses user supplied clip plane in LLVector3 mWorldPlanePos; // Position of World Planes (may be offset from camera) @@ -149,11 +146,9 @@ public: LLCamera(F32 vertical_fov_rads, F32 aspect_ratio, S32 view_height_in_pixels, F32 near_plane, F32 far_plane); virtual ~LLCamera(); - void alignPlanes(); void setUserClipPlane(LLPlane plane); void disableUserClipPlane(); - U8 calcPlaneMask(const LLPlane& plane); virtual void setView(F32 vertical_fov_rads); void setViewHeightInPixels(S32 height); void setAspect(F32 new_aspect); |
