Updated 'Show Updates'
This commit is contained in:
@@ -520,7 +520,6 @@ set(viewer_SOURCE_FILES
|
|||||||
llvopartgroup.cpp
|
llvopartgroup.cpp
|
||||||
llvosky.cpp
|
llvosky.cpp
|
||||||
llvosurfacepatch.cpp
|
llvosurfacepatch.cpp
|
||||||
llvotextbubble.cpp
|
|
||||||
llvotree.cpp
|
llvotree.cpp
|
||||||
llvovolume.cpp
|
llvovolume.cpp
|
||||||
llvowater.cpp
|
llvowater.cpp
|
||||||
@@ -1018,7 +1017,6 @@ set(viewer_HEADER_FILES
|
|||||||
llvopartgroup.h
|
llvopartgroup.h
|
||||||
llvosky.h
|
llvosky.h
|
||||||
llvosurfacepatch.h
|
llvosurfacepatch.h
|
||||||
llvotextbubble.h
|
|
||||||
llvotree.h
|
llvotree.h
|
||||||
llvotreenew.h
|
llvotreenew.h
|
||||||
llvovolume.h
|
llvovolume.h
|
||||||
|
|||||||
@@ -138,7 +138,6 @@
|
|||||||
#include "llviewerwindow.h"
|
#include "llviewerwindow.h"
|
||||||
#include "llvlmanager.h"
|
#include "llvlmanager.h"
|
||||||
#include "llvoavatar.h"
|
#include "llvoavatar.h"
|
||||||
#include "llvotextbubble.h"
|
|
||||||
#include "llweb.h"
|
#include "llweb.h"
|
||||||
#include "llworld.h"
|
#include "llworld.h"
|
||||||
#include "pipeline.h"
|
#include "pipeline.h"
|
||||||
@@ -4763,15 +4762,8 @@ void process_kill_object(LLMessageSystem *mesgsys, void **user_data)
|
|||||||
// Display green bubble on kill
|
// Display green bubble on kill
|
||||||
if ( gShowObjectUpdates )
|
if ( gShowObjectUpdates )
|
||||||
{
|
{
|
||||||
LLViewerObject* newobject;
|
LLColor4 color(0.f,1.f,0.f,1.f);
|
||||||
newobject = gObjectList.createObjectViewer(LL_PCODE_LEGACY_TEXT_BUBBLE, objectp->getRegion());
|
gPipeline.addDebugBlip(objectp->getPositionAgent(), color);
|
||||||
|
|
||||||
LLVOTextBubble* bubble = (LLVOTextBubble*) newobject;
|
|
||||||
|
|
||||||
bubble->mColor.setVec(0.f, 1.f, 0.f, 1.f);
|
|
||||||
bubble->setScale( 2.0f * bubble->getScale() );
|
|
||||||
bubble->setPositionGlobal(objectp->getPositionGlobal());
|
|
||||||
gPipeline.addObject(bubble);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do the kill
|
// Do the kill
|
||||||
|
|||||||
@@ -88,7 +88,6 @@
|
|||||||
#include "llvopartgroup.h"
|
#include "llvopartgroup.h"
|
||||||
#include "llvosky.h"
|
#include "llvosky.h"
|
||||||
#include "llvosurfacepatch.h"
|
#include "llvosurfacepatch.h"
|
||||||
#include "llvotextbubble.h"
|
|
||||||
#include "llvotree.h"
|
#include "llvotree.h"
|
||||||
#include "llvovolume.h"
|
#include "llvovolume.h"
|
||||||
#include "llvowater.h"
|
#include "llvowater.h"
|
||||||
@@ -173,8 +172,6 @@ LLViewerObject *LLViewerObject::createObject(const LLUUID &id, const LLPCode pco
|
|||||||
// llwarns << "Creating new tree!" << llendl;
|
// llwarns << "Creating new tree!" << llendl;
|
||||||
// res = new LLVOTree(id, pcode, regionp); break;
|
// res = new LLVOTree(id, pcode, regionp); break;
|
||||||
res = NULL; break;
|
res = NULL; break;
|
||||||
case LL_PCODE_LEGACY_TEXT_BUBBLE:
|
|
||||||
res = new LLVOTextBubble(id, pcode, regionp); break;
|
|
||||||
#if ENABLE_CLASSIC_CLOUDS
|
#if ENABLE_CLASSIC_CLOUDS
|
||||||
case LL_VO_CLOUDS:
|
case LL_VO_CLOUDS:
|
||||||
res = new LLVOClouds(id, pcode, regionp); break;
|
res = new LLVOClouds(id, pcode, regionp); break;
|
||||||
@@ -2145,26 +2142,16 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
|
|||||||
|
|
||||||
if ( gShowObjectUpdates )
|
if ( gShowObjectUpdates )
|
||||||
{
|
{
|
||||||
// <edit> We want to see updates from our own avatar
|
LLColor4 color;
|
||||||
//if (!((mPrimitiveCode == LL_PCODE_LEGACY_AVATAR) && (((LLVOAvatar *) this)->mIsSelf))
|
if (update_type == OUT_TERSE_IMPROVED)
|
||||||
// && mRegionp)
|
|
||||||
if(mRegionp)
|
|
||||||
// </edit>
|
|
||||||
{
|
{
|
||||||
LLViewerObject* object = gObjectList.createObjectViewer(LL_PCODE_LEGACY_TEXT_BUBBLE, mRegionp);
|
color.setVec(0.f, 0.f, 1.f, 1.f);
|
||||||
LLVOTextBubble* bubble = (LLVOTextBubble*) object;
|
|
||||||
|
|
||||||
if (update_type == OUT_TERSE_IMPROVED)
|
|
||||||
{
|
|
||||||
bubble->mColor.setVec(0.f, 0.f, 1.f, 1.f);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
bubble->mColor.setVec(1.f, 0.f, 0.f, 1.f);
|
|
||||||
}
|
|
||||||
object->setPositionGlobal(getPositionGlobal());
|
|
||||||
gPipeline.addObject(object);
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
color.setVec(1.f, 0.f, 0.f, 1.f);
|
||||||
|
}
|
||||||
|
gPipeline.addDebugBlip(getPositionAgent(), color);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((0.0f == vel_mag_sq) &&
|
if ((0.0f == vel_mag_sq) &&
|
||||||
|
|||||||
@@ -1,268 +0,0 @@
|
|||||||
/**
|
|
||||||
* @file llvotextbubble.cpp
|
|
||||||
* @brief Viewer-object text bubble.
|
|
||||||
*
|
|
||||||
* $LicenseInfo:firstyear=2001&license=viewergpl$
|
|
||||||
*
|
|
||||||
* Copyright (c) 2001-2009, Linden Research, Inc.
|
|
||||||
*
|
|
||||||
* Second Life Viewer Source Code
|
|
||||||
* The source code in this file ("Source Code") is provided by Linden Lab
|
|
||||||
* 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
|
|
||||||
* it is applied to this Source Code. View the full text of the exception
|
|
||||||
* in the file doc/FLOSS-exception.txt in this software distribution, or
|
|
||||||
* online at
|
|
||||||
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
|
|
||||||
*
|
|
||||||
* By copying, modifying or distributing this software, you acknowledge
|
|
||||||
* that you have read and understood your obligations described above,
|
|
||||||
* and agree to abide by those obligations.
|
|
||||||
*
|
|
||||||
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
|
|
||||||
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
|
|
||||||
* COMPLETENESS OR PERFORMANCE.
|
|
||||||
* $/LicenseInfo$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "llviewerprecompiledheaders.h"
|
|
||||||
|
|
||||||
#include "llvotextbubble.h"
|
|
||||||
|
|
||||||
#include "imageids.h"
|
|
||||||
#include "llviewercontrol.h"
|
|
||||||
#include "llprimitive.h"
|
|
||||||
#include "llrendersphere.h"
|
|
||||||
|
|
||||||
#include "llagent.h"
|
|
||||||
#include "llbox.h"
|
|
||||||
#include "lldrawable.h"
|
|
||||||
#include "llface.h"
|
|
||||||
#include "llviewertexturelist.h"
|
|
||||||
#include "llvolume.h"
|
|
||||||
#include "pipeline.h"
|
|
||||||
#include "llvector4a.h"
|
|
||||||
#include "llviewerregion.h"
|
|
||||||
|
|
||||||
LLVOTextBubble::LLVOTextBubble(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp)
|
|
||||||
: LLAlphaObject(id, pcode, regionp)
|
|
||||||
{
|
|
||||||
setScale(LLVector3(1.5f, 1.5f, 0.25f));
|
|
||||||
mbCanSelect = FALSE;
|
|
||||||
mLOD = MIN_LOD;
|
|
||||||
mVolumeChanged = TRUE;
|
|
||||||
setVelocity(LLVector3(0.f, 0.f, 0.75f));
|
|
||||||
LLVolumeParams volume_params;
|
|
||||||
volume_params.setType(LL_PCODE_PROFILE_CIRCLE, LL_PCODE_PATH_LINE);
|
|
||||||
volume_params.setBeginAndEndS(0.f, 1.f);
|
|
||||||
volume_params.setBeginAndEndT(0.f, 1.f);
|
|
||||||
volume_params.setRatio(0.25f, 0.25f);
|
|
||||||
volume_params.setShear(0.f, 0.f);
|
|
||||||
setVolume(volume_params, 0);
|
|
||||||
mColor = LLColor4(1.0f, 0.0f, 0.0f, 1.f);
|
|
||||||
S32 i;
|
|
||||||
for (i = 0; i < getNumTEs(); i++)
|
|
||||||
{
|
|
||||||
setTEColor(i, mColor);
|
|
||||||
setTETexture(i, LLUUID(IMG_DEFAULT));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
LLVOTextBubble::~LLVOTextBubble()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
BOOL LLVOTextBubble::isActive() const
|
|
||||||
{
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL LLVOTextBubble::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
|
|
||||||
{
|
|
||||||
F32 dt = mUpdateTimer.getElapsedTimeF32();
|
|
||||||
// Die after a few seconds.
|
|
||||||
if (dt > 1.5f)
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
LLViewerObject::idleUpdate(agent, world, time);
|
|
||||||
|
|
||||||
setScale(0.5f * (1.f+dt) * LLVector3(1.5f, 1.5f, 0.5f));
|
|
||||||
|
|
||||||
F32 alpha = 0.35f*dt;
|
|
||||||
|
|
||||||
LLColor4 color = mColor;
|
|
||||||
color.mV[VALPHA] -= alpha;
|
|
||||||
if (color.mV[VALPHA] <= 0.05f)
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
S32 i;
|
|
||||||
for (i = 0; i < getNumTEs(); i++)
|
|
||||||
{
|
|
||||||
setTEColor(i, color);
|
|
||||||
setTEFullbright(i, TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, TRUE);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void LLVOTextBubble::updateTextures()
|
|
||||||
{
|
|
||||||
// Update the image levels of all textures...
|
|
||||||
|
|
||||||
for (U32 i = 0; i < getNumTEs(); i++)
|
|
||||||
{
|
|
||||||
const LLTextureEntry *te = getTE(i);
|
|
||||||
F32 texel_area_ratio = fabs(te->mScaleS * te->mScaleT);
|
|
||||||
texel_area_ratio = llclamp(texel_area_ratio, .125f, 16.f);
|
|
||||||
LLViewerTexture *imagep = getTEImage(i);
|
|
||||||
if (imagep)
|
|
||||||
{
|
|
||||||
imagep->addTextureStats(mPixelArea / texel_area_ratio);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
LLDrawable *LLVOTextBubble::createDrawable(LLPipeline *pipeline)
|
|
||||||
{
|
|
||||||
pipeline->allocDrawable(this);
|
|
||||||
mDrawable->setLit(FALSE);
|
|
||||||
mDrawable->setRenderType(LLPipeline::RENDER_TYPE_VOLUME);
|
|
||||||
|
|
||||||
for (U32 i = 0; i < getNumTEs(); i++)
|
|
||||||
{
|
|
||||||
LLViewerTexture *imagep;
|
|
||||||
const LLTextureEntry *texture_entry = getTE(i);
|
|
||||||
imagep = LLViewerTextureManager::getFetchedTexture(texture_entry->getID());
|
|
||||||
|
|
||||||
mDrawable->addFace((LLFacePool*) NULL, imagep);
|
|
||||||
}
|
|
||||||
|
|
||||||
return mDrawable;
|
|
||||||
}
|
|
||||||
|
|
||||||
// virtual
|
|
||||||
BOOL LLVOTextBubble::setVolume(const LLVolumeParams &volume_params, const S32 detail, bool unique_volume)
|
|
||||||
{
|
|
||||||
if (LLPrimitive::setVolume(volume_params, mLOD))
|
|
||||||
{
|
|
||||||
if (mDrawable)
|
|
||||||
{
|
|
||||||
gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, TRUE);
|
|
||||||
mVolumeChanged = TRUE;
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
BOOL LLVOTextBubble::updateLOD()
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL LLVOTextBubble::updateGeometry(LLDrawable *drawable)
|
|
||||||
{
|
|
||||||
if (!(gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_VOLUME)))
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
if (mVolumeChanged)
|
|
||||||
{
|
|
||||||
LLVolumeParams volume_params = getVolume()->getParams();
|
|
||||||
setVolume(volume_params, 0);
|
|
||||||
|
|
||||||
LLPipeline::sCompiles++;
|
|
||||||
|
|
||||||
drawable->setNumFaces(getVolume()->getNumFaces(), drawable->getFace(0)->getPool(), getTEImage(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
LLMatrix4 identity4;
|
|
||||||
LLMatrix3 identity3;
|
|
||||||
for (S32 i = 0; i < drawable->getNumFaces(); i++)
|
|
||||||
{
|
|
||||||
LLFace *face = drawable->getFace(i);
|
|
||||||
face->setTEOffset(i);
|
|
||||||
face->setTexture(LLViewerFetchedTexture::sSmokeImagep);
|
|
||||||
face->setState(LLFace::FULLBRIGHT);
|
|
||||||
}
|
|
||||||
|
|
||||||
mVolumeChanged = FALSE;
|
|
||||||
|
|
||||||
mDrawable->movePartition();
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void LLVOTextBubble::updateFaceSize(S32 idx)
|
|
||||||
{
|
|
||||||
LLFace* face = mDrawable->getFace(idx);
|
|
||||||
|
|
||||||
if (idx == 0 || idx == 2)
|
|
||||||
{
|
|
||||||
face->setSize(0,0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
const LLVolumeFace& vol_face = getVolume()->getVolumeFace(idx);
|
|
||||||
face->setSize(vol_face.mNumVertices, vol_face.mNumIndices);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void LLVOTextBubble::getGeometry(S32 idx,
|
|
||||||
LLStrider<LLVector4a>& verticesp,
|
|
||||||
LLStrider<LLVector3>& normalsp,
|
|
||||||
LLStrider<LLVector2>& texcoordsp,
|
|
||||||
LLStrider<LLColor4U>& colorsp,
|
|
||||||
LLStrider<U16>& indicesp)
|
|
||||||
{
|
|
||||||
if (idx == 0 || idx == 2)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const LLVolumeFace& face = getVolume()->getVolumeFace(idx);
|
|
||||||
|
|
||||||
LLVector4a pos;
|
|
||||||
pos.load3(getPositionAgent().mV);
|
|
||||||
|
|
||||||
LLVector4a scale;
|
|
||||||
scale.load3(getScale().mV);
|
|
||||||
|
|
||||||
LLColor4U color = LLColor4U(getTE(idx)->getColor());
|
|
||||||
U32 offset = mDrawable->getFace(idx)->getGeomIndex();
|
|
||||||
|
|
||||||
LLVector4a::memcpyNonAliased16((F32*) normalsp.get(), (F32*) face.mNormals, face.mNumVertices*4*sizeof(F32));
|
|
||||||
//normalsp.assignArray((U8*)face.mNormals, sizeof(face.mNormals[0]), face.mNumVertices);
|
|
||||||
LLVector4a::memcpyNonAliased16((F32*) texcoordsp.get(), (F32*) face.mTexCoords, face.mNumVertices*2*sizeof(F32));
|
|
||||||
//texcoordsp.assignArray((U8*)face.mTexCoords, sizeof(face.mTexCoords[0]), face.mNumVertices);
|
|
||||||
|
|
||||||
|
|
||||||
for (U32 i = 0; i < (U32)face.mNumVertices; i++)
|
|
||||||
{
|
|
||||||
(verticesp++)->setMul(face.mPositions[i],scale);
|
|
||||||
verticesp->add(pos);
|
|
||||||
*colorsp++ = color;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (U32 i = 0; i < (U32)face.mNumIndices; i++)
|
|
||||||
{
|
|
||||||
*indicesp++ = face.mIndices[i] + offset;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
U32 LLVOTextBubble::getPartitionType() const
|
|
||||||
{
|
|
||||||
return LLViewerRegion::PARTITION_PARTICLE;
|
|
||||||
}
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
/**
|
|
||||||
* @file llvotextbubble.h
|
|
||||||
* @brief Description of LLVORock class, which a derivation of LLViewerObject
|
|
||||||
*
|
|
||||||
* $LicenseInfo:firstyear=2001&license=viewergpl$
|
|
||||||
*
|
|
||||||
* Copyright (c) 2001-2009, Linden Research, Inc.
|
|
||||||
*
|
|
||||||
* Second Life Viewer Source Code
|
|
||||||
* The source code in this file ("Source Code") is provided by Linden Lab
|
|
||||||
* 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
|
|
||||||
* it is applied to this Source Code. View the full text of the exception
|
|
||||||
* in the file doc/FLOSS-exception.txt in this software distribution, or
|
|
||||||
* online at
|
|
||||||
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
|
|
||||||
*
|
|
||||||
* By copying, modifying or distributing this software, you acknowledge
|
|
||||||
* that you have read and understood your obligations described above,
|
|
||||||
* and agree to abide by those obligations.
|
|
||||||
*
|
|
||||||
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
|
|
||||||
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
|
|
||||||
* COMPLETENESS OR PERFORMANCE.
|
|
||||||
* $/LicenseInfo$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef LL_LLVOTEXTBUBBLE_H
|
|
||||||
#define LL_LLVOTEXTBUBBLE_H
|
|
||||||
|
|
||||||
#include "llviewerobject.h"
|
|
||||||
#include "llframetimer.h"
|
|
||||||
|
|
||||||
class LLVOTextBubble : public LLAlphaObject
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
LLVOTextBubble(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp);
|
|
||||||
|
|
||||||
/*virtual*/ BOOL isActive() const; // Whether this object needs to do an idleUpdate.
|
|
||||||
/*virtual*/ BOOL idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time);
|
|
||||||
|
|
||||||
/*virtual*/ void updateTextures();
|
|
||||||
/*virtual*/ LLDrawable* createDrawable(LLPipeline *pipeline);
|
|
||||||
/*virtual*/ BOOL updateGeometry(LLDrawable *drawable);
|
|
||||||
/*virtual*/ BOOL updateLOD();
|
|
||||||
/*virtual*/ void updateFaceSize(S32 idx);
|
|
||||||
|
|
||||||
/*virtual*/ void getGeometry(S32 idx,
|
|
||||||
LLStrider<LLVector4a>& verticesp,
|
|
||||||
LLStrider<LLVector3>& normalsp,
|
|
||||||
LLStrider<LLVector2>& texcoordsp,
|
|
||||||
LLStrider<LLColor4U>& colorsp,
|
|
||||||
LLStrider<U16>& indicesp);
|
|
||||||
|
|
||||||
virtual U32 getPartitionType() const;
|
|
||||||
|
|
||||||
LLColor4 mColor;
|
|
||||||
S32 mLOD;
|
|
||||||
BOOL mVolumeChanged;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
~LLVOTextBubble();
|
|
||||||
BOOL setVolume(const LLVolumeParams &volume_params, const S32 detail, bool unique_volume = false);
|
|
||||||
LLFrameTimer mUpdateTimer;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // LL_VO_TEXT_BUBBLE
|
|
||||||
@@ -4206,9 +4206,6 @@ void LLPipeline::renderDebug()
|
|||||||
{
|
{
|
||||||
LLMemType mt(LLMemType::MTYPE_PIPELINE);
|
LLMemType mt(LLMemType::MTYPE_PIPELINE);
|
||||||
|
|
||||||
if(!mRenderDebugMask)
|
|
||||||
return;
|
|
||||||
|
|
||||||
assertInitialized();
|
assertInitialized();
|
||||||
|
|
||||||
gGL.color4f(1,1,1,1);
|
gGL.color4f(1,1,1,1);
|
||||||
@@ -4219,6 +4216,46 @@ void LLPipeline::renderDebug()
|
|||||||
|
|
||||||
bool hud_only = hasRenderType(LLPipeline::RENDER_TYPE_HUD);
|
bool hud_only = hasRenderType(LLPipeline::RENDER_TYPE_HUD);
|
||||||
|
|
||||||
|
if (!hud_only && !mDebugBlips.empty())
|
||||||
|
{ //render debug blips
|
||||||
|
if (LLGLSLShader::sNoFixedFunction)
|
||||||
|
{
|
||||||
|
gUIProgram.bind();
|
||||||
|
}
|
||||||
|
|
||||||
|
gGL.getTexUnit(0)->bind(LLViewerFetchedTexture::sWhiteImagep, true);
|
||||||
|
|
||||||
|
glPointSize(8.f);
|
||||||
|
LLGLDepthTest depth(GL_TRUE, GL_TRUE, GL_ALWAYS);
|
||||||
|
|
||||||
|
gGL.begin(LLRender::POINTS);
|
||||||
|
for (std::list<DebugBlip>::iterator iter = mDebugBlips.begin(); iter != mDebugBlips.end(); )
|
||||||
|
{
|
||||||
|
DebugBlip& blip = *iter;
|
||||||
|
|
||||||
|
blip.mAge += gFrameIntervalSeconds;
|
||||||
|
if (blip.mAge > 2.f)
|
||||||
|
{
|
||||||
|
mDebugBlips.erase(iter++);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
iter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
blip.mPosition.mV[2] += gFrameIntervalSeconds*2.f;
|
||||||
|
|
||||||
|
gGL.color4fv(blip.mColor.mV);
|
||||||
|
gGL.vertex3fv(blip.mPosition.mV);
|
||||||
|
}
|
||||||
|
gGL.end();
|
||||||
|
gGL.flush();
|
||||||
|
glPointSize(1.f);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!mRenderDebugMask)
|
||||||
|
return;
|
||||||
|
|
||||||
// Debug stuff.
|
// Debug stuff.
|
||||||
for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin();
|
for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin();
|
||||||
iter != LLWorld::getInstance()->getRegionList().end(); ++iter)
|
iter != LLWorld::getInstance()->getRegionList().end(); ++iter)
|
||||||
@@ -9733,3 +9770,9 @@ void LLPipeline::clearRenderTypeMask(U32 type, ...)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LLPipeline::addDebugBlip(const LLVector3& position, const LLColor4& color)
|
||||||
|
{
|
||||||
|
DebugBlip blip(position, color);
|
||||||
|
mDebugBlips.push_back(blip);
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -366,6 +366,8 @@ public:
|
|||||||
|
|
||||||
static void throttleNewMemoryAllocation(BOOL disable);
|
static void throttleNewMemoryAllocation(BOOL disable);
|
||||||
|
|
||||||
|
void addDebugBlip(const LLVector3& position, const LLColor4& color);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void unloadShaders();
|
void unloadShaders();
|
||||||
void addToQuickLookup( LLDrawPool* new_poolp );
|
void addToQuickLookup( LLDrawPool* new_poolp );
|
||||||
@@ -719,6 +721,20 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
std::vector<LLFace*> mSelectedFaces;
|
std::vector<LLFace*> mSelectedFaces;
|
||||||
|
|
||||||
|
class DebugBlip
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LLColor4 mColor;
|
||||||
|
LLVector3 mPosition;
|
||||||
|
F32 mAge;
|
||||||
|
|
||||||
|
DebugBlip(const LLVector3& position, const LLColor4& color)
|
||||||
|
: mColor(color), mPosition(position), mAge(0.f)
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
|
std::list<DebugBlip> mDebugBlips;
|
||||||
|
|
||||||
LLPointer<LLViewerFetchedTexture> mFaceSelectImagep;
|
LLPointer<LLViewerFetchedTexture> mFaceSelectImagep;
|
||||||
|
|
||||||
U32 mLightMask;
|
U32 mLightMask;
|
||||||
|
|||||||
Reference in New Issue
Block a user