summaryrefslogtreecommitdiff
path: root/engine/dispnode.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /engine/dispnode.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'engine/dispnode.h')
-rw-r--r--engine/dispnode.h195
1 files changed, 195 insertions, 0 deletions
diff --git a/engine/dispnode.h b/engine/dispnode.h
new file mode 100644
index 0000000..3a14a25
--- /dev/null
+++ b/engine/dispnode.h
@@ -0,0 +1,195 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef DISPNODE_H
+#define DISPNODE_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+//=========== (C) Copyright 2000 Valve, L.L.C. All rights reserved. ===========
+//
+// The copyright to the contents herein is the property of Valve, L.L.C.
+// The contents may be used and/or copied only with the written permission of
+// Valve, L.L.C., or in accordance with the terms and conditions stipulated in
+// the agreement/contract under which the contents have been supplied.
+//
+// $Revision: $
+// $NoKeywords: $
+//=============================================================================
+
+
+//=============================================================================
+//
+// Displacement Node Class
+//
+// "Neighbor Nodes" "Node Vert Indices"
+// 1 6----1----7
+// | | \ | / |
+// 0 --+-- 2 | \|/ | "Corner {SW, SE, NW, NE} : {4, 5, 6, 7}"
+// | 0 -Orig-- 2
+// 3 | /|\ | "Edge {W, N, E, S} : {0, 1, 2, 3}"
+// | / | \ |
+// 4----3----5
+//
+
+class CDispNode
+{
+public:
+
+ enum{ W = 0, N, E, S, SW, SE, NW, NE };
+
+ //=========================================================================
+ //
+ // Construction/Decontruction
+ //
+ CDispNode() {};
+ ~CDispNode() {};
+
+ //=========================================================================
+ //
+ //
+ //
+ inline void SetBoundingBox( const Vector& bbMin, const Vector& bbMax );
+ inline void GetBoundingBox( Vector& bbMin, Vector& bbMax );
+ inline void SetErrorTerm( float error );
+ inline float GetErrorTerm( void );
+ inline void SetNeighborNodeIndex( int direction, int nodeIndex );
+ inline int GetNeighborNodeIndex( int direction );
+ inline void SetOrigVertexIndex( int vertIndex );
+ inline int GetOrigVertexIndex( void );
+ inline void SetVertexIndex( int direction, int vertIndex );
+ inline int GetVertexIndex( int direction );
+ inline void SetTouched( bool bTouched );
+ inline bool IsTouched( void );
+ inline void SetActivity( bool bActive );
+ inline bool IsActive( void );
+
+private:
+
+ Vector m_BBox[2]; // axial-aligned bounding box
+ float m_ErrorTerm; // LOD error term
+ int m_NeighborNodeIndices[4]; // neighbor node indices
+ int m_OrigVertIndex; // origin vertex index
+ int m_VertIndices[8]; // neighboring vertex indices
+ bool m_bTouched; // "touched" flag
+ bool m_bActive; // "active" flag -- rendering
+};
+
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+inline void CDispNode::SetBoundingBox( const Vector& bbMin, const Vector& bbMax )
+{
+ VectorCopy( bbMin, m_BBox[0] );
+ VectorCopy( bbMax, m_BBox[1] );
+}
+
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+inline void CDispNode::GetBoundingBox( Vector& bbMin, Vector& bbMax )
+{
+ VectorCopy( m_BBox[0], bbMin );
+ VectorCopy( m_BBox[1], bbMax );
+}
+
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+inline void CDispNode::SetErrorTerm( float error )
+{
+ m_ErrorTerm = error;
+}
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+inline float CDispNode::GetErrorTerm( void )
+{
+ return m_ErrorTerm;
+}
+
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+inline void CDispNode::SetNeighborNodeIndex( int direction, int nodeIndex )
+{
+ m_NeighborNodeIndices[direction] = nodeIndex;
+}
+
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+inline int CDispNode::GetNeighborNodeIndex( int direction )
+{
+ return m_NeighborNodeIndices[direction];
+}
+
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+inline void CDispNode::SetOrigVertexIndex( int vertIndex )
+{
+ m_OrigVertIndex = vertIndex;
+}
+
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+inline int CDispNode::GetOrigVertexIndex( void )
+{
+ return m_OrigVertIndex;
+}
+
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+inline void CDispNode::SetVertexIndex( int direction, int vertIndex )
+{
+ m_VertIndices[direction] = vertIndex;
+}
+
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+inline int CDispNode::GetVertexIndex( int direction )
+{
+ return m_VertIndices[direction];
+}
+
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+inline void CDispNode::SetTouched( bool bTouched )
+{
+ m_bTouched = bTouched;
+}
+
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+inline bool CDispNode::IsTouched( void )
+{
+ return m_bTouched;
+}
+
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+inline void CDispNode::SetActivity( bool bActive )
+{
+ m_bActive = bActive;
+}
+
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+inline bool CDispNode::IsActive( void )
+{
+ return m_bActive;
+}
+#endif // DISPNODE_H