added everything
This commit is contained in:
124
lib/maxsdk70/include/mentalray/imrShader.h
Executable file
124
lib/maxsdk70/include/mentalray/imrShader.h
Executable file
@@ -0,0 +1,124 @@
|
||||
/*==============================================================================
|
||||
|
||||
file: imrShader.h
|
||||
|
||||
author: Daniel Levesque
|
||||
|
||||
created: 10feb2003
|
||||
|
||||
description:
|
||||
|
||||
Interface definition for mental ray shaders.
|
||||
|
||||
modified:
|
||||
|
||||
|
||||
<EFBFBD> 2003 Autodesk
|
||||
==============================================================================*/
|
||||
#ifndef __IMRSHADER__H
|
||||
#define __IMRSHADER__H
|
||||
|
||||
#include <windows.h>
|
||||
#include <tab.h>
|
||||
#include <maxtypes.h>
|
||||
#include <BaseInterface.h>
|
||||
#include <strclass.h>
|
||||
|
||||
class imrShaderClassDesc;
|
||||
class IParamBlock2;
|
||||
class ReferenceTarget;
|
||||
|
||||
// Interface ID for imrShader interface
|
||||
#define IMRSHADER_INTERFACE_ID Interface_ID(0x3b2f7b97, 0x5766e45)
|
||||
|
||||
//==============================================================================
|
||||
// class imrShader
|
||||
//
|
||||
// Abstract class from which the mental ray shaders are derived.
|
||||
//
|
||||
// 3rd parties must not derive from this interface.
|
||||
//
|
||||
// This interface is implemented by both material plugins (class Mtl) and texture
|
||||
// map plugins (class Texmap). To query this interface from a material or texture
|
||||
// map plugin, use the GetIMRShader() and IsIMRShader() functions below.
|
||||
//
|
||||
//==============================================================================
|
||||
class imrShader : public BaseInterface {
|
||||
|
||||
public:
|
||||
|
||||
// Naming methods
|
||||
virtual void SetName(const TCHAR* name) = 0;
|
||||
virtual const TCHAR* GetName() = 0;
|
||||
virtual TSTR GetFullName() = 0;
|
||||
|
||||
// Returns the class descriptor of this shader.
|
||||
virtual imrShaderClassDesc& GetClassDesc() = 0;
|
||||
|
||||
// Access to the four main parameter blocks
|
||||
virtual IParamBlock2* GetResultsParamBlock() = 0;
|
||||
virtual IParamBlock2* GetParametersParamBlock() = 0;
|
||||
virtual IParamBlock2* GetConnectionsParamBlock() = 0;
|
||||
|
||||
// Called when WM_HELP is received by the shader editor. Show shader help
|
||||
// and return true, or return false for default handling.
|
||||
virtual bool HandleHelp() = 0;
|
||||
|
||||
// Returns the ReferenceTarget associated with the given shader. Class imrShader
|
||||
// does not derive from ReferenceTarget, but its implementation does.
|
||||
// This method is necessary if the client wishes to create a reference to the
|
||||
// shader.
|
||||
virtual ReferenceTarget& GetReferenceTarget() = 0;
|
||||
|
||||
// Controls whether this shader was created for custom translation.
|
||||
// USED INTERNALLY.
|
||||
virtual bool IsCustomTranslationShader() = 0;
|
||||
virtual void SetCustomTranslationShader(bool val) = 0;
|
||||
|
||||
// -- from BaseInterface
|
||||
virtual Interface_ID GetID();
|
||||
};
|
||||
|
||||
inline Interface_ID imrShader::GetID() {
|
||||
|
||||
return IMRSHADER_INTERFACE_ID;
|
||||
}
|
||||
|
||||
|
||||
//==============================================================================
|
||||
// GetIMRShader()
|
||||
//
|
||||
// Queries and returns the imrShader interface on an object. Returns NULL if
|
||||
// the given object is _not_ a mental ray shader.
|
||||
//==============================================================================
|
||||
inline imrShader* GetIMRShader(InterfaceServer* iserver) {
|
||||
|
||||
if(iserver == NULL)
|
||||
return NULL;
|
||||
else
|
||||
return static_cast<imrShader*>(iserver->GetInterface(IMRSHADER_INTERFACE_ID));
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
// IsIMRShader()
|
||||
//
|
||||
// Returns whether an object implements the imrShader interface (i.e. returns
|
||||
// whether an object _is_ a mental ray shader).
|
||||
//==============================================================================
|
||||
inline bool IsIMRShader(InterfaceServer* iserver) {
|
||||
|
||||
return (GetIMRShader(iserver) != NULL);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
// GetReferenceTarget()
|
||||
//
|
||||
// Converts a mental ray shader back to a reference target.
|
||||
//==============================================================================
|
||||
inline ReferenceTarget* GetReferenceTarget(imrShader* shader) {
|
||||
|
||||
return ((shader != NULL) ? &shader->GetReferenceTarget() : NULL);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user