// GUILight.h: interface for the GUILight class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_GUILIGHT_H__98695BE0_C61E_4358_9A6C_E01EB6FFCDE1__INCLUDED_) #define AFX_GUILIGHT_H__98695BE0_C61E_4358_9A6C_E01EB6FFCDE1__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "EdGUIObject.h" namespace gosFX { class Light; }; class GUILight : public EdGUIObject { protected: gosFX::Light *MyLight; void Copy(GUILight &obj); void UpdateMat(); void AddToMap(); void RemoveFromMap(); void Clear(); void SetToDefault(); public: virtual void Build()=0; RGBColor GetColor(); void SetColor(RGBColor &col); Scalar GetIntensity(); void SetIntensity(Scalar); void AssociateTo(gosFX::Light *light); void AddPanel(CObjPanelDlg *pnl,UndoCommand **cmd); void Dissociate() { MyLight=NULL; InMap=false;} GUILight(CString name="Light"); void UpdateVisibility(DWORD visflag) { SetHide(visflag&SHOW_LIGHTS?false:true);} ~GUILight(); }; class GUIAmbientLight : public GUILight { protected: void Copy(GUIAmbientLight &obj); public: void AddPanel(CObjPanelDlg *pnl,UndoCommand **cmd); EdGUIObject *Clone(); GUIAmbientLight(CString name="Ambient_Light"); void Build(); ~GUIAmbientLight(); CString GetTypeName() {return ("Ambient_Light");} int GetUnSelIcon() {return ICON_AMBIENTLIGHT; } int GetSelIcon() {return ICON_AMBIENTLIGHT; } void Draw(DrawInfo &dinf) {} void DrawTag(DrawInfo &dinf, unsigned long tag_flags) {} }; class GUIInfiniteLight : public GUILight { protected: void Copy(GUIInfiniteLight &obj); public: void AddPanel(CObjPanelDlg *pnl,UndoCommand **cmd); EdGUIObject *Clone(); GUIInfiniteLight(CString name="Infinite_Light"); void Build(); ~GUIInfiniteLight(); CString GetTypeName() {return ("Infinite_Light");} int GetUnSelIcon() {return ICON_INFINITELIGHT; } int GetSelIcon() {return ICON_INFINITELIGHT; } void Draw(DrawInfo &dinf) {} void DrawTag(DrawInfo &dinf, unsigned long tag_flags) {} }; class GUILookUpLight : public GUIInfiniteLight { protected: void Copy(GUILookUpLight &obj) {return;} public: void AddPanel(CObjPanelDlg *pnl,UndoCommand **cmd); EdGUIObject *Clone() { return NULL;} GUILookUpLight(CString name="LookUp_Light"); void Build() {return;} ~GUILookUpLight(); CString GetTypeName() {return ("LookUp_Light");} int GetUnSelIcon() {return ICON_LOOKUPLIGHT; } int GetSelIcon() {return ICON_LOOKUPLIGHT; } void Draw(DrawInfo &dinf); }; class GUIPointLight : public GUILight { protected: void Copy(GUIPointLight &obj); public: Scalar GetInnerRad(); void SetInnerRad(Scalar); Scalar GetOuterRad(); void SetOuterRad(Scalar); void AddPanel(CObjPanelDlg *pnl,UndoCommand **cmd); void Build(); EdGUIObject *Clone(); GUIPointLight(CString name="Point_Light",Point3D pnt=Point3D(0,0,0)); ~GUIPointLight(); CString GetTypeName() {return ("Point_Light");} int GetUnSelIcon() {return ICON_POINTLIGHT; } int GetSelIcon() {return ICON_POINTLIGHT; } void Draw(DrawInfo &dinf); }; class GUISpotLight : public GUIPointLight { protected: void Copy(GUISpotLight &obj); public: Scalar GetSpreadAngle(); void SetSpreadAngle(Scalar); void AddPanel(CObjPanelDlg *pnl,UndoCommand **cmd); void Build(); EdGUIObject *Clone(); GUISpotLight(CString name="Spot_Light",Point3D pnt=Point3D(0,0,0)); ~GUISpotLight(); CString GetTypeName() {return ("Spot_Light");} int GetUnSelIcon() {return ICON_SPOTLIGHT; } int GetSelIcon() {return ICON_SPOTLIGHT; } void Draw(DrawInfo &dinf); }; #endif // !defined(AFX_GUILIGHT_H__98695BE0_C61E_4358_9A6C_E01EB6FFCDE1__INCLUDED_)