Vector3D.h

00001 /****************************************************************************************
00002 THIS CODE IS PUBLISHED AS A SAMPLE ONLY AND IS PROVIDED "AS IS".
00003 IN NO EVENT SHALL SOFTIMAGE, AVID TECHNOLOGY, INC. AND/OR THEIR RESPECTIVE 
00004 SUPPLIERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
00005 DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
00006 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
00007 CONNECTION WITH THE USE OR PERFORMANCE OF THIS CODE . 
00008  
00009 COPYRIGHT NOTICE. Copyright © 1999-2002 Avid Technology Inc. . All rights reserved. 
00010 
00011 SOFTIMAGE is a registered trademark of Avid Technology Inc. or its subsidiaries 
00012 or divisions. Windows NT is a registered trademark of Microsoft Corp. All other
00013 trademarks contained herein are the property of their respective owners. 
00014 ****************************************************************************************/
00015 
00016 #ifndef __VECTOR3D_H__
00017 #define __VECTOR3D_H__
00018 
00019 #include "SL_Float.h"   // CSLFloatProxy
00020 #include <SIBCVector.h> // CSIBCVector3D
00021 class CCOLLADATemplate;
00022 class CSLCOLLADAScene;
00023 
00030 class XSIEXPORT CSLVector3DProxy
00031 {
00032 public:
00034 
00040     CSLVector3DProxy
00041     ( 
00042         CdotXSITemplate *in_pTemplate,
00043         SI_Long in_lIndexX,
00044         SI_Long in_lIndexY,
00045         SI_Long in_lIndexZ
00046     );
00047 
00049     CSLVector3DProxy& operator =(const CSIBCVector3D &in_rVector);
00050 
00052     operator CSIBCVector3D();
00053 
00055     CSLFloatProxy& X();
00056 
00058     CSLFloatProxy& Y();
00059 
00061     CSLFloatProxy& Z();
00062 
00064     void    Connect ( CdotXSITemplate *in_pTemplate, 
00065                         SI_Long in_lIndexX, 
00066                         SI_Long in_lIndexY, 
00067                         SI_Long in_lIndexZ );
00068 
00069     void    Connect ( CSLTemplate *in_pTemplate, 
00070                         CCOLLADATemplate *in_pOwner, 
00071                         SI_Long in_lIndexX, 
00072                         SI_Long in_lIndexY, 
00073                         SI_Long in_lIndexZ, 
00074                         CSLCOLLADAScene* in_pScene, 
00075                         int in_CurveType[], 
00076                         const char* in_XSIName[], 
00077                         const char* in_zsSuffixX = "X", 
00078                         const char* in_zsSuffixY = "Y", 
00079                         const char* in_zsSuffixZ = "Z",
00080                         const char* in_szSID = NULL);
00081 
00082 protected:
00083     CSLFloatProxy m_fX;
00084     CSLFloatProxy m_fY;
00085     CSLFloatProxy m_fZ;
00086 };
00087 
00088 #endif //__VECTOR3D_H__