/*
** Command & Conquer Renegade(tm)
** Copyright 2025 Electronic Arts Inc.
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program. If not, see .
*/
/***********************************************************************************************
*** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
***********************************************************************************************
* *
* Project Name : LevelEdit *
* *
* $Archive:: /Commando/Code/Tools/LevelEdit/EditorAssetMgr.h $*
* *
* Author:: Patrick Smith *
* *
* $Modtime:: 1/29/02 10:33a $*
* *
* $Revision:: 15 $*
* *
*---------------------------------------------------------------------------------------------*
* Functions: *
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
#if defined(_MSC_VER)
#pragma once
#endif
#ifndef __LEVELEDITASSETMGR_H
#define __LEVELEDITASSETMGR_H
#include "AssetMgr.H"
#include "FFactory.H"
/////////////////////////////////////////////////////////////////////////////
//
// EditorFileFactoryClass
//
/////////////////////////////////////////////////////////////////////////////
class EditorFileFactoryClass : public FileFactoryClass
{
public:
///////////////////////////////////////////////////
// Public methods
///////////////////////////////////////////////////
virtual FileClass * Get_File (char const *filename);
virtual void Return_File (FileClass *file);
//
// Search path support
//
static void Add_Search_Path (const char *path) { SearchPathList.Add (path); }
static DynamicVectorClass & Get_Search_Path (void) { return SearchPathList; }
private:
///////////////////////////////////////////////////
// Private data
///////////////////////////////////////////////////
static DynamicVectorClass SearchPathList;
};
/////////////////////////////////////////////////////////////////////////////
//
// EditorAssetMgrClass
//
/////////////////////////////////////////////////////////////////////////////
class EditorAssetMgrClass : public WW3DAssetManager
{
public:
///////////////////////////////////////////////////
// Public constructors/destructors
///////////////////////////////////////////////////
EditorAssetMgrClass (void);
virtual ~EditorAssetMgrClass (void) {}
///////////////////////////////////////////////////
// Public methods
///////////////////////////////////////////////////
//
// Base class overrides
//
virtual RenderObjClass * Create_Render_Obj (const char * name);
virtual HAnimClass * Get_HAnim (const char * name);
virtual HTreeClass * Get_HTree (const char * name);
virtual TextureClass * Get_Texture (const char *filename, TextureClass::MipCountType mip_level_count=TextureClass::MIP_LEVELS_ALL,WW3DFormat texture_format=WW3D_FORMAT_UNKNOWN, bool allow_compression=true);
//
// INI methods
//
virtual class EditorINIClass *Get_INI (const char *filename);
//
// Asset managment
//
virtual void Reload_File (const char *filename);
virtual void Load_Resource_Texture (const char *filename);
//
// Directory methods
//
void Set_Current_Directory (LPCTSTR path) { m_CurrentDir = path; ::SetCurrentDirectory (m_CurrentDir); }
const char * Get_Current_Directory (void) { return m_CurrentDir; }
//
// Load data from any type of w3d file
//
virtual bool Load_3D_Assets (const char * filename);
//
// Texture caching overrides
//
virtual void Open_Texture_File_Cache(const char * /*prefix*/);
virtual void Close_Texture_File_Cache();
protected:
///////////////////////////////////////////////////
// Protected methods
///////////////////////////////////////////////////
virtual bool Determine_Real_Location (LPCTSTR filename, CString &real_location);
virtual bool Is_File_Here (LPCTSTR full_path, bool get_from_vss);
private:
///////////////////////////////////////////////////
//
// Private member data
//
CString m_CurrentDir;
};
#endif //__LEVELEDITASSETMGR_H