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 class Annotation;
    00041
    00042 //*****************************************************************************
    00090 //*****************************************************************************
    00091 class SICPPSDKDECL X3DObject : public SceneItem
    00092 {
    00093 public:
    00095     X3DObject();
    00096
    00098     ~X3DObject();
    00099
    00103     X3DObject(const CRef& in_ref);
    00104
    00108     X3DObject(const X3DObject& in_obj);
    00109
    00114     bool IsA( siClassID in_ClassID) const;
    00115
    00119     siClassID GetClassID() const;
    00120
    00126     X3DObject& operator=(const X3DObject& in_obj);
    00127
    00133     X3DObject& operator=(const CRef& in_ref);
    00134
    00138     CRefArray GetPrimitives() const;
    00139
    00144     Primitive GetActivePrimitive() const;
    00145
    00151     Primitive GetActivePrimitive( double in_dFrame ) const;
    00152
    00156     CRefArray GetChildren() const;
    00157
    00163     CRefArray GetModels( bool in_recursive = true) const;
    00164
    00169     CRefArray GetMaterials() const;
    00170
    00174     Kinematics GetKinematics() const;
    00175
    00183     CStatus AddPrimitive
    00184     (
    00185         const CString& in_preset,
    00186         const CString& in_name ,
    00187         X3DObject& io_3dobj
    00188     );
    00189
    00199     CStatus AddGeometry
    00200     (
    00201         const CString&  in_geompreset,
    00202         const CString&  in_convpreset,
    00203         const CString&  in_name,
    00204         X3DObject&      io_3dobj
    00205     );
    00206
    00287     CStatus AddPolygonMesh( const CString&  in_name,
    00288                             X3DObject&      out_3dobj,
    00289                             CMeshBuilder&   out_meshBuilder );
    00290
    00333     CStatus AddPolygonMesh
    00334     (
    00335         const MATH::CVector3Array&  in_vertices,
    00336         const CLongArray&           in_polygonData,
    00337         const CString&              in_name,
    00338         X3DObject&                  io_3dobj
    00339     );
    00340
    00349     CStatus AddModel
    00350     (
    00351         const CRefArray&    in_objects,
    00352         const CString&      in_name,
    00353         Model&              io_3dobj
    00354     );
    00355
    00365     CStatus AddLattice
    00366     (
    00367         const CString&      in_preset,
    00368         const CRefArray&    in_objects,
    00369         const CString&      in_name,
    00370         X3DObject&          io_3dobj
    00371     );
    00372
    00383     CStatus AddControl
    00384     (
    00385         const CString&      in_preset,
    00386         const CRefArray&    in_objects,
    00387         const CString&      in_name,
    00388         X3DObject&          io_3dobj
    00389     );
    00390
    00399     CStatus AddCameraRig
    00400     (
    00401         const CString&  in_preset,
    00402         const CString&  in_name,
    00403         CameraRig&      io_rig
    00404     );
    00405
    00414     CStatus AddLightRig
    00415     (
    00416         const CString&  in_preset,
    00417         const CString&  in_name,
    00418         LightRig&       io_rig
    00419     );
    00420
    00431     CStatus AddCamera
    00432     (
    00433         const CString&  in_preset,
    00434         const CString&  in_name,
    00435         Camera&         io_camera
    00436     );
    00437
    00449     CStatus AddLight
    00450     (
    00451         const CString& in_preset,
    00452         bool           in_bInterest,
    00453         const CString& in_name,
    00454         Light&         io_light
    00455     );
    00456
    00463     CStatus AddNull
    00464     (
    00465         const CString&  in_name,
    00466         Null&           io_null
    00467     );
    00468
    00475     CStatus AddChild
    00476     (
    00477         const CRefArray& in_objects
    00478     );
    00479
    00486     CStatus RemoveChild
    00487     (
    00488         const CRefArray& in_objects
    00489     );
    00490
    00496     CStatus RemoveFromParent();
    00497
    00509     CStatus Add2DChain
    00510     (
    00511         const MATH::CVector3&   in_rootPos,
    00512         const MATH::CVector3&   in_effPos,
    00513         const MATH::CVector3&   in_normPlane,
    00514         si2DChainAlignType      in_alignType,
    00515         const CString&          in_name,
    00516         ChainRoot&              io_chainroot
    00517     );
    00518
    00529     CStatus Add3DChain
    00530     (
    00531         const MATH::CVector3&   in_rootPos,
    00532         const MATH::CVector3&   in_effPos,
    00533         const MATH::CVector3&   in_normPlane,
    00534         const CString&          in_name,
    00535         ChainRoot&              io_chainroot
    00536     );
    00537
    00541     CRefArray GetShapeAnimatedClusters() const;
    00542
    00639     X3DObject FindChild
    00640     (
    00641         const CString&      in_name,
    00642         const CString&      in_type,
    00643         const CStringArray& in_famArray,
    00644         bool                in_bRecursive = true
    00645     ) const;
    00646
    00736     X3DObject FindChild2
    00737     (
    00738         const CString&      in_name,
    00739         const CString&      in_type,
    00740         const CStringArray& in_famArray,
    00741         bool                in_bRecursive = true
    00742     ) const;
    00743
    00859     CRefArray FindChildren
    00860     (
    00861         const CString&      in_name,
    00862         const CString&      in_type,
    00863         const CStringArray& in_famArray,
    00864         bool                in_bRecursive = true
    00865     ) const;
    00866
    00954     CRefArray FindChildren2
    00955     (
    00956         const CString&      in_name,
    00957         const CString&      in_type,
    00958         const CStringArray& in_famArray,
    00959         bool                in_bRecursive = true
    00960     ) const;
    00961
    00965     bool HasStaticKinematicState() const;
    00966
    00970     StaticKinematicState GetStaticKinematicState() const;
    00971
    01023     bool IsNodeAnimated
    01024     (
    01025         siSourceType    in_sourceType = siAnySource,
    01026         bool            in_bLocal = false
    01027     ) const;
    01028
    01094     CRefArray GetNodeAnimatedParameters
    01095     (
    01096         siSourceType    in_sourceType = siAnySource,
    01097         bool            in_bLocal = false
    01098     ) const;
    01099
    01108     CStatus AddNurbsCurve
    01109     (
    01110         const CNurbsCurveData&      in_curveData,
    01111         siNurbsFormat               in_nurbsFormat,
    01112         const CString&              in_name,
    01113         X3DObject&                  io_3dobj
    01114     );
    01115
    01124     CStatus AddNurbsCurveList
    01125     (
    01126         const CNurbsCurveDataArray& in_curveDataArray,
    01127         siNurbsFormat               in_nurbsFormat,
    01128         const CString&              in_name,
    01129         X3DObject&                  io_3dobj
    01130     );
    01131
    01153     CStatus AddNurbsSurface
    01154     (
    01155         const CNurbsSurfaceData&    in_surfaceData,
    01156         siNurbsFormat               in_nurbsFormat,
    01157         const CString&              in_name,
    01158         X3DObject&                  io_3dobj
    01159     );
    01160
    01169     CStatus AddNurbsSurfaceMesh
    01170     (
    01171         const CNurbsSurfaceDataArray&   in_surfaceDataArray,
    01172         siNurbsFormat                   in_nurbsFormat,
    01173         const CString&                  in_name,
    01174         X3DObject&                      io_3dobj
    01175     );
    01176
    01189     CStatus AddParticleCloud
    01190     (
    01191         const CRefArray&                in_parTypes,
    01192         const CString&                  in_name,
    01193         ParticleCloud&                  out_particlecloud
    01194     );
    01195
    01202     MATH::CVector3 GetLocalScaling()const;
    01203
    01211     CStatus PutLocalScaling(MATH::CVector3 in_scaling);
    01212
    01213
    01220     MATH::CRotation GetLocalRotation()const;
    01221
    01229     CStatus PutLocalRotation(MATH::CRotation in_rotation);
    01230
    01237     MATH::CVector3 GetLocalTranslation()const;
    01238
    01246     CStatus PutLocalTranslation(MATH::CVector3 in_translation);
    01247
    01253     CRigidBodyAccessor GetRigidBodyAccessor( ) const;
    01254
    01260     CRigidConstraintAccessor GetRigidConstraintAccessor( ) const;
    01261
    01286     CStatus GetBoundingBox
    01287     (
    01288        double &                         out_minX,
    01289        double &                         out_minY,
    01290        double &                         out_minZ,
    01291        double &                         out_maxX,
    01292        double &                         out_maxY,
    01293        double &                         out_maxZ,
    01294        const MATH::CTransformation &    in_XfoObjectToBBoxSpace = MATH::CTransformation(),
    01295        bool                             in_bRecursive = false
    01296     ) const;
    01297
    01311     Annotation AddAnnotation( const CString& in_text, const CString& in_name = CString() ) ;
    01312
    01313     private:
    01314     X3DObject * operator&() const;
    01315     X3DObject * operator&();
    01316 };
    01317
    01318 };
    01319
    01320 #endif // __XSIX3DOBJECT_H__