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_CONTROLLER_H_ 00021 #define _FCD_CONTROLLER_H_ 00022 00023 #ifndef _FCD_ENTITY_H_ 00024 #include "FCDocument/FCDEntity.h" 00025 #endif // _FCD_ENTITY_H_ 00026 00027 class FCDocument; 00028 class FCDGeometry; 00029 class FCDSkinController; 00030 class FCDMorphController; 00031 00040 class FCOLLADA_EXPORT FCDController : public FCDEntity 00041 { 00042 private: 00043 DeclareObjectType(FCDEntity); 00044 00045 DeclareParameterRef(FCDSkinController, skinController, FC("Skin")); 00046 DeclareParameterRef(FCDMorphController, morphController, FC("Morpher")); 00047 00048 public: 00052 FCDController(FCDocument* document); 00053 00055 virtual ~FCDController(); 00056 00060 virtual Type GetType() const { return CONTROLLER; }; 00061 00064 bool IsSkin() const { return skinController != NULL; } 00065 00068 bool IsMorph() const { return morphController != NULL; } 00069 00073 FCDSkinController* CreateSkinController(); 00074 00078 FCDMorphController* CreateMorphController(); 00079 00085 inline FCDSkinController* GetSkinController() { return skinController; } 00086 inline const FCDSkinController* GetSkinController() const { return skinController; } 00093 inline FCDMorphController* GetMorphController() { return morphController; } 00094 inline const FCDMorphController* GetMorphController() const { return morphController; } 00102 FCDEntity* GetBaseTarget(); 00103 const FCDEntity* GetBaseTarget() const; 00111 inline FCDGeometry* GetBaseGeometry() { return const_cast<FCDGeometry*>(const_cast<const FCDController*>(this)->GetBaseGeometry()); } 00112 const FCDGeometry* GetBaseGeometry() const; 00120 inline FCDController* GetBaseGeometryController() { return const_cast<FCDController*>(const_cast<const FCDController*>(this)->GetBaseGeometryController()); } 00121 const FCDController* GetBaseGeometryController() const; 00122 }; 00123 00124 #endif // _FCD_CONTROLLER_H_ 00125