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 fbxnodeattribute.h
13#ifndef _FBXSDK_SCENE_GEOMETRY_NODE_ATTRIBUTE_H_
14#define _FBXSDK_SCENE_GEOMETRY_NODE_ATTRIBUTE_H_
15
16#include <fbxsdk/fbxsdk_def.h>
17
18#include <fbxsdk/core/fbxobject.h>
19
20#include <fbxsdk/fbxsdk_nsbegin.h>
21
22class FbxNode;
23
24/** \brief This class is the base class to all types of node attributes.
25 * \nosubgrouping
26 * A node attribute is the content of a node. A \c NULL node attribute is set
27 * by calling function FbxNode::SetNodeAttribute() with a \c NULL pointer.
28 */
29class FBXSDK_DLL FbxNodeAttribute : public FbxObject
30{
31 FBXSDK_OBJECT_DECLARE(FbxNodeAttribute, FbxObject);
32
33public:
34 //! Property Names
35 static const char* sColor;
36
37 //! Property Default Values
38 static const FbxDouble3 sDefaultColor;
39
40 /** This property handles the color.
41 *
42 * Default value is (0.8, 0.8, 0.8)
43 */
44 FbxPropertyT<FbxDouble3> Color;
45
46 /** \enum EType Node attribute types.
47 * - \e eUnknown
48 * - \e eNull
49 * - \e eMarker
50 * - \e eSkeleton
51 * - \e eMesh
52 * - \e eNurbs
53 * - \e ePatch
54 * - \e eCamera
55 * - \e eCameraStereo,
56 * - \e eCameraSwitcher
57 * - \e eLight
58 * - \e eOpticalReference
59 * - \e eOpticalMarker
60 * - \e eNurbsCurve
61 * - \e eTrimNurbsSurface
62 * - \e eBoundary
63 * - \e eNurbsSurface
64 * - \e eShape
65 * - \e eLODGroup
66 * - \e eSubDiv
67 * - \e eCachedEffect
68 * - \e eLine
69 */
70 enum EType
71 {
72 eUnknown,
73 eNull,
74 eMarker,
75 eSkeleton,
76 eMesh,
77 eNurbs,
78 ePatch,
79 eCamera,
80 eCameraStereo,
81 eCameraSwitcher,
82 eLight,
83 eOpticalReference,
84 eOpticalMarker,
85 eNurbsCurve,
86 eTrimNurbsSurface,
87 eBoundary,
88 eNurbsSurface,
89 eShape,
90 eLODGroup,
91 eSubDiv,
92 eCachedEffect,
93 eLine
94 };
95
96 /** Return the type of node attribute.
97 * This class is pure virtual.
98 */
99 virtual FbxNodeAttribute::EType GetAttributeType() const;
100
101 /** Return the node count using this attribute.
102 * \return The count of nodes with this attribute set.
103 */
104 int GetNodeCount() const;
105
106 /** Return the node this attribute is set to.
107 * \param pIndex The index of the node to retrieve
108 * \return Pointer to the node, or \c NULL if the current attribute is not set to a node.
109 */
110 FbxNode* GetNode(int pIndex=0) const;
111
112/*****************************************************************************************************************************
113** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
114*****************************************************************************************************************************/
115#ifndef DOXYGEN_SHOULD_SKIP_THIS
116protected:
117 virtual void ConstructProperties(bool pForceSet);
118#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
119};
120
121#include <fbxsdk/fbxsdk_nsend.h>
122
123#endif /* _FBXSDK_SCENE_GEOMETRY_NODE_ATTRIBUTE_H_ */
124