summaryrefslogtreecommitdiff
path: root/indra/newview/llface.inl
diff options
context:
space:
mode:
authorJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
committerJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
commit420b91db29485df39fd6e724e782c449158811cb (patch)
treeb471a94563af914d3ed3edd3e856d21cb1b69945 /indra/newview/llface.inl
Print done when done.
Diffstat (limited to 'indra/newview/llface.inl')
-rw-r--r--indra/newview/llface.inl222
1 files changed, 222 insertions, 0 deletions
diff --git a/indra/newview/llface.inl b/indra/newview/llface.inl
new file mode 100644
index 0000000000..08beef5fd8
--- /dev/null
+++ b/indra/newview/llface.inl
@@ -0,0 +1,222 @@
+/**
+ * @file llface.inl
+ * @brief Inline functions for LLFace
+ *
+ * Copyright (c) 2001-$CurrentYear$, Linden Research, Inc.
+ * $License$
+ */
+
+#ifndef LL_LLFACE_INL
+#define LL_LLFACE_INL
+
+#include "llglheaders.h"
+
+inline BOOL LLFace::getDirty() const
+{
+ return (mGeneration != mDrawPoolp->mGeneration);
+}
+
+inline void LLFace::clearDirty()
+{
+ mGeneration = mDrawPoolp->mGeneration;
+}
+
+inline const LLTextureEntry* LLFace::getTextureEntry() const
+{
+ return mVObjp->getTE(mTEOffset);
+}
+
+inline LLDrawPool* LLFace::getPool() const
+{
+ return mDrawPoolp;
+}
+
+inline S32 LLFace::getStride() const
+{
+ return mDrawPoolp->getStride();
+}
+
+inline LLDrawable* LLFace::getDrawable() const
+{
+ return mDrawablep;
+}
+
+inline LLViewerObject* LLFace::getViewerObject() const
+{
+ return mVObjp;
+}
+
+
+
+inline S32 LLFace::getVertices(LLStrider<LLVector3> &vertices)
+{
+ if (!mGeomCount)
+ {
+ return -1;
+ }
+ if (isState(BACKLIST))
+ {
+ if (!mBackupMem)
+ {
+ printDebugInfo();
+ llerrs << "No backup memory for face" << llendl;
+ }
+ vertices = (LLVector3*)(mBackupMem + (4 * mIndicesCount) + mDrawPoolp->mDataOffsets[LLDrawPool::DATA_VERTICES]);
+ vertices.setStride( mDrawPoolp->getStride());
+ return 0;
+ }
+ else
+ {
+ llassert(mGeomIndex >= 0);
+ mDrawPoolp->getVertexStrider(vertices, mGeomIndex);
+ mDrawPoolp->setDirty();
+ return mGeomIndex;
+ }
+}
+
+inline S32 LLFace::getNormals(LLStrider<LLVector3> &normals)
+{
+ if (!mGeomCount)
+ {
+ return -1;
+ }
+ if (isState(BACKLIST))
+ {
+ if (!mBackupMem)
+ {
+ printDebugInfo();
+ llerrs << "No backup memory for face" << llendl;
+ }
+ normals = (LLVector3*)(mBackupMem + (4 * mIndicesCount) + mDrawPoolp->mDataOffsets[LLDrawPool::DATA_NORMALS]);
+ normals.setStride( mDrawPoolp->getStride());
+ return 0;
+ }
+ else
+ {
+ llassert(mGeomIndex >= 0);
+ mDrawPoolp->getNormalStrider(normals, mGeomIndex);
+ mDrawPoolp->setDirty();
+ return mGeomIndex;
+ }
+}
+
+inline S32 LLFace::getBinormals(LLStrider<LLVector3> &binormals)
+{
+ if (!mGeomCount)
+ {
+ return -1;
+ }
+ if (isState(BACKLIST))
+ {
+ if (!mBackupMem)
+ {
+ printDebugInfo();
+ llerrs << "No backup memory for face" << llendl;
+ }
+ binormals = (LLVector3*)(mBackupMem + (4 * mIndicesCount) + mDrawPoolp->mDataOffsets[LLDrawPool::DATA_BINORMALS]);
+ binormals.setStride( mDrawPoolp->getStride());
+ return 0;
+ }
+ else
+ {
+ llassert(mGeomIndex >= 0);
+ mDrawPoolp->getBinormalStrider(binormals, mGeomIndex);
+ mDrawPoolp->setDirty();
+ return mGeomIndex;
+ }
+}
+
+
+inline S32 LLFace::getColors (LLStrider<LLColor4U> &colors)
+{
+ if (!mGeomCount)
+ {
+ return -1;
+ }
+ LLColor4U *colorp = NULL;
+ if (isState(BACKLIST))
+ {
+ if (!mBackupMem)
+ {
+ printDebugInfo();
+ llerrs << "No backup memory for face" << llendl;
+ }
+ colorp = (LLColor4U*)(mBackupMem + (4 * mIndicesCount) + (mGeomCount * mDrawPoolp->getStride()));
+ colors = colorp;
+ return 0;
+ }
+ else
+ {
+ llassert(mGeomIndex >= 0);
+ if (!mDrawPoolp->getColorStrider(colors, mGeomIndex))
+ {
+ printDebugInfo();
+ llerrs << "No color pointer for a color strider!" << llendl;
+ }
+ mDrawPoolp->setDirtyColors();
+ return mGeomIndex;
+ }
+}
+
+inline S32 LLFace::getTexCoords (LLStrider<LLVector2> &texCoords, S32 pass )
+{
+ if (!mGeomCount)
+ {
+ return -1;
+ }
+ if (isState(BACKLIST))
+ {
+ if (!mBackupMem)
+ {
+ printDebugInfo();
+ llerrs << "No backup memory for face" << llendl;
+ }
+ texCoords = (LLVector2*)(mBackupMem + (4 * mIndicesCount) + mDrawPoolp->mDataOffsets[LLDrawPool::DATA_TEX_COORDS0 + pass]);
+ texCoords.setStride( mDrawPoolp->getStride());
+ return 0;
+ }
+ else
+ {
+ llassert(mGeomIndex >= 0);
+ mDrawPoolp->getTexCoordStrider(texCoords, mGeomIndex, pass );
+ mDrawPoolp->setDirty();
+ return mGeomIndex;
+ }
+}
+
+inline S32 LLFace::getIndices (U32* &indicesp)
+{
+ if (isState(BACKLIST))
+ {
+ indicesp = (U32*)mBackupMem;
+ return 0;
+ }
+ else
+ {
+ indicesp = mDrawPoolp->getIndices(mIndicesIndex);
+ llassert(mGeomIndex >= 0);
+ return mGeomIndex;
+ }
+}
+
+inline const U32* LLFace::getRawIndices() const
+{
+ llassert(!isState(BACKLIST));
+
+ return &mDrawPoolp->mIndices[mIndicesIndex];
+}
+
+
+inline void LLFace::bindTexture(S32 stage) const
+{
+ if (mTexture)
+ {
+ mTexture->bindTexture(stage);
+ }
+ else
+ {
+ LLImageGL::unbindTexture(stage, GL_TEXTURE_2D);
+ }
+}
+
+#endif