CrystalSpace

Public API Reference

Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

engseq.h

Go to the documentation of this file.
00001 /*
00002     Copyright (C) 2002 by Jorrit Tyberghein
00003 
00004     This library is free software; you can redistribute it and/or
00005     modify it under the terms of the GNU Library General Public
00006     License as published by the Free Software Foundation; either
00007     version 2 of the License, or (at your option) any later version.
00008 
00009     This library is distributed in the hope that it will be useful,
00010     but WITHOUT ANY WARRANTY; without even the implied warranty of
00011     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012     Library General Public License for more details.
00013 
00014     You should have received a copy of the GNU Library General Public
00015     License along with this library; if not, write to the Free
00016     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00017 */
00018 
00019 #ifndef __CS_IVARIA_ENGSEQ_H__
00020 #define __CS_IVARIA_ENGSEQ_H__
00021 
00022 #include "csutil/scf.h"
00023 
00028 struct iCamera;
00029 struct iLight;
00030 struct iMeshWrapper;
00031 struct iObject;
00032 struct iSector;
00033 struct iSharedVariable;
00034 
00035 class csBox3;
00036 class csColor;
00037 class csSphere;
00038 class csVector3;
00039 
00040 struct iSequence;
00041 struct iSequenceManager;
00042 struct iSequenceTrigger;
00043 struct iSequenceWrapper;
00044 
00046 
00049 enum
00050 {
00052   CS_SEQUENCE_LIGHTCHANGE_NONE = 0,
00054   CS_SEQUENCE_LIGHTCHANGE_LESS = 1,
00056   CS_SEQUENCE_LIGHTCHANGE_GREATER = 2
00057 };
00059 
00060 SCF_VERSION (iParameterESM, 0, 0, 1);
00061 
00089 struct iParameterESM : public iBase
00090 {
00097   virtual iBase* GetValue (iBase* params = 0) const = 0;
00098 
00106   virtual bool IsConstant () const = 0;
00107 };
00108 
00109 SCF_VERSION (iEngineSequenceParameters, 0, 0, 2);
00110 
00138 struct iEngineSequenceParameters : public iBase
00139 {
00143   virtual size_t GetParameterCount () const = 0;
00144 
00148   virtual iBase* GetParameter (size_t idx) const = 0;
00149 
00153   virtual iBase* GetParameter (const char* name) const = 0;
00154 
00158   virtual size_t GetParameterIdx (const char* name) const = 0;
00159 
00163   virtual const char* GetParameterName (size_t idx) const = 0;
00164 
00170   virtual void AddParameter (const char* name, iBase* def_value = 0) = 0;
00171 
00175   virtual void SetParameter (size_t idx, iBase* value) = 0;
00176 
00180   virtual void SetParameter (const char* name, iBase* value) = 0;
00181 
00188   virtual csPtr<iParameterESM> CreateParameterESM (const char* name) = 0;
00189 };
00190 
00191 SCF_VERSION (iSequenceWrapper, 0, 3, 0);
00192 
00218 struct iSequenceWrapper : public iBase
00219 {
00223   virtual iObject* QueryObject () = 0;
00224 
00233   virtual iSequence* GetSequence () = 0;
00234 
00242   virtual iEngineSequenceParameters* CreateBaseParameterBlock () = 0;
00243 
00248   virtual iEngineSequenceParameters* GetBaseParameterBlock () = 0;
00249 
00261   virtual csPtr<iEngineSequenceParameters> CreateParameterBlock () = 0; 
00262 
00274   virtual void AddOperationSetVariable (csTicks time,
00275                 iSharedVariable* var, float value, float dvalue = 0) = 0;
00276 
00289   virtual void AddOperationSetVariable (csTicks time,
00290                 iSharedVariable* var, iSharedVariable* value,
00291                 iSharedVariable* dvalue = 0) = 0;
00292 
00299   virtual void AddOperationSetVariable (csTicks time,
00300                 iSharedVariable* var, const csVector3& v) = 0;
00301 
00308   virtual void AddOperationSetVariable (csTicks time,
00309                 iSharedVariable* var, const csColor& c) = 0;
00310 
00318   virtual void AddOperationSetMaterial (csTicks time, iParameterESM* mesh,
00319                   iParameterESM* mat) = 0;
00320 
00328   virtual void AddOperationSetPolygonMaterial (csTicks time,
00329                   iParameterESM* polygon, iParameterESM* mat) = 0;
00330 
00338   virtual void AddOperationSetLight (csTicks time, iParameterESM* light,
00339                   const csColor& color) = 0;
00340 
00351   virtual void AddOperationFadeLight (csTicks time, iParameterESM* light,
00352                   const csColor& color, csTicks duration) = 0;
00353 
00363   virtual void AddOperationSetAmbient (csTicks time, iParameterESM* sector,
00364                   const csColor& color, iSharedVariable *colorvar) = 0;
00365 
00376   virtual void AddOperationFadeAmbient (csTicks time, iParameterESM* sector,
00377                   const csColor& color, csTicks duration) = 0;
00378 
00386   virtual void AddOperationRandomDelay (csTicks time, int min, int max) = 0;
00387 
00395   virtual void AddOperationSetMeshColor (csTicks time, iParameterESM* mesh,
00396                   const csColor& color) = 0;
00397 
00408   virtual void AddOperationFadeMeshColor (csTicks time, iParameterESM* mesh,
00409                   const csColor& color, csTicks duration) = 0;
00410 
00419   virtual void AddOperationSetFog (csTicks time, iParameterESM* sector,
00420                   const csColor& color, float density) = 0;
00421 
00433   virtual void AddOperationFadeFog (csTicks time, iParameterESM* sector,
00434                   const csColor& color, float density, csTicks duration) = 0;
00435 
00454   virtual void AddOperationRotateDuration (csTicks time, iParameterESM* mesh,
00455                 int axis1, float tot_angle1,
00456                 int axis2, float tot_angle2,
00457                 int axis3, float tot_angle3,
00458                 const csVector3& offset,
00459                 csTicks duration) = 0;
00460 
00471   virtual void AddOperationMoveDuration (csTicks time, iParameterESM* mesh,
00472                 const csVector3& offset, csTicks duration) = 0;
00473 
00481   virtual void AddOperationTriggerState (csTicks time,
00482                   iParameterESM* trigger, bool en) = 0;
00483 
00493   virtual void AddOperationCheckTrigger (csTicks time,
00494                   iParameterESM* trigger, csTicks delay) = 0;
00495 
00509   virtual void AddOperationTestTrigger (csTicks time,
00510                   iParameterESM* trigger,
00511                   iSequence* trueSequence,
00512                   iSequence* falseSequence) = 0;
00513 };
00514 
00515 SCF_VERSION (iSequenceTrigger, 0, 0, 3);
00516 
00536 struct iSequenceTrigger : public iBase
00537 {
00541   virtual iObject* QueryObject () = 0;
00542 
00546   virtual void AddConditionInSector (iSector* sector) = 0;
00547 
00551   virtual void AddConditionInSector (iSector* sector,
00552         const csBox3& box) = 0;
00553 
00557   virtual void AddConditionInSector (iSector* sector,
00558         const csSphere& sphere) = 0;
00559 
00563   virtual void AddConditionSectorVisible (iSector* sector) = 0;
00564 
00568   virtual void AddConditionMeshClick (iMeshWrapper* mesh) = 0;
00569 
00581   virtual void AddConditionLightChange (iLight *whichlight, 
00582                                         int oper, const csColor& color) = 0;
00583 
00589   virtual void AddConditionManual () = 0;
00590 
00595   virtual void SetEnabled (bool en) = 0;
00596 
00600   virtual bool IsEnabled () const = 0;
00601 
00605   virtual void ClearConditions () = 0;
00606 
00610   virtual void Trigger () = 0;
00611 
00615   virtual void SetParameters (iEngineSequenceParameters* params) = 0;
00616 
00620   virtual iEngineSequenceParameters* GetParameters () const = 0;
00621 
00628   virtual void FireSequence (csTicks delay, iSequenceWrapper* seq) = 0;
00629 
00633   virtual iSequenceWrapper* GetFiredSequence () = 0;
00634 
00640   virtual void TestConditions (csTicks delay) = 0;
00641 
00649   virtual bool CheckState () = 0;
00650 
00666   virtual void ForceFire (bool now = false) = 0;
00667 };
00668 
00669 SCF_VERSION (iSequenceTimedOperation, 0, 0, 1);
00670 
00690 struct iSequenceTimedOperation : public iBase
00691 {
00695   virtual void Do (float time, iBase* params) = 0;
00696 };
00697 
00698 SCF_VERSION (iEngineSequenceManager, 0, 0, 3);
00699 
00713 struct iEngineSequenceManager : public iBase
00714 {
00719   virtual iSequenceManager* GetSequenceManager () = 0;
00720 
00726   virtual void SetCamera (iCamera* camera) = 0;
00727 
00731   virtual iCamera* GetCamera () = 0;
00732   
00736   virtual csPtr<iParameterESM> CreateParameterESM (iBase* value) = 0;
00737 
00738   //-----------------------------------------------------------------------
00739 
00743   virtual csPtr<iSequenceTrigger> CreateTrigger (const char* name) = 0;
00744 
00748   virtual void RemoveTrigger (iSequenceTrigger* trigger) = 0;
00749 
00753   virtual void RemoveTriggers () = 0;
00754 
00758   virtual size_t GetTriggerCount () const = 0;
00759 
00763   virtual iSequenceTrigger* GetTrigger (size_t idx) const = 0;
00764 
00768   virtual iSequenceTrigger* FindTriggerByName (const char* name) const = 0;
00769 
00776   virtual bool FireTriggerByName (const char *name, bool now = false) const = 0;
00777 
00778   //-----------------------------------------------------------------------
00779 
00783   virtual csPtr<iSequenceWrapper> CreateSequence (const char* name) = 0;
00784 
00788   virtual void RemoveSequence (iSequenceWrapper* seq) = 0;
00789 
00793   virtual void RemoveSequences () = 0;
00794 
00798   virtual size_t GetSequenceCount () const = 0;
00799 
00803   virtual iSequenceWrapper* GetSequence (size_t idx) const = 0;
00804 
00808   virtual iSequenceWrapper* FindSequenceByName (const char* name) const = 0;
00809 
00813   virtual bool RunSequenceByName (const char *name,int delay) const = 0;
00814 
00815   //-----------------------------------------------------------------------
00816 
00824   virtual void FireTimedOperation (csTicks delta, csTicks duration,
00825         iSequenceTimedOperation* op, iBase* params = 0) = 0;
00826 
00827   //-----------------------------------------------------------------------
00828 };
00829 
00830 #endif // __CS_IVARIA_ENGSEQ_H__
00831 

Generated for Crystal Space by doxygen 1.4.4