00001
00011
00012
00013 #if (_MSC_VER > 1000) || defined(SGI_COMPILER)
00014 #pragma once
00015 #endif
00016
00017 #ifndef __XSIPARAMETER_H__
00018 #define __XSIPARAMETER_H__
00019
00020 #include <xsi_siobject.h>
00021 #include <xsi_value.h>
00022 #include <xsi_doublearray.h>
00023 #include <xsi_status.h>
00024
00025 #ifdef _MSC_VER
00026 #pragma warning(disable:4251)
00027 #endif
00028
00029 namespace XSI {
00030
00031 class CDoubleArray;
00032 class CLongArray;
00033 class FCurve;
00034 class Expression ;
00035 class Parameter;
00036 class Model;
00037 class X3DObject;
00038
00039
00069
00070 class SICPPSDKDECL CParameterRefArray : public CRefArray
00071 {
00072 public:
00073
00075 CParameterRefArray();
00076
00080 CParameterRefArray( const CParameterRefArray& );
00081
00083 ~CParameterRefArray();
00084
00089 CParameterRefArray& operator=( const CParameterRefArray& in_refArray );
00090
00099 CRef GetItem( const CString& in_scriptname ) const;
00100
00107 void Add( const CRef& in_item );
00108
00115 void RemoveItem( const CString& in_scriptname );
00116
00142 CRefArray PlotAnimation(
00143 double in_startFrame=DBL_MAX,
00144 double in_stopFrame=DBL_MAX,
00145 double in_stepFrame=1,
00146 siFCurveType in_fcurveTypeToPlot=siStandardFCurve,
00147 siFCurveInterpolation in_interpolation=siCubicInterpolation,
00148 bool in_bFitValues=false,
00149 double in_fitTolerance=0.01,
00150 bool in_bProcessRotation=false,
00151 bool in_bDisplayProgressBar=true );
00152
00249 CStatus PlotAnimation(
00250 double in_startFrame,
00251 double in_stopFrame,
00252 double in_stepFrame,
00253 bool in_bProcessRotation,
00254 bool in_bDisplayProgressBar,
00255 CLongArray& out_startParamValuesIndicesArray,
00256 CDoubleArray& out_plottedFramesArray,
00257 CDoubleArray& out_plottedValuesArray
00258 );
00259
00285 CRefArray PlotAnimation(
00286 double in_startFrame,
00287 double in_stepFrame,
00288 const CDoubleArray& in_frameset,
00289 siFCurveType in_fcurveTypeToPlot=siStandardFCurve,
00290 siFCurveInterpolation in_interpolation=siCubicInterpolation,
00291 bool in_bFitValues=false,
00292 double in_fitTolerance=0.01,
00293 bool in_bProcessRotation=false,
00294 bool in_bDisplayProgressBar=true );
00295
00320 CStatus PlotAnimation(
00321 double in_startFrame,
00322 double in_stepFrame,
00323 const CDoubleArray& in_frameset,
00324 bool in_bProcessRotation,
00325 bool in_bDisplayProgressBar,
00326 CLongArray& out_startParamValuesIndicesArray,
00327 CDoubleArray& out_plottedFramesArray,
00328 CDoubleArray& out_plottedValuesArray
00329 );
00330
00340 CValue GetValue( const CString& in_scriptname, double in_time=DBL_MAX ) const;
00341
00353 CValue GetValue( LONG in_index, double in_time=DBL_MAX ) const;
00354
00373 CStatus PutValue( const CString& in_scriptname, const CValue& in_val, double in_time=DBL_MAX );
00374
00393 CStatus PutValue( LONG in_index, const CValue& in_val, double in_time=DBL_MAX );
00394
00395 private:
00396 void* m_pIndices;
00397 };
00398
00399
00428
00429
00430 class SICPPSDKDECL Parameter : public SIObject
00431 {
00432 public:
00434 Parameter();
00435
00437 ~Parameter();
00438
00442 Parameter(const CRef& in_ref);
00443
00447 Parameter(const Parameter& in_obj);
00448
00454 bool IsA( siClassID in_ClassID) const;
00455
00459 siClassID GetClassID() const;
00460
00465 Parameter& operator=(const Parameter& in_obj);
00466
00472 Parameter& operator=(const CRef& in_ref);
00473
00477 LONG GetCapabilities() const;
00478
00488 CStatus PutCapabilityFlag( siCapabilities in_flag, bool in_bEnable ) ;
00489
00490
00494 bool GetMarked() const;
00495
00519 CStatus PutMarked( bool in_bVal );
00520
00536 CParameterRefArray& GetParameters() const;
00537
00544 Parameter GetParameter( const CString& in_scriptname ) const;
00545
00552 CValue GetValue(double in_time=DBL_MAX) const;
00553
00572 CStatus PutValue(const CValue& in_val, double in_time=DBL_MAX );
00573
00577 CString GetScriptName() const;
00578
00583 CString GetDescription() const;
00584
00591 CValue::DataType GetValueType() const;
00592
00598 CValue GetMin() const;
00599
00605 CValue GetMax() const;
00606
00619 CValue GetSuggestedMin() const;
00620
00633 CValue GetSuggestedMax() const;
00634
00639 CValue GetDefault() const;
00640
00646 CRef GetSource() const;
00647
00656 CRefArray GetSources() const;
00657
00658
00668 CStatus PutSource( const CRef& in_source );
00669
00676 CStatus AddFCurve
00677 (
00678 siFCurveType in_Type,
00679 FCurve& io_FCurve
00680 );
00681
00682
00689 Expression AddExpression
00690 (
00691 CString& in_ExpressionDefinition
00692 );
00693
00694
00706 CStatus ConnectFromPreset
00707 (
00708 const CString& in_strName,
00709 const CString& in_strFamily,
00710 CRef& io_prevSource,
00711 CRef& io_source
00712 );
00713
00728 CStatus ConnectFromPreset
00729 (
00730 const CString& in_strName,
00731 const CString& in_strFamily,
00732 const CString& in_strSourceName,
00733 CRef& io_prevSource,
00734 CRef& io_source
00735 );
00736
00747 CStatus ConnectFromFile
00748 (
00749 const CString& in_strName,
00750 CRef& io_prevSource,
00751 CRef& io_source
00752 );
00753
00767 CStatus ConnectFromFile
00768 (
00769 const CString& in_strName,
00770 const CString& in_strSourceName,
00771 CRef& io_prevSource,
00772 CRef& io_source
00773 );
00774
00784 CStatus ConnectFromProgID
00785 (
00786 const CString& in_strName,
00787 CRef& io_prevSource,
00788 CRef& io_source
00789 );
00790
00803 CStatus ConnectFromProgID
00804 (
00805 const CString& in_strName,
00806 const CString& in_strSourceName,
00807 CRef& io_prevSource,
00808 CRef& io_source
00809 );
00810
00818 CStatus Connect
00819 (
00820 const CRef& in_source,
00821 CRef& io_prevSource
00822 );
00823
00829 CStatus Disconnect();
00830
00836 CStatus Disconnect( CRef& io_prevSource );
00837
00855 CStatus PutParameterValue
00856 (
00857 const CString& in_scriptname,
00858 bool in_val,
00859 double in_time = DBL_MAX
00860 );
00861
00864 CStatus PutParameterValue
00865 (
00866 const CString& in_scriptname,
00867 double in_val,
00868 double in_time = DBL_MAX
00869 );
00870
00873 CStatus PutParameterValue
00874 (
00875 const CString& in_scriptname,
00876 float in_val,
00877 double in_time = DBL_MAX
00878 );
00881 CStatus PutParameterValue
00882 (
00883 const CString& in_scriptname,
00884 short in_val,
00885 double in_time = DBL_MAX
00886 );
00887
00890 CStatus PutParameterValue
00891 (
00892 const CString& in_scriptname,
00893 LONG in_val,
00894 double in_time = DBL_MAX
00895 );
00896
00901 CStatus PutParameterValue
00902 (
00903 const CString& in_scriptname,
00904 LLONG in_val,
00905 double in_time = DBL_MAX
00906 );
00907
00908
00911 CStatus PutParameterValue
00912 (
00913 const CString& in_scriptname,
00914 const CValue& in_val,
00915 double in_time = DBL_MAX
00916 );
00917
00920 CStatus PutParameterValue
00921 (
00922 const CString& in_scriptname,
00923 const CRef& in_val,
00924 double in_time = DBL_MAX
00925 );
00926
00929 CStatus PutParameterValue
00930 (
00931 const CString& in_scriptname,
00932 const CString& in_val,
00933 double in_time = DBL_MAX
00934 );
00935
00947 CValue GetParameterValue
00948 (
00949 const CString& in_name,
00950 double in_time=DBL_MAX
00951 ) const;
00952
00981 bool IsAnimated
00982 (
00983 siSourceType in_sourceType = siAnySource
00984 ) const;
00985
01015 CRefArray GetAnimatedParameters(
01016 siSourceType in_sourceType = siAnySource) const;
01017
01023 siLockType GetLockType();
01029 siLockLevel GetLockLevel();
01035 bool IsLocked();
01036
01042 CStatus SetLock(siLockLevel in_level=siLockLevelAll);
01043
01050 CStatus UnSetLock(siLockLevel in_level=siLockLevelAll, const CString&in_password=CString() );
01051
01063 siTags GetTags();
01064
01078 CStatus PutTags( siTags in_eVal );
01079
01100 CRef AddScriptedOp( const CString& in_code=L"", const CRefArray& in_inputs = CRefArray(), const CString& in_name=L"", const CString& in_language=L"", CStatus* io_pst = 0 );
01101
01123 CRef AddScriptedOpFromFile( const CString& in_filename = L"", const CRefArray& in_inputs = CRefArray(), const CString& in_name = L"", const CString& in_language = L"", CStatus* io_pst = 0 );
01124
01136 CRef AddCustomOp( const CString& in_type, const CRefArray& in_inputs = CRefArray(), const CString& in_name=L"", CStatus* io_pst = 0 );
01137
01143 X3DObject GetParent3DObject() const;
01144
01151 Model GetModel() const;
01152
01168 bool HasInstanceValue() const;
01169
01191 bool IsSupportedInstanceValue(const CRef& in_obj, const CValue& in_val ) const;
01192
01210 CValue GetInstanceValue(const CRef& in_obj, bool in_bindtobject = false ) const;
01211
01240 CStatus PutInstanceValue(const CRef& in_obj, const CValue& in_val, bool in_bindtovalidate = false);
01241
01288 Parameter GetOverridingObject() const;
01289
01347 Parameter GetOverridenObject() const;
01348
01370 CValue GetOriginalValue(double in_time=DBL_MAX) const;
01371
01372 protected:
01373 mutable CParameterRefArray m_paramArray;
01374
01375 private:
01376 Parameter * operator&() const;
01377 Parameter * operator&();
01378 };
01379
01380 };
01381 #endif // __XSIPARAMETER_H__