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 = 0) 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 = 0) = 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, 3, 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
00208 virtual void AddOperationSetVariable (csTicks time,
00209 iSharedVariable* var, float value, float dvalue = 0) = 0;
00210
00218 virtual void AddOperationSetVariable (csTicks time,
00219 iSharedVariable* var, iSharedVariable* value,
00220 iSharedVariable* dvalue = 0) = 0;
00221
00225 virtual void AddOperationSetVariable (csTicks time,
00226 iSharedVariable* var, const csVector3& v) = 0;
00227
00231 virtual void AddOperationSetVariable (csTicks time,
00232 iSharedVariable* var, const csColor& c) = 0;
00233
00237 virtual void AddOperationSetMaterial (csTicks time, iParameterESM* mesh,
00238 iParameterESM* mat) = 0;
00239
00243 virtual void AddOperationSetPolygonMaterial (csTicks time,
00244 iParameterESM* polygon, iParameterESM* mat) = 0;
00245
00249 virtual void AddOperationSetLight (csTicks time, iParameterESM* light,
00250 const csColor& color) = 0;
00251
00255 virtual void AddOperationFadeLight (csTicks time, iParameterESM* light,
00256 const csColor& color, csTicks duration) = 0;
00257
00261 virtual void AddOperationSetAmbient (csTicks time, iParameterESM* light,
00262 const csColor& color, iSharedVariable *colorvar) = 0;
00263
00267 virtual void AddOperationFadeAmbient (csTicks time, iParameterESM* light,
00268 const csColor& color, csTicks duration) = 0;
00269
00274 virtual void AddOperationRandomDelay(csTicks time,int min, int max) = 0;
00275
00279 virtual void AddOperationSetMeshColor (csTicks time, iParameterESM* mesh,
00280 const csColor& color) = 0;
00281
00285 virtual void AddOperationFadeMeshColor (csTicks time, iParameterESM* mesh,
00286 const csColor& color, csTicks duration) = 0;
00287
00291 virtual void AddOperationSetFog (csTicks time, iParameterESM* sector,
00292 const csColor& color, float density) = 0;
00293
00297 virtual void AddOperationFadeFog (csTicks time, iParameterESM* sector,
00298 const csColor& color, float density, csTicks duration) = 0;
00299
00305 virtual void AddOperationRotateDuration (csTicks time, iParameterESM* mesh,
00306 int axis1, float tot_angle1,
00307 int axis2, float tot_angle2,
00308 int axis3, float tot_angle3,
00309 const csVector3& offset,
00310 csTicks duration) = 0;
00311
00316 virtual void AddOperationMoveDuration (csTicks time, iParameterESM* mesh,
00317 const csVector3& offset, csTicks duration) = 0;
00318
00322 virtual void AddOperationTriggerState (csTicks time,
00323 iParameterESM* trigger, bool en) = 0;
00324
00330 virtual void AddOperationCheckTrigger (csTicks time,
00331 iParameterESM* trigger, csTicks delay) = 0;
00332
00339 virtual void AddOperationTestTrigger (csTicks time,
00340 iParameterESM* trigger,
00341 iSequence* trueSequence,
00342 iSequence* falseSequence) = 0;
00343 };
00344
00345 SCF_VERSION (iSequenceTrigger, 0, 0, 3);
00346
00352 struct iSequenceTrigger : public iBase
00353 {
00357 virtual iObject* QueryObject () = 0;
00358
00362 virtual void AddConditionInSector (iSector* sector) = 0;
00363
00367 virtual void AddConditionInSector (iSector* sector,
00368 const csBox3& box) = 0;
00369
00373 virtual void AddConditionInSector (iSector* sector,
00374 const csSphere& sphere) = 0;
00375
00379 virtual void AddConditionSectorVisible (iSector* sector) = 0;
00380
00384 virtual void AddConditionMeshClick (iMeshWrapper* mesh) = 0;
00385
00392 virtual void AddConditionLightChange (iLight *whichlight,
00393 int oper, const csColor& col) = 0;
00394
00400 virtual void AddConditionManual () = 0;
00401
00406 virtual void SetEnabled (bool en) = 0;
00407
00411 virtual bool IsEnabled () const = 0;
00412
00416 virtual void ClearConditions () = 0;
00417
00421 virtual void Trigger () = 0;
00422
00426 virtual void SetParameters (iEngineSequenceParameters* params) = 0;
00427
00431 virtual iEngineSequenceParameters* GetParameters () const = 0;
00432
00439 virtual void FireSequence (csTicks delay, iSequenceWrapper* seq) = 0;
00440
00444 virtual iSequenceWrapper* GetFiredSequence () = 0;
00445
00451 virtual void TestConditions (csTicks delay) = 0;
00452
00460 virtual bool CheckState () = 0;
00461
00477 virtual void ForceFire (bool now = false) = 0;
00478 };
00479
00480 SCF_VERSION (iSequenceTimedOperation, 0, 0, 1);
00481
00491 struct iSequenceTimedOperation : public iBase
00492 {
00496 virtual void Do (float time, iBase* params) = 0;
00497 };
00498
00499 SCF_VERSION (iEngineSequenceManager, 0, 0, 3);
00500
00505 struct iEngineSequenceManager : public iBase
00506 {
00511 virtual iSequenceManager* GetSequenceManager () = 0;
00512
00518 virtual void SetCamera (iCamera* camera) = 0;
00519
00523 virtual iCamera* GetCamera () = 0;
00524
00528 virtual csPtr<iParameterESM> CreateParameterESM (iBase* value) = 0;
00529
00530
00531
00535 virtual csPtr<iSequenceTrigger> CreateTrigger (const char* name) = 0;
00536
00540 virtual void RemoveTrigger (iSequenceTrigger* trigger) = 0;
00541
00545 virtual void RemoveTriggers () = 0;
00546
00550 virtual int GetTriggerCount () const = 0;
00551
00555 virtual iSequenceTrigger* GetTrigger (int idx) const = 0;
00556
00560 virtual iSequenceTrigger* FindTriggerByName (const char* name) const = 0;
00561
00568 virtual bool FireTriggerByName (const char *name, bool now = false) const = 0;
00569
00570
00571
00575 virtual csPtr<iSequenceWrapper> CreateSequence (const char* name) = 0;
00576
00580 virtual void RemoveSequence (iSequenceWrapper* seq) = 0;
00581
00585 virtual void RemoveSequences () = 0;
00586
00590 virtual int GetSequenceCount () const = 0;
00591
00595 virtual iSequenceWrapper* GetSequence (int idx) const = 0;
00596
00600 virtual iSequenceWrapper* FindSequenceByName (const char* name) const = 0;
00601
00605 virtual bool RunSequenceByName (const char *name,int delay) const = 0;
00606
00607
00608
00616 virtual void FireTimedOperation (csTicks delta, csTicks duration,
00617 iSequenceTimedOperation* op, iBase* params = 0) = 0;
00618
00619
00620 };
00621
00622 #endif // __CS_IVARIA_ENGSEQ_H__
00623