00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __IENGINE_LIGHT_H__
00021 #define __IENGINE_LIGHT_H__
00022
00023 #include "csutil/scf.h"
00024 #include "iengine/fview.h"
00025
00026 class csLight;
00027 class csColor;
00028 struct iSector;
00029 struct iObject;
00030 struct iCrossHalo;
00031 struct iNovaHalo;
00032 struct iFlareHalo;
00033
00035 #define CS_DEFAULT_LIGHT_LEVEL 20
00036
00037 #define CS_NORMAL_LIGHT_LEVEL 128
00038
00049 #define CS_ATTN_NONE 0
00050 #define CS_ATTN_LINEAR 1
00051 #define CS_ATTN_INVERSE 2
00052 #define CS_ATTN_REALISTIC 3
00053
00054 SCF_VERSION (iLight, 0, 0, 6);
00055
00059 struct iLight : public iBase
00060 {
00062 virtual csLight* GetPrivateObject () = 0;
00063
00065 virtual unsigned long GetLightID () = 0;
00066
00068 virtual iObject *QueryObject() = 0;
00069
00071 virtual const csVector3& GetCenter () = 0;
00073 virtual void SetCenter (const csVector3& pos) = 0;
00074
00076 virtual iSector *GetSector () = 0;
00078 virtual void SetSector (iSector* sector) = 0;
00079
00081 virtual float GetRadius () = 0;
00083 virtual float GetSquaredRadius () = 0;
00085 virtual float GetInverseRadius () = 0;
00087 virtual void SetRadius (float r) = 0;
00088
00090 virtual const csColor& GetColor () = 0;
00092 virtual void SetColor (const csColor& col) = 0;
00093
00095 virtual int GetAttenuation () = 0;
00106 virtual void SetAttenuation (int a) = 0;
00107
00109 virtual iCrossHalo* CreateCrossHalo (float intensity, float cross) = 0;
00111 virtual iNovaHalo* CreateNovaHalo (int seed, int num_spokes,
00112 float roundness) = 0;
00114 virtual iFlareHalo* CreateFlareHalo () = 0;
00115
00117 virtual float GetBrightnessAtDistance (float d) = 0;
00118 };
00119
00120 SCF_VERSION (iLightList, 0, 0, 1);
00121
00125 struct iLightList : public iBase
00126 {
00128 virtual int GetCount () const = 0;
00129
00131 virtual iLight *Get (int n) const = 0;
00132
00134 virtual int Add (iLight *obj) = 0;
00135
00137 virtual bool Remove (iLight *obj) = 0;
00138
00140 virtual bool Remove (int n) = 0;
00141
00143 virtual void RemoveAll () = 0;
00144
00146 virtual int Find (iLight *obj) const = 0;
00147
00149 virtual iLight *FindByName (const char *Name) const = 0;
00150
00152 virtual iLight *FindByID (unsigned long id) const = 0;
00153 };
00154
00155 SCF_VERSION (iLightingProcessInfo, 0, 0, 1);
00156
00163 struct iLightingProcessInfo : public iFrustumViewUserdata
00164 {
00166 virtual iLight* GetLight () const = 0;
00167
00169 virtual bool GetGouraudOnly () const = 0;
00170
00172 virtual bool IsDynamic () const = 0;
00173
00175 virtual void SetColor (const csColor& col) = 0;
00176
00178 virtual const csColor& GetColor () const = 0;
00179 };
00180
00181 #endif // __IENGINE_LIGHT_H__
00182