xsi_x3dobject.h

Go to the documentation of this file.
00001 //*****************************************************************************
00011 //*****************************************************************************
00012 
00013 #if (_MSC_VER > 1000) || defined(SGI_COMPILER)
00014 #pragma once
00015 #endif
00016 
00017 #ifndef __XSIX3DOBJECT_H__
00018 #define __XSIX3DOBJECT_H__
00019 
00020 #include <xsi_sceneitem.h>
00021 #include <xsi_status.h>
00022 #include <xsi_math.h>
00023 #include <xsi_nurbsdata.h>
00024 
00025 namespace XSI {
00026 
00027 class Primitive;
00028 class Kinematics;
00029 class CameraRig;
00030 class LightRig;
00031 class Camera;
00032 class Light;
00033 class Null;
00034 class ChainRoot;
00035 class StaticKinematicState;
00036 class ParticleCloud;
00037 class CMeshBuilder;
00038 class CRigidBodyAccessor;
00039 class CRigidConstraintAccessor;
00040 
00041 //*****************************************************************************
00089 //*****************************************************************************
00090 class SICPPSDKDECL X3DObject : public SceneItem
00091 {
00092 public:
00094     X3DObject();
00095 
00097     ~X3DObject();
00098 
00102     X3DObject(const CRef& in_ref);
00103 
00107     X3DObject(const X3DObject& in_obj);
00108 
00113     bool IsA( siClassID in_ClassID) const;
00114 
00118     siClassID GetClassID() const;
00119 
00125     X3DObject& operator=(const X3DObject& in_obj);
00126 
00132     X3DObject& operator=(const CRef& in_ref);
00133 
00137     CRefArray GetPrimitives() const;
00138 
00143     Primitive GetActivePrimitive() const;
00144 
00148     CRefArray GetChildren() const;
00149 
00155     CRefArray GetModels( bool in_recursive = true) const;
00156 
00161     CRefArray GetMaterials() const;
00162 
00166     Kinematics GetKinematics() const;
00167 
00175     CStatus AddPrimitive
00176     (
00177         const CString& in_preset,
00178         const CString& in_name ,
00179         X3DObject& io_3dobj
00180     );
00181 
00191     CStatus AddGeometry
00192     (
00193         const CString&  in_geompreset,
00194         const CString&  in_convpreset,
00195         const CString&  in_name,
00196         X3DObject&      io_3dobj
00197     );
00198 
00279     CStatus AddPolygonMesh( const CString&  in_name,
00280                             X3DObject&      out_3dobj,
00281                             CMeshBuilder&   out_meshBuilder );
00282 
00325     CStatus AddPolygonMesh
00326     (
00327         const MATH::CVector3Array&  in_vertices,
00328         const CLongArray&           in_polygonData,
00329         const CString&              in_name,
00330         X3DObject&                  io_3dobj
00331     );
00332 
00341     CStatus AddModel
00342     (
00343         const CRefArray&    in_objects,
00344         const CString&      in_name,
00345         Model&              io_3dobj
00346     );
00347 
00357     CStatus AddLattice
00358     (
00359         const CString&      in_preset,
00360         const CRefArray&    in_objects,
00361         const CString&      in_name,
00362         X3DObject&          io_3dobj
00363     );
00364 
00375     CStatus AddControl
00376     (
00377         const CString&      in_preset,
00378         const CRefArray&    in_objects,
00379         const CString&      in_name,
00380         X3DObject&          io_3dobj
00381     );
00382 
00391     CStatus AddCameraRig
00392     (
00393         const CString&  in_preset,
00394         const CString&  in_name,
00395         CameraRig&      io_rig
00396     );
00397 
00406     CStatus AddLightRig
00407     (
00408         const CString&  in_preset,
00409         const CString&  in_name,
00410         LightRig&       io_rig
00411     );
00412 
00423     CStatus AddCamera
00424     (
00425         const CString&  in_preset,
00426         const CString&  in_name,
00427         Camera&         io_camera
00428     );
00429 
00441     CStatus AddLight
00442     (
00443         const CString& in_preset,
00444         bool           in_bInterest,
00445         const CString& in_name,
00446         Light&         io_light
00447     );
00448 
00455     CStatus AddNull
00456     (
00457         const CString&  in_name,
00458         Null&           io_null
00459     );
00460 
00467     CStatus AddChild
00468     (
00469         const CRefArray& in_objects
00470     );
00471 
00478     CStatus RemoveChild
00479     (
00480         const CRefArray& in_objects
00481     );
00482 
00488     CStatus RemoveFromParent();
00489 
00501     CStatus Add2DChain
00502     (
00503         const MATH::CVector3&   in_rootPos,
00504         const MATH::CVector3&   in_effPos,
00505         const MATH::CVector3&   in_normPlane,
00506         si2DChainAlignType      in_alignType,
00507         const CString&          in_name,
00508         ChainRoot&              io_chainroot
00509     );
00510 
00521     CStatus Add3DChain
00522     (
00523         const MATH::CVector3&   in_rootPos,
00524         const MATH::CVector3&   in_effPos,
00525         const MATH::CVector3&   in_normPlane,
00526         const CString&          in_name,
00527         ChainRoot&              io_chainroot
00528     );
00529 
00533     CRefArray GetShapeAnimatedClusters() const;
00534 
00629     X3DObject FindChild
00630     (
00631         const CString&      in_name,
00632         const CString&      in_type,
00633         const CStringArray& in_famArray,
00634         bool                in_bRecursive = true
00635     ) const;
00636 
00750     CRefArray FindChildren
00751     (
00752         const CString&      in_name,
00753         const CString&      in_type,
00754         const CStringArray& in_famArray,
00755         bool                in_bRecursive = true
00756     ) const;
00757 
00761     bool HasStaticKinematicState() const;
00762 
00766     StaticKinematicState GetStaticKinematicState() const;
00767 
00819     bool IsNodeAnimated
00820     (
00821         siSourceType    in_sourceType = siAnySource,
00822         bool            in_bLocal = false
00823     ) const;
00824 
00890     CRefArray GetNodeAnimatedParameters
00891     (
00892         siSourceType    in_sourceType = siAnySource,
00893         bool            in_bLocal = false
00894     ) const;
00895 
00904     CStatus AddNurbsCurve
00905     (
00906         const CNurbsCurveData&      in_curveData,
00907         siNurbsFormat               in_nurbsFormat,
00908         const CString&              in_name,
00909         X3DObject&                  io_3dobj
00910     );
00911 
00920     CStatus AddNurbsCurveList
00921     (
00922         const CNurbsCurveDataArray& in_curveDataArray,
00923         siNurbsFormat               in_nurbsFormat,
00924         const CString&              in_name,
00925         X3DObject&                  io_3dobj
00926     );
00927 
00949     CStatus AddNurbsSurface
00950     (
00951         const CNurbsSurfaceData&    in_surfaceData,
00952         siNurbsFormat               in_nurbsFormat,
00953         const CString&              in_name,
00954         X3DObject&                  io_3dobj
00955     );
00956 
00965     CStatus AddNurbsSurfaceMesh
00966     (
00967         const CNurbsSurfaceDataArray&   in_surfaceDataArray,
00968         siNurbsFormat                   in_nurbsFormat,
00969         const CString&                  in_name,
00970         X3DObject&                      io_3dobj
00971     );
00972 
00985     CStatus AddParticleCloud
00986     (
00987         const CRefArray&                in_parTypes,
00988         const CString&                  in_name,
00989         ParticleCloud&                  out_particlecloud
00990     );
00991 
00998     MATH::CVector3 GetLocalScaling()const;
00999 
01007     CStatus PutLocalScaling(MATH::CVector3 in_scaling);
01008 
01009 
01016     MATH::CRotation GetLocalRotation()const;
01017 
01025     CStatus PutLocalRotation(MATH::CRotation in_rotation);
01026 
01033     MATH::CVector3 GetLocalTranslation()const;
01034 
01042     CStatus PutLocalTranslation(MATH::CVector3 in_translation);
01043 
01049     CRigidBodyAccessor GetRigidBodyAccessor( ) const;
01050 
01056     CRigidConstraintAccessor GetRigidConstraintAccessor( ) const;
01057 
01058     private:
01059     X3DObject * operator&() const;
01060     X3DObject * operator&();
01061 };
01062 
01063 };
01064 
01065 #endif // __XSIX3DOBJECT_H__