FCDocument/FCDGeometryPolygonsInput.h

Go to the documentation of this file.
00001 /*
00002     Copyright (C) 2005-2007 Feeling Software Inc.
00003     Portions of the code are:
00004     Copyright (C) 2005-2007 Sony Computer Entertainment America
00005     
00006     MIT License: http://www.opensource.org/licenses/mit-license.php
00007 */
00008 /*
00009     Based on the FS Import classes:
00010     Copyright (C) 2005-2006 Feeling Software Inc
00011     Copyright (C) 2005-2006 Autodesk Media Entertainment
00012     MIT License: http://www.opensource.org/licenses/mit-license.php
00013 */
00014 
00020 #ifndef _FCD_GEOMETRY_POLYGONS_INPUT_H_
00021 #define _FCD_GEOMETRY_POLYGONS_INPUT_H_
00022 
00023 #ifndef __FCD_OBJECT_H_
00024 #include "FCDocument/FCDObject.h"
00025 #endif // __FCD_OBJECT_H_
00026 #ifndef _FU_PARAMETER_H_
00027 #include "FUtils/FUParameter.h"
00028 #endif // _FU_PARAMETER_H_
00029 
00030 class FCDGeometrySource;
00031 class FCDGeometryPolygons;
00032 
00047 class FCOLLADA_EXPORT FCDGeometryPolygonsInput : public FCDObject, FUTracker
00048 {
00049 private:
00050     DeclareObjectType(FCDObject);
00051 
00052     FCDGeometryPolygons* parent;
00053     DeclareParameterPtr(FCDGeometrySource, source, FC("Data Source"));
00054     DeclareParameter(int32, FUParameterQualifiers::SIMPLE, set, FC("Input Set"));
00055     DeclareParameter(uint32, FUParameterQualifiers::SIMPLE, offset, FC("Stream Offset"));
00056     DeclareParameterList(UInt32, indices, FC("Data Indices"));
00057 
00058 public:
00063     FCDGeometryPolygonsInput(FCDocument* document, FCDGeometryPolygons* parent);
00064 
00066     ~FCDGeometryPolygonsInput();
00067 
00073     FUDaeGeometryInput::Semantic GetSemantic() const; 
00074 
00080     FCDGeometrySource* GetSource() { return source; }
00081     const FCDGeometrySource* GetSource() const { return source; } 
00085     void SetSource(FCDGeometrySource* source);
00086 
00090     inline void SetOffset(uint32 _offset) { offset = _offset; }
00091 
00094     inline uint32 GetOffset() const { return offset; }
00095 
00101     inline int32 GetSet() const { return set; }
00102 
00108     inline void SetSet(int32 _set) { set = _set; }
00109     
00113     inline bool OwnsIndices() const { return !indices.empty(); }
00114     
00119     void SetIndices(const uint32* indices, size_t count);
00120 
00124     void SetIndexCount(size_t count);
00125 
00129     void ReserveIndexCount(size_t count);
00130 
00135     void AddIndex(uint32 index);
00136 
00141     void AddIndices(const UInt32List& indices);
00142 
00145     uint32* GetIndices() { return const_cast<uint32*>(const_cast<const FCDGeometryPolygonsInput*>(this)->GetIndices()); }
00146     const uint32* GetIndices() const; 
00150     size_t GetIndexCount() const;
00151 
00152 private:
00153     // FUTracker interface.
00154     virtual void OnObjectReleased(FUTrackable* object);
00155 
00156     // Finds the index buffer for this list.
00157     FUParameterUInt32List& FindIndices() { return const_cast<FUParameterUInt32List&>(const_cast<const FCDGeometryPolygonsInput*>(this)->FindIndices()); }
00158     const FUParameterUInt32List& FindIndices() const;
00159 };
00160 
00161 #endif // _FCD_GEOMETRY_POLYGONS_INPUT_H_

Generated on Thu Feb 14 16:58:34 2008 for FCollada by  doxygen 1.4.6-NO