mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-23 06:36:54 +00:00
84 lines
2.3 KiB
C++
84 lines
2.3 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
// $NoKeywords: $
|
|
//=============================================================================//
|
|
|
|
#ifndef CUSTOM_TEXTURE_CACHE_H
|
|
#define CUSTOM_TEXTURE_CACHE_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#ifndef GC_CLIENTSYSTEM_H
|
|
#include "gc_clientsystem.h"
|
|
#endif
|
|
|
|
class IGameSystem;
|
|
class ITexture;
|
|
class CEconItemView;
|
|
|
|
/// Given a UGC cloud ID of a custom image, return a VGUI texture handle
|
|
/// that can be used for drawing. Returns 0 on failure
|
|
int GetCustomTextureGuiHandle( uint64 hCloudId );
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Job to do the async work of uploading the file to the CDN (if
|
|
// necessary) and sending the tool request message
|
|
//-----------------------------------------------------------------------------
|
|
class CApplyCustomTextureJob : public GCSDK::CGCClientJob
|
|
{
|
|
public:
|
|
|
|
CApplyCustomTextureJob( itemid_t nToolItemID, itemid_t nSubjectItemID, const void *pPNGData, int nPNGDataBytes );
|
|
|
|
protected:
|
|
char m_chRemoteStorageName[ MAX_PATH ];
|
|
|
|
virtual bool BYieldingRunGCJob();
|
|
virtual EResult YieldingRunJob();
|
|
virtual EResult YieldingFindFileIncacheOrUploadFileToCDN();
|
|
virtual EResult YieldingApplyTool();
|
|
|
|
/// The file data, in PNG format
|
|
CUtlBuffer m_bufPNGData;
|
|
|
|
/// Item that we are applying the texture onto
|
|
itemid_t m_nSubjectItemID;
|
|
|
|
/// Tool that is being applied and will be consumed
|
|
itemid_t m_nToolItemID;
|
|
|
|
/// Cloud file ID
|
|
uint64 m_hCloudID;
|
|
|
|
private:
|
|
void CleanUp();
|
|
};
|
|
|
|
/// get interface to the game system responsible for managing the custom texture cache
|
|
IGameSystem *CustomTextureToolCacheGameSystem();
|
|
|
|
/// A few internal things that really shouldn't be public
|
|
namespace CustomTextureSystem
|
|
{
|
|
|
|
/// If we're auditioning (while selecting a file to apply on a model),
|
|
/// what texture should we display?
|
|
extern ITexture *g_pPreviewCustomTexture;
|
|
|
|
/// What is the econ item that is being auditioned and so should
|
|
/// use the preview texture
|
|
extern CEconItemView *g_pPreviewEconItem;
|
|
|
|
/// Do we need to update the bits in the rendering system?
|
|
extern bool g_pPreviewCustomTextureDirty;
|
|
|
|
extern const char k_rchCustomTextureFilterPreviewImageName[];
|
|
extern const char k_rchCustomTextureFilterPreviewTextureName[];
|
|
|
|
}
|
|
|
|
#endif // CUSTOM_TEXTURE_CACHE_H
|