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.
38 lines
1.1 KiB
38 lines
1.1 KiB
//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
// $NoKeywords: $
|
|
//=============================================================================//
|
|
|
|
#ifndef IMATERIALPROXY_H
|
|
#define IMATERIALPROXY_H
|
|
#pragma once
|
|
|
|
#include "interface.h"
|
|
|
|
#define IMATERIAL_PROXY_INTERFACE_VERSION "_IMaterialProxy003"
|
|
|
|
class IMaterial;
|
|
class KeyValues;
|
|
|
|
abstract_class IMaterialProxy
|
|
{
|
|
public:
|
|
virtual bool Init( IMaterial* pMaterial, KeyValues *pKeyValues ) = 0;
|
|
virtual void OnBind( void * ) = 0;
|
|
virtual void Release() = 0;
|
|
virtual IMaterial * GetMaterial() = 0;
|
|
|
|
// Is this material proxy allowed to be called in the async thread? Most are no, a few are yes.
|
|
// This could be converted from a true interface to having a single bool that gets set at construction
|
|
// time for this. I'm considering it because this gets called on the hot path, but it's probably not
|
|
// worth it now.
|
|
virtual bool CanBeCalledAsync() const { return false; }
|
|
|
|
protected:
|
|
// no one should call this directly
|
|
virtual ~IMaterialProxy() {}
|
|
};
|
|
|
|
#endif // IMATERIALPROXY_H
|