//========= Copyright © 1996-2009, Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ //=============================================================================// #ifndef MAPINSTANCE_H #define MAPINSTANCE_H #pragma once #include "MapHelper.h" #include "MapDoc.h" class CRender3D; class CManifestMap; //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- class CMapInstance : public CMapHelper { public: DECLARE_MAPCLASS(CMapInstance, CMapHelper) // // Factory for building from a list of string parameters. // static CMapClass *Create( CHelperInfo *pInfo, CMapEntity *pParent ); static void SetInstancePath( const char *pszInstancePath ); static const char *GetInstancePath( void ) { return m_InstancePath; } static bool IsMapInVersionControl( const char *pszFileName ); static bool DeterminePath( const char *pszBaseFileName, const char *pszInstanceFileName, char *pszOutFileName ); // // Construction/destruction: // CMapInstance( void ); CMapInstance( const char *pszBaseFileName, const char *pszInstanceFileName ); ~CMapInstance(void); GDIV_TYPE GetFieldType( const char *pszValue ); virtual void FindTargetNames( CUtlVector< const char * > &Names ); virtual void ReplaceTargetname( const char *szOldName, const char *szNewName ); virtual bool OnApply( void ); virtual void CalcBounds(BOOL bFullUpdate = FALSE); virtual void UpdateChild(CMapClass *pChild); virtual CMapEntity *FindChildByKeyValue( const char* key, const char* value, bool *bIsInInstance = NULL, VMatrix *InstanceMatrix = NULL ); virtual void InstanceMoved( void ); virtual CMapClass *Copy(bool bUpdateDependencies); virtual CMapClass *CopyFrom(CMapClass *pFrom, bool bUpdateDependencies); void Initialize(void); void SetManifest( CManifestMap *pManifestMap ); void Render2D(CRender2D *pRender); void Render3D(CRender3D *pRender); void SwitchTo( void ); // Called by entity code to render sprites void RenderLogicalAt(CRender2D *pRender, const Vector2D &vecMins, const Vector2D &vecMaxs ); void GetAngles(QAngle &Angles); int SerializeRMF(std::fstream &File, BOOL bRMF); int SerializeMAP(std::fstream &File, BOOL bRMF); bool ShouldRenderLast(void); bool IsVisualElement(void) { return(true); } virtual bool IsEditable( void ); bool IsInstanceVisible( void ); const char *GetDescription( void ) { return( "Instance" ); } CMapDoc *GetInstancedMap( void ) { return m_pInstancedMap; } CManifestMap *GetManifestMap( void ) { return m_pManifestMap; } bool IsInstance( void ) { return ( m_pManifestMap == NULL ); } void UpdateInstanceMap( void ); void OnParentKeyChanged(const char* szKey, const char* szValue); protected: // // Implements CMapAtom transformation functions. // void DoTransform(const VMatrix &matrix); QAngle m_Angles; char m_FileName[ MAX_PATH ]; CMapDoc *m_pInstancedMap; CManifestMap *m_pManifestMap; static char m_InstancePath[ MAX_PATH ]; }; #endif // MAPINSTANCE_H