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_status.h>
00023
00024 #ifdef _MSC_VER
00025 #pragma warning(disable:4251)
00026 #endif
00027
00028 namespace XSI {
00029
00030 class FCurve;
00031 class Expression ;
00032 class Parameter;
00033 class Model;
00034 class X3DObject;
00035
00036
00066
00067 class SICPPSDKDECL CParameterRefArray : public CRefArray
00068 {
00069 public:
00070
00072 CParameterRefArray();
00073
00077 CParameterRefArray( const CParameterRefArray& );
00078
00080 ~CParameterRefArray();
00081
00086 CParameterRefArray& operator=( const CParameterRefArray& in_refArray );
00087
00096 CRef GetItem( const CString& in_scriptname ) const;
00097
00104 void Add( const CRef& in_item );
00105
00112 void RemoveItem( const CString& in_scriptname );
00113
00139 CRefArray PlotAnimation(
00140 double in_startFrame=DBL_MAX,
00141 double in_stopFrame=DBL_MAX,
00142 double in_stepFrame=1,
00143 siFCurveType in_fcurveTypeToPlot=siStandardFCurve,
00144 siFCurveInterpolation in_interpolation=siCubicInterpolation,
00145 bool in_bFitValues=false,
00146 double in_fitTolerance=0.01,
00147 bool in_bProcessRotation=false,
00148 bool in_bDisplayProgressBar=true );
00149
00159 CValue GetValue( const CString& in_scriptname, double in_time=DBL_MAX ) const;
00160
00172 CValue GetValue( LONG in_index, double in_time=DBL_MAX ) const;
00173
00192 CStatus PutValue( const CString& in_scriptname, const CValue& in_val, double in_time=DBL_MAX );
00193
00212 CStatus PutValue( LONG in_index, const CValue& in_val, double in_time=DBL_MAX );
00213
00214 private:
00215 void* m_pIndices;
00216 };
00217
00218
00247
00248
00249 class SICPPSDKDECL Parameter : public SIObject
00250 {
00251 public:
00253 Parameter();
00254
00256 ~Parameter();
00257
00261 Parameter(const CRef& in_ref);
00262
00266 Parameter(const Parameter& in_obj);
00267
00273 bool IsA( siClassID in_ClassID) const;
00274
00278 siClassID GetClassID() const;
00279
00284 Parameter& operator=(const Parameter& in_obj);
00285
00291 Parameter& operator=(const CRef& in_ref);
00292
00296 LONG GetCapabilities() const;
00297
00307 CStatus PutCapabilityFlag( siCapabilities in_flag, bool in_bEnable ) ;
00308
00309
00313 bool GetMarked() const;
00314
00338 CStatus PutMarked( bool in_bVal );
00339
00355 CParameterRefArray& GetParameters() const;
00356
00363 Parameter GetParameter( const CString& in_scriptname ) const;
00364
00371 CValue GetValue(double in_time=DBL_MAX) const;
00372
00391 CStatus PutValue(const CValue& in_val, double in_time=DBL_MAX );
00392
00396 CString GetScriptName() const;
00397
00402 CString GetDescription() const;
00403
00410 CValue::DataType GetValueType() const;
00411
00417 CValue GetMin() const;
00418
00424 CValue GetMax() const;
00425
00438 CValue GetSuggestedMin() const;
00439
00452 CValue GetSuggestedMax() const;
00453
00458 CValue GetDefault() const;
00459
00465 CRef GetSource() const;
00466
00475 CRefArray GetSources() const;
00476
00477
00487 CStatus PutSource( const CRef& in_source );
00488
00495 CStatus AddFCurve
00496 (
00497 siFCurveType in_Type,
00498 FCurve& io_FCurve
00499 );
00500
00501
00508 Expression AddExpression
00509 (
00510 CString& in_ExpressionDefinition
00511 );
00512
00513
00525 CStatus ConnectFromPreset
00526 (
00527 const CString& in_strName,
00528 const CString& in_strFamily,
00529 CRef& io_prevSource,
00530 CRef& io_source
00531 );
00532
00547 CStatus ConnectFromPreset
00548 (
00549 const CString& in_strName,
00550 const CString& in_strFamily,
00551 const CString& in_strSourceName,
00552 CRef& io_prevSource,
00553 CRef& io_source
00554 );
00555
00566 CStatus ConnectFromFile
00567 (
00568 const CString& in_strName,
00569 CRef& io_prevSource,
00570 CRef& io_source
00571 );
00572
00586 CStatus ConnectFromFile
00587 (
00588 const CString& in_strName,
00589 const CString& in_strSourceName,
00590 CRef& io_prevSource,
00591 CRef& io_source
00592 );
00593
00603 CStatus ConnectFromProgID
00604 (
00605 const CString& in_strName,
00606 CRef& io_prevSource,
00607 CRef& io_source
00608 );
00609
00622 CStatus ConnectFromProgID
00623 (
00624 const CString& in_strName,
00625 const CString& in_strSourceName,
00626 CRef& io_prevSource,
00627 CRef& io_source
00628 );
00629
00637 CStatus Connect
00638 (
00639 const CRef& in_source,
00640 CRef& io_prevSource
00641 );
00642
00648 CStatus Disconnect();
00649
00655 CStatus Disconnect( CRef& io_prevSource );
00656
00674 CStatus PutParameterValue
00675 (
00676 const CString& in_scriptname,
00677 bool in_val,
00678 double in_time = DBL_MAX
00679 );
00680
00683 CStatus PutParameterValue
00684 (
00685 const CString& in_scriptname,
00686 double in_val,
00687 double in_time = DBL_MAX
00688 );
00689
00692 CStatus PutParameterValue
00693 (
00694 const CString& in_scriptname,
00695 float in_val,
00696 double in_time = DBL_MAX
00697 );
00700 CStatus PutParameterValue
00701 (
00702 const CString& in_scriptname,
00703 short in_val,
00704 double in_time = DBL_MAX
00705 );
00706
00709 CStatus PutParameterValue
00710 (
00711 const CString& in_scriptname,
00712 LONG in_val,
00713 double in_time = DBL_MAX
00714 );
00715
00720 CStatus PutParameterValue
00721 (
00722 const CString& in_scriptname,
00723 LLONG in_val,
00724 double in_time = DBL_MAX
00725 );
00726
00727
00730 CStatus PutParameterValue
00731 (
00732 const CString& in_scriptname,
00733 const CValue& in_val,
00734 double in_time = DBL_MAX
00735 );
00736
00739 CStatus PutParameterValue
00740 (
00741 const CString& in_scriptname,
00742 const CRef& in_val,
00743 double in_time = DBL_MAX
00744 );
00745
00748 CStatus PutParameterValue
00749 (
00750 const CString& in_scriptname,
00751 const CString& in_val,
00752 double in_time = DBL_MAX
00753 );
00754
00766 CValue GetParameterValue
00767 (
00768 const CString& in_name,
00769 double in_time=DBL_MAX
00770 ) const;
00771
00800 bool IsAnimated
00801 (
00802 siSourceType in_sourceType = siAnySource
00803 ) const;
00804
00834 CRefArray GetAnimatedParameters(
00835 siSourceType in_sourceType = siAnySource) const;
00836
00842 siLockType GetLockType();
00848 siLockLevel GetLockLevel();
00854 bool IsLocked();
00855
00861 CStatus SetLock(siLockLevel in_level=siLockLevelAll);
00862
00869 CStatus UnSetLock(siLockLevel in_level=siLockLevelAll, const CString&in_password=CString() );
00870
00882 siTags GetTags();
00883
00897 CStatus PutTags( siTags in_eVal );
00898
00919 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 );
00920
00942 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 );
00943
00955 CRef AddCustomOp( const CString& in_type, const CRefArray& in_inputs = CRefArray(), const CString& in_name=L"", CStatus* io_pst = 0 );
00956
00962 X3DObject GetParent3DObject() const;
00963
00970 Model GetModel() const;
00971
00987 bool HasInstanceValue() const;
00988
01010 bool IsSupportedInstanceValue(const CRef& in_obj, const CValue& in_val ) const;
01011
01029 CValue GetInstanceValue(const CRef& in_obj, bool in_bindtobject = false ) const;
01030
01059 CStatus PutInstanceValue(const CRef& in_obj, const CValue& in_val, bool in_bindtovalidate = false);
01060
01107 Parameter GetOverridingObject() const;
01108
01166 Parameter GetOverridenObject() const;
01167
01189 CValue GetOriginalValue(double in_time=DBL_MAX) const;
01190
01191 protected:
01192 mutable CParameterRefArray m_paramArray;
01193
01194 private:
01195 Parameter * operator&() const;
01196 Parameter * operator&();
01197 };
01198
01199 };
01200 #endif // __XSIPARAMETER_H__