1/****************************************************************************************
2
3 Copyright (C) 2015 Autodesk, Inc.
4 All rights reserved.
5
6 Use of this software is subject to the terms of the Autodesk license agreement
7 provided at the time of installation or download, or which otherwise accompanies
8 this software in either electronic or hard copy form.
9
10****************************************************************************************/
11
12//! \file fbximplementationfilter.h
13#ifndef _FBXSDK_SCENE_SHADING_IMPLEMENTATION_FILTER_H_
14#define _FBXSDK_SCENE_SHADING_IMPLEMENTATION_FILTER_H_
15
16#include <fbxsdk/fbxsdk_def.h>
17
18#include <fbxsdk/scene/fbxobjectfilter.h>
19
20#include <fbxsdk/fbxsdk_nsbegin.h>
21
22class FbxCriteria;
23
24/** \brief This object represents a shading node filter criteria
25 * based on the shading node implementation.
26 * \nosubgrouping
27 */
28class FBXSDK_DLL FbxImplementationFilter : public FbxObjectFilter
29{
30
31public:
32
33 /** The default shading API.
34 */
35 static const char * sCHR_ANY_SHADING_API;
36
37 /** The default shading API version.
38 */
39 static const char * sCHR_ANY_SHADING_API_VERSION;
40
41 /** The default shading language.
42 */
43 static const char * sCHR_ANY_SHADING_LANGUAGE;
44
45 /** The default shading language version.
46 */
47 static const char * sCHR_ANY_SHADING_LANGUAGE_VERSION;
48
49
50 /** Constructor
51 * \param pShadingAPI a string containing the implementation API name:
52 * MentalRay
53 * OpenGL
54 * DirectX
55 *
56 * \param pShadingAPIVersion a string containing the implementation API version:
57 * eg. 1.0
58 *
59 * \param pShadingLanguage a string identifying the implementation language name:
60 * GLSL = GL Shading Language
61 * HLSL = High Level Shading Language
62 * CGFX = CG effect(NVidia)
63 * RIB = RenderMan (RIB)
64 * etc...
65 *
66 * \param pShadingLanguageVersion a string identifying the implementation language version:
67 * eg. 1.0
68 *
69 * \remarks by default the created criteria correspond to any shader
70 */
71 FbxImplementationFilter(
72 const char * pShadingAPI = sCHR_ANY_SHADING_API,
73 const char * pShadingAPIVersion = sCHR_ANY_SHADING_API_VERSION,
74 const char * pShadingLanguage = sCHR_ANY_SHADING_LANGUAGE,
75 const char * pShadingLanguageVersion = sCHR_ANY_SHADING_LANGUAGE_VERSION
76 );
77
78 //! Destructor.
79 virtual ~FbxImplementationFilter();
80
81 /** Tells if this filter matches the given shading node implementation
82 * \param pObjectPtr The given shading node implementation
83 */
84 virtual bool Match(const FbxObject * pObjectPtr) const;
85
86 //! Stores the shading API
87 FbxString mShadingAPI;
88
89 //! Stores the shading API Version
90 FbxString mShadingAPIVersion;
91
92 //! Stores the shading language
93 FbxString mShadingLanguage;
94
95 //! Stores the shading language version
96 FbxString mShadingLanguageVersion;
97
98/*****************************************************************************************************************************
99** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
100*****************************************************************************************************************************/
101#ifndef DOXYGEN_SHOULD_SKIP_THIS
102 /** Utility method to determine if the given object is a shading node
103 * that we recognize.
104 */
105 static bool IsShadingObject( const FbxObject* pObject );
106
107 /** Returns a criteria suitable for use with querying connections
108 * to shading nodes that we recognize, on FbxObject.
109 */
110 static FbxCriteria Criteria();
111#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
112};
113
114#include <fbxsdk/fbxsdk_nsend.h>
115
116#endif /* _FBXSDK_SCENE_SHADING_IMPLEMENTATION_FILTER_H_ */
117