00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CS_IVARIA_ENGSEQ_H__
00020 #define __CS_IVARIA_ENGSEQ_H__
00021
00022 #include "csutil/scf.h"
00023
00024 struct iSequence;
00025 struct iSequenceManager;
00026 struct iSequenceTrigger;
00027 struct iSequenceWrapper;
00028 struct iMaterialWrapper;
00029 struct iSector;
00030 struct iMeshWrapper;
00031 struct iPolygon3D;
00032 struct iObject;
00033 struct iLight;
00034 struct iCamera;
00035 class csColor;
00036 class csReversibleTransform;
00037 class csVector3;
00038 class csBox3;
00039 class csSphere;
00040 struct iSharedVariable;
00041
00042 SCF_VERSION (iParameterESM, 0, 0, 1);
00043
00060 struct iParameterESM : public iBase
00061 {
00067 virtual iBase* GetValue (iBase* params = NULL) const = 0;
00068
00076 virtual bool IsConstant () const = 0;
00077 };
00078
00079 SCF_VERSION (iEngineSequenceParameters, 0, 0, 2);
00080
00093 struct iEngineSequenceParameters : public iBase
00094 {
00098 virtual int GetParameterCount () const = 0;
00099
00103 virtual iBase* GetParameter (int idx) const = 0;
00104
00108 virtual iBase* GetParameter (const char* name) const = 0;
00109
00113 virtual int GetParameterIdx (const char* name) const = 0;
00114
00118 virtual const char* GetParameterName (int idx) const = 0;
00119
00125 virtual void AddParameter (const char* name, iBase* def_value = NULL) = 0;
00126
00130 virtual void SetParameter (int idx, iBase* value) = 0;
00131
00135 virtual void SetParameter (const char* name, iBase* value) = 0;
00136
00143 virtual csPtr<iParameterESM> CreateParameterESM (const char* name) = 0;
00144 };
00145
00146 SCF_VERSION (iSequenceWrapper, 0, 2, 0);
00147
00159 struct iSequenceWrapper : public iBase
00160 {
00164 virtual iObject* QueryObject () = 0;
00165
00173 virtual iSequence* GetSequence () = 0;
00174
00182 virtual iEngineSequenceParameters* CreateBaseParameterBlock () = 0;
00183
00188 virtual iEngineSequenceParameters* GetBaseParameterBlock () = 0;
00189
00201 virtual csPtr<iEngineSequenceParameters> CreateParameterBlock () = 0;
00202
00206 virtual void AddOperationSetMaterial (csTicks time, iParameterESM* mesh,
00207 iParameterESM* mat) = 0;
00208
00212 virtual void AddOperationSetPolygonMaterial (csTicks time,
00213 iParameterESM* polygon, iParameterESM* mat) = 0;
00214
00218 virtual void AddOperationSetLight (csTicks time, iParameterESM* light,
00219 const csColor& color) = 0;
00220
00224 virtual void AddOperationFadeLight (csTicks time, iParameterESM* light,
00225 const csColor& color, csTicks duration) = 0;
00226
00230 virtual void AddOperationSetAmbient (csTicks time, iParameterESM* light,
00231 const csColor& color,iSharedVariable *colorvar) = 0;
00232
00236 virtual void AddOperationFadeAmbient (csTicks time, iParameterESM* light,
00237 const csColor& color, csTicks duration) = 0;
00238
00243 virtual void AddOperationRandomDelay(csTicks time,int min, int max) = 0;
00244
00248 virtual void AddOperationSetMeshColor (csTicks time, iParameterESM* mesh,
00249 const csColor& color) = 0;
00250
00254 virtual void AddOperationFadeMeshColor (csTicks time, iParameterESM* mesh,
00255 const csColor& color, csTicks duration) = 0;
00256
00260 virtual void AddOperationSetFog (csTicks time, iParameterESM* sector,
00261 const csColor& color, float density) = 0;
00262
00266 virtual void AddOperationFadeFog (csTicks time, iParameterESM* sector,
00267 const csColor& color, float density, csTicks duration) = 0;
00268
00274 virtual void AddOperationRotateDuration (csTicks time, iParameterESM* mesh,
00275 int axis1, float tot_angle1,
00276 int axis2, float tot_angle2,
00277 int axis3, float tot_angle3,
00278 const csVector3& offset,
00279 csTicks duration) = 0;
00280
00285 virtual void AddOperationMoveDuration (csTicks time, iParameterESM* mesh,
00286 const csVector3& offset, csTicks duration) = 0;
00287
00291 virtual void AddOperationTriggerState (csTicks time,
00292 iParameterESM* trigger, bool en) = 0;
00293
00299 virtual void AddOperationCheckTrigger (csTicks time,
00300 iParameterESM* trigger, csTicks delay) = 0;
00301
00308 virtual void AddOperationTestTrigger (csTicks time,
00309 iParameterESM* trigger,
00310 iSequence* trueSequence,
00311 iSequence* falseSequence) = 0;
00312 };
00313
00314 SCF_VERSION (iSequenceTrigger, 0, 0, 3);
00315
00321 struct iSequenceTrigger : public iBase
00322 {
00326 virtual iObject* QueryObject () = 0;
00327
00331 virtual void AddConditionInSector (iSector* sector) = 0;
00332
00336 virtual void AddConditionInSector (iSector* sector,
00337 const csBox3& box) = 0;
00338
00342 virtual void AddConditionInSector (iSector* sector,
00343 const csSphere& sphere) = 0;
00344
00348 virtual void AddConditionSectorVisible (iSector* sector) = 0;
00349
00353 virtual void AddConditionMeshClick (iMeshWrapper* mesh) = 0;
00354
00361 virtual void AddConditionLightChange (iLight *whichlight,
00362 int oper, const csColor& col) = 0;
00363
00369 virtual void AddConditionManual () = 0;
00370
00375 virtual void SetEnabled (bool en) = 0;
00376
00380 virtual bool IsEnabled () const = 0;
00381
00385 virtual void ClearConditions () = 0;
00386
00390 virtual void Trigger () = 0;
00391
00395 virtual void SetParameters (iEngineSequenceParameters* params) = 0;
00396
00400 virtual iEngineSequenceParameters* GetParameters () const = 0;
00401
00406 virtual void FireSequence (csTicks delay, iSequenceWrapper* seq) = 0;
00407
00411 virtual iSequenceWrapper* GetFiredSequence () = 0;
00412
00418 virtual void TestConditions (csTicks delay) = 0;
00419
00427 virtual bool CheckState () = 0;
00428
00444 virtual void ForceFire (bool now = false) = 0;
00445 };
00446
00447 SCF_VERSION (iSequenceTimedOperation, 0, 0, 1);
00448
00458 struct iSequenceTimedOperation : public iBase
00459 {
00463 virtual void Do (float time, iBase* params) = 0;
00464 };
00465
00466 SCF_VERSION (iEngineSequenceManager, 0, 0, 3);
00467
00472 struct iEngineSequenceManager : public iBase
00473 {
00478 virtual iSequenceManager* GetSequenceManager () = 0;
00479
00485 virtual void SetCamera (iCamera* camera) = 0;
00486
00490 virtual iCamera* GetCamera () = 0;
00491
00495 virtual csPtr<iParameterESM> CreateParameterESM (iBase* value) = 0;
00496
00497
00498
00502 virtual csPtr<iSequenceTrigger> CreateTrigger (const char* name) = 0;
00503
00507 virtual void RemoveTrigger (iSequenceTrigger* trigger) = 0;
00508
00512 virtual void RemoveTriggers () = 0;
00513
00517 virtual int GetTriggerCount () const = 0;
00518
00522 virtual iSequenceTrigger* GetTrigger (int idx) const = 0;
00523
00527 virtual iSequenceTrigger* FindTriggerByName (const char* name) const = 0;
00528
00535 virtual bool FireTriggerByName (const char *name, bool now = false) const = 0;
00536
00537
00538
00542 virtual csPtr<iSequenceWrapper> CreateSequence (const char* name) = 0;
00543
00547 virtual void RemoveSequence (iSequenceWrapper* seq) = 0;
00548
00552 virtual void RemoveSequences () = 0;
00553
00557 virtual int GetSequenceCount () const = 0;
00558
00562 virtual iSequenceWrapper* GetSequence (int idx) const = 0;
00563
00567 virtual iSequenceWrapper* FindSequenceByName (const char* name) const = 0;
00568
00572 virtual bool RunSequenceByName (const char *name,int delay) const = 0;
00573
00574
00575
00583 virtual void FireTimedOperation (csTicks delta, csTicks duration,
00584 iSequenceTimedOperation* op, iBase* params = NULL) = 0;
00585
00586
00587 };
00588
00589 #endif // __CS_IVARIA_ENGSEQ_H__
00590