IPFIntegrator.h

Go to the documentation of this file.
00001 
00011 /**********************************************************************
00012  *<
00013     CREATED BY: Oleg Bayborodin
00014 
00015     HISTORY: created 10-12-01
00016 
00017  *> Copyright (c) 2001, All Rights Reserved.
00018  **********************************************************************/
00019 
00020 #pragma once
00021 
00022 #include "PFExport.h"
00023 #include "PreciseTimeValue.h"
00024 #include "..\ifnpub.h"
00025 
00026 // interface ID
00027 #define PFINTEGRATOR_INTERFACE Interface_ID(0x74f93d03, 0x1eb34500) 
00028 
00029 #define GetPFIntegratorInterface(obj) ((IPFIntegrator*)obj->GetInterface(PFINTEGRATOR_INTERFACE)) 
00030 
00031 // function IDs
00032 enum {  kPFIntegrator_proceedSync,
00033         kPFIntegrator_proceedASync
00034 }; 
00035 
00036 class IPFIntegrator : public FPMixinInterface
00037 {
00038 
00039 BEGIN_FUNCTION_MAP
00040 FN_5(kPFIntegrator_proceedSync, TYPE_bool, ProceedSync, TYPE_IOBJECT, TYPE_TIMEVALUE, TYPE_FLOAT, TYPE_bool, TYPE_BITARRAY);
00041 FN_5(kPFIntegrator_proceedASync, TYPE_bool, ProceedASync, TYPE_IOBJECT, TYPE_TIMEVALUE_TAB, TYPE_FLOAT_TAB, TYPE_bool, TYPE_BITARRAY);
00042 
00043 END_FUNCTION_MAP
00044 
00045 public:
00046 
00066     virtual bool    Proceed(IObject* pCont, PreciseTimeValue time, int index) = 0;
00067 
00071     virtual bool    Proceed(IObject* pCont, PreciseTimeValue time) = 0;
00072 
00076     virtual bool    Proceed(IObject* pCont, Tab<PreciseTimeValue>& times) = 0;
00077 
00081     virtual bool    Proceed(IObject* pCont, PreciseTimeValue time, BitArray& selected) = 0;
00082 
00086     virtual bool    Proceed(IObject* pCont, Tab<PreciseTimeValue>& times, BitArray& selected) = 0;
00087 
00101     PFExport bool ProceedSync(IObject* pCont, TimeValue timeTick, float timeFraction,
00102                                 bool isSelected, BitArray* selected);
00103 
00117     PFExport bool ProceedASync(IObject* pCont, Tab<TimeValue> *timeTicks, Tab<float> *timeFractions,
00118                                 bool isSelected, BitArray* selected);
00119 
00126     virtual IPFIntegrator* GetEncapsulatedIntegrator() { return NULL; }
00127 
00132     PFExport bool HasEncapsulatedIntegrator(IPFIntegrator* integrator);
00133 
00137     FPInterfaceDesc* GetDesc() { return GetDescByID(PFINTEGRATOR_INTERFACE); }
00138 
00142     friend PFExport IPFIntegrator* GetPFIntegrator();
00143 
00147     friend PFExport void ReleasePFIntegrator(IPFIntegrator*);
00148 
00149 protected:
00150     static Tab<IObject*> m_objs;
00151 };
00152 // this method gets a system PF Integrator interface
00153 PFExport IPFIntegrator* GetPFIntegrator();
00154 // when the developer is done with the PFIntegrator interface acquired via GetPFIntegrator() 
00155 // they should call this method to release it.
00156 PFExport void ReleasePFIntegrator(IPFIntegrator* integrator);
00157 
00158