You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.2 KiB
79 lines
2.2 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// |
|
//============================================================================= |
|
|
|
#ifndef DISPSHORE_H |
|
#define DISPSHORE_H |
|
#pragma once |
|
|
|
#include "MapHelper.h" |
|
#include "MapFace.h" |
|
#include "MapOverlay.h" |
|
#include "MapOverlayTrans.h" |
|
|
|
class CHelperInfo; |
|
class CMapEntity; |
|
|
|
struct ShoreFaceData_t |
|
{ |
|
CMapFace *m_pFaces[4]; // The hammer faces the points reside on. |
|
Vector m_vecPoints[4]; // The shore face points. |
|
Vector2D m_vecTexCoords[4]; // The shore texture coordinates. |
|
bool m_bAdjWinding; |
|
}; |
|
|
|
struct ShoreSegment_t |
|
{ |
|
Vector m_vecPoints[2]; // Shore segment points. |
|
Vector m_vecNormals[2]; // Shore segment normals. |
|
Vector2D m_vecTexCoords[4]; // Shore segment texture coordinates. |
|
|
|
EditDispHandle_t m_hDisp; // Displacement the shore segment was created from. |
|
float m_flWaterZ; |
|
|
|
ShoreFaceData_t m_WorldFace; |
|
ShoreFaceData_t m_WaterFace; |
|
|
|
// ? |
|
Vector m_vecCenter; |
|
unsigned int m_iStartPoint; |
|
bool m_bTouch; |
|
bool m_bCreated; |
|
}; |
|
|
|
struct Shoreline_t |
|
{ |
|
int m_nShorelineId; |
|
CUtlVector<ShoreSegment_t> m_aSegments; // List of shore segments making up the shore line. |
|
CUtlVector<int> m_aSortedSegments; // List of shore segments sorted (for connectivity). |
|
CUtlVector<CMapOverlay> m_aOverlays; |
|
float m_flLength; // Total length of the shore line. |
|
ShoreEntityData_t m_ShoreData; |
|
|
|
Shoreline_t(); |
|
~Shoreline_t(); |
|
void AddSegment( Vector &vecPoint0, Vector &vecPoint1, Vector &vecNormal, float flWaterZ, CMapFace *pWaterFace, EditDispHandle_t hDisp ); |
|
}; |
|
|
|
class IDispShoreManager |
|
{ |
|
public: |
|
|
|
virtual bool Init( void ) = 0; |
|
virtual void Shutdown( void ) = 0; |
|
|
|
// Shoreline management. |
|
virtual int GetShorelineCount( void ) = 0; |
|
virtual Shoreline_t *GetShoreline( int nShorelineId ) = 0; |
|
virtual void AddShoreline( int nShorelineId ) = 0; |
|
virtual void RemoveShoreline( int nShorelineId ) = 0; |
|
virtual void BuildShoreline( int nShorelineId, CUtlVector<CMapFace*> &aFaces, CUtlVector<CMapFace*> &aWaterFaces ) = 0; |
|
|
|
virtual void Draw( CRender3D *pRender ) = 0; |
|
virtual void DebugDraw( CRender3D *pRender ) = 0; |
|
}; |
|
|
|
IDispShoreManager *GetShoreManager( void ); |
|
|
|
#endif // DISPSHORE_H
|