/*==LICENSE==*

CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011  Cyan Worlds, Inc.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

You can contact Cyan Worlds, Inc. by email legal@cyan.com
 or by snail mail at:
      Cyan Worlds, Inc.
      14617 N Newport Hwy
      Mead, WA   99021

*==LICENSE==*/
///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//  ParamBlock Type Konstants for plRT*Lights                                //
//  Cyan, Inc.                                                               //
//                                                                           //
//// Version History //////////////////////////////////////////////////////////
//                                                                           //
//  8.2.2001 mcn - Created.                                                  //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#ifndef _plRTLightsPB_h
#define _plRTLightsPB_h

///////////////////////////////////////////////////////////////////////////////
//// Spotlights ///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

static ParamBlockDesc2  RTSpotLightBlk
(
    /// Main def
    plRTSpotLight::kBlkSpotLight, _T("RT Spot Light"), 0,   plRTSpotLightDesc::GetDesc(), P_AUTO_CONSTRUCT + P_AUTO_UI + P_MULTIMAP, plRTSpotLight::kRefSpotLight, 

    /// Rollout definitions
    3, 
    plRTSpotLight::kLightMap1,      IDD_LIGHT_PARAM,        IDS_LIGHT_GEN_PARAMS,       0,  0,  &gLiteDlgProc,  
    plRTSpotLight::kLightMap2,      IDD_LIGHT_ATTEN,        IDS_LIGHT_ATTEN_PARAMSS,    0,  0,  &gLiteDlgProc,
    plRTSpotLight::kLightMap3,      IDD_FREE_SPOTLIGHT,     IDS_LIGHT_SPOT_PARAMS,      0,  0,  &gLiteDlgProc,
        
        /// Rollout 1 - General Parameters
        plRTSpotLight::kLightOn,        _T("on"),   TYPE_BOOL,  0, IDS_RTLIGHT_ON,
            p_default, true,    
            p_ui, plRTSpotLight::kLightMap1,    TYPE_SINGLECHEKBOX, IDC_LIGHT_ON,
        end,
        
        plRTSpotLight::kAffectDiffuse,      _T("AffectDiffuse"),    TYPE_BOOL,  0, IDS_RTLIGHT_ON,
            p_default, true,    
            p_ui, plRTSpotLight::kLightMap1,    TYPE_SINGLECHEKBOX, IDC_LIGHT_DIFFUSE,
        end,
        
        plRTSpotLight::kAmbientOnlyStub,        _T("AmbientOnly"),  TYPE_BOOL,  0, IDS_RTLIGHT_ON,
            p_default, false,   
            p_ui, plRTSpotLight::kLightMap1,    TYPE_SINGLECHEKBOX, IDC_AMBIENT_ONLY_STUB,
        end,
        
        plRTSpotLight::kCastShadows,        _T("CastShadows"),  TYPE_BOOL,  0, IDS_DS_CASTSHADOWSS,
//          p_default, false,   
//          p_ui, plRTSpotLight::kLightMap1,    TYPE_SINGLECHEKBOX, IDC_CAST_SHADOWS,
        end,
        
        plRTSpotLight::kLightColor, _T("LightColor"),           TYPE_RGBA,  P_ANIMATABLE, IDS_DS_LIGHTCOL,
            p_default, Color(255,255,255),
            p_ui, plRTSpotLight::kLightMap1,            TYPE_COLORSWATCH,       IDC_LIGHT_COLOR,
            end,

        plRTSpotLight::kSpec,   _T("AffectSpecular"),       TYPE_BOOL,  P_ANIMATABLE, IDS_DS_SPEC,
            p_default, false,
            //p_enable_ctrls, plRTSpotLight::kSpecularColorSwatch,
            p_ui, plRTSpotLight::kLightMap1,        TYPE_SINGLECHEKBOX, IDC_AFFECT_SPECULAR,
            end,

        plRTSpotLight::kSpecularColorSwatch,_T("SpecularColor"),    TYPE_RGBA,  P_ANIMATABLE, IDS_DS_SPECCOL,
            p_default, Color(255,255,255),
            p_ui, plRTSpotLight::kLightMap1,            TYPE_COLORSWATCH,       IDC_LIGHT_COLOR_SPECULAR,
            end,

        plRTSpotLight::kIntensity,      _T("IntensityEditSpinner"), TYPE_FLOAT, P_ANIMATABLE, IDS_DB_MULTIPLIER,    
            p_range, -250.0, 250.0,
            p_default, 1.0,
            p_ui, plRTSpotLight::kLightMap1,            TYPE_SPINNER,   EDITTYPE_FLOAT,
            IDC_LMULT,IDC_LMULTSPINNER, .05f,
            end,

        /// Rollout 2 - Attenuation Parameters

        plRTSpotLight::kUseAttenuationBool,     _T("AttenOnBool"),      TYPE_BOOL,  0, IDS_DS_USEFARATTEN,
            p_default, TRUE,
            p_ui, plRTSpotLight::kLightMap2,        TYPE_SINGLECHEKBOX, IDC_LIGHT_ATTENBOOL,
            p_enable_ctrls, 2, plRTSpotLight::kAttenMaxFalloffEdit,plRTSpotLight::kAttenTypeRadio,
            end,

        plRTSpotLight::kAttenMaxFalloffEdit,        _T("MaxFalloffEdit"),       TYPE_FLOAT, P_ANIMATABLE, IDS_DS_ATTENSTARTNEAR,    
            p_range, 0.0, 999999999.0,
            p_default, 200.0,
            p_ui, plRTSpotLight::kLightMap2,            TYPE_SPINNER,   EDITTYPE_POS_UNIVERSE,
            IDC_LIGHT_ATTEN,    IDC_LIGHT_ATTEN_SPIN, .05f,
            end,

        plRTSpotLight::kAttenTypeRadio, _T("LightShapeRadio"),  TYPE_INT, 0,    IDS_DS_LIGHTSHAPE_RATIO,
            p_default, 0,
            //p_vals, 1, 2, 
            p_ui, plRTSpotLight::kLightMap2,        TYPE_RADIO, 3,
            IDC_LIGHT_ATTEN_LINEAR_RADIO,   IDC_LIGHT_ATTEN_QUAD_RADIO, IDC_LIGHT_ATTEN_NONE_RADIO,
            
            end,
    
        /// Rollout 3 - Spotlight Parameters

        plRTSpotLight::kShowConeBool,   _T("ShowConeBool"),         TYPE_BOOL,  0, IDS_DS_SHOWCONE,
            p_default, false,
            p_ui, plRTSpotLight::kLightMap3,        TYPE_SINGLECHEKBOX, IDC_SHOW_CONE,
            end,


        plRTSpotLight::kHotSpot,    _T("HotSpot"),                  TYPE_FLOAT, P_ANIMATABLE, IDS_DB_HOTSIZE,   
            p_range, 0.0, 179.0f,
            p_default, 43.0,
            p_ui, plRTSpotLight::kLightMap3,        TYPE_SPINNER,   EDITTYPE_POS_FLOAT,
            IDC_LHOTSIZE,       IDC_LHOTSIZESPINNER, .05f,
            end,    

        plRTSpotLight::kFallOff,    _T("FallOff"),                  TYPE_FLOAT, P_ANIMATABLE, IDS_DB_FALLSIZE,  
            p_range, 0.0, 179.0f,
            p_default, 45.0,
            p_ui, plRTSpotLight::kLightMap3,        TYPE_SPINNER,   EDITTYPE_POS_FLOAT,
            IDC_LFALLOFF,       IDC_LFALLOFFSPINNER, .05f,
            end,

        plRTSpotLight::kUseProjectorBool,   _T("UseProjBool"),      TYPE_BOOL,  0, IDS_DS_PROJ_PARAMS,
            p_default, false,
            p_enable_ctrls, 1, plRTSpotLight::kProjMapTexButton,
            p_ui, plRTSpotLight::kLightMap3,        TYPE_SINGLECHEKBOX, IDC_PROJECTOR,
            end,        

        plRTSpotLight::kProjMapTexButton,   _T("ProjMapButton"),    TYPE_BITMAP,    P_SHORT_LABELS, IDS_DS_PROJMAP,
            p_ui, plRTSpotLight::kLightMap3,        TYPE_BITMAPBUTTON,  IDC_PROJ_MAPNAME,
            p_accessor,     plLightTexPBAccessor::Instance(),
            end,

        plRTLightBase::kProjTypeRadio, _T("ProjTypeRadio"),     TYPE_INT,       0, 0,
            p_default, plRTLightBase::kIlluminate,
            p_ui,       plRTSpotLight::kLightMap3,      TYPE_RADIO, 4,  IDC_ILLUMINATE, IDC_ADD, IDC_MULT, IDC_MADD,
            p_vals,                     plRTLightBase::kIlluminate, plRTLightBase::kAdd, plRTLightBase::kMult, plRTLightBase::kMADD,
            end,

        plRTLightBase::kProjNoCompress, _T("NoCompress"),       TYPE_BOOL,  0, IDS_DS_PROJ_PARAMS,
            p_default, false,
            p_ui, plRTSpotLight::kLightMap3,        TYPE_SINGLECHEKBOX, IDC_PROJ_NOCOMPRESS,
            end,        

        plRTLightBase::kProjNoMip,  _T("NoMip"),        TYPE_BOOL,  0, IDS_DS_PROJ_PARAMS,
            p_default, false,
            p_ui, plRTSpotLight::kLightMap3,        TYPE_SINGLECHEKBOX, IDC_PROJ_NOMIP,
            end,        


    end
);


///////////////////////////////////////////////////////////////////////////////
//// Omni Lights //////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

static ParamBlockDesc2  RTOmniLightBlk
(
    /// Main def
    plRTOmniLight::kBlkOmniLight, _T("RT Omni Light"), 0,   plRTOmniLightDesc::GetDesc(), P_AUTO_CONSTRUCT + P_AUTO_UI + P_MULTIMAP, plRTOmniLight::kRefOmniLight, 

    /// Rollout definitions
    2, 
    plRTOmniLight::kLightMap1,      IDD_LIGHT_PARAM,    IDS_LIGHT_GEN_PARAMS,       0,  0,  &gLiteDlgProc,  
    plRTOmniLight::kLightMap2,      IDD_LIGHT_ATTEN,    IDS_LIGHT_ATTEN_PARAMSS,    0,  0,  &gLiteDlgProc,

        /// Rollout 1 - General Parameters
        plRTOmniLight::kLightOn,        _T("on"),   TYPE_BOOL,  0, IDS_RTLIGHT_ON,
            p_default, true,    
            p_ui, plRTOmniLight::kLightMap1,    TYPE_SINGLECHEKBOX, IDC_LIGHT_ON,
        end,
        
        plRTOmniLight::kAffectDiffuse,      _T("AffectDiffuse"),    TYPE_BOOL,  0, IDS_RTLIGHT_ON,
            p_default, true,    
            p_ui, plRTOmniLight::kLightMap1,    TYPE_SINGLECHEKBOX, IDC_LIGHT_DIFFUSE,
        end,
        
        plRTOmniLight::kAmbientOnlyStub,        _T("AmbientOnly"),  TYPE_BOOL,  0, IDS_RTLIGHT_ON,
            p_default, false,   
            p_ui, plRTOmniLight::kLightMap1,    TYPE_SINGLECHEKBOX, IDC_AMBIENT_ONLY_STUB,
        end,
        
        plRTOmniLight::kCastShadows,        _T("CastShadows"),  TYPE_BOOL,  0, IDS_DS_CASTSHADOWSS,
//          p_default, false,   
//          p_ui, plRTOmniLight::kLightMap1,    TYPE_SINGLECHEKBOX, IDC_CAST_SHADOWS,
            end,
        
        plRTOmniLight::kLightColor, _T("LightColor"),           TYPE_RGBA,  P_ANIMATABLE, IDS_DS_LIGHTCOL,
            p_default, Color(255,255,255),
            p_ui, plRTOmniLight::kLightMap1,            TYPE_COLORSWATCH,       IDC_LIGHT_COLOR,
            end,

        plRTOmniLight::kSpec,   _T("AffectSpecular"),       TYPE_BOOL,  P_ANIMATABLE, IDS_DS_SPEC,
            p_default, false,
            p_ui, plRTOmniLight::kLightMap1,        TYPE_SINGLECHEKBOX, IDC_AFFECT_SPECULAR,
            end,

        plRTOmniLight::kSpecularColorSwatch,_T("SpecularColor"),    TYPE_RGBA,  P_ANIMATABLE, IDS_DS_SPECCOL,
            p_default, Color(255,255,255),
            p_ui, plRTOmniLight::kLightMap1,            TYPE_COLORSWATCH,       IDC_LIGHT_COLOR_SPECULAR,
            end,


        plRTOmniLight::kIntensity,      _T("IntensityEditSpinner"), TYPE_FLOAT, P_ANIMATABLE, IDS_DB_MULTIPLIER,    
            p_range, -250.0, 250.0,
            p_default, 1.0,
            p_ui, plRTOmniLight::kLightMap1,            TYPE_SPINNER,   EDITTYPE_POS_FLOAT,
            IDC_LMULT,IDC_LMULTSPINNER, .05f,
            end,


        /// Rollout 2 - Light Attenuation Parameters

        plRTOmniLight::kUseAttenuationBool,     _T("AttenOnBool"),      TYPE_BOOL,  0, IDS_DS_USEFARATTEN,
            p_default, TRUE,
            p_ui, plRTOmniLight::kLightMap2,        TYPE_SINGLECHEKBOX, IDC_LIGHT_ATTENBOOL,
            p_enable_ctrls, 2, plRTOmniLight::kAttenMaxFalloffEdit, plRTOmniLight::kAttenTypeRadio,
            end,

        plRTOmniLight::kAttenMaxFalloffEdit,        _T("MaxFalloffEdit"),       TYPE_FLOAT, P_ANIMATABLE, IDS_DS_ATTENSTARTNEAR,    
            p_range, 0.0, 999999999.0,
            p_default, 200.0,
            p_ui, plRTOmniLight::kLightMap2,            TYPE_SPINNER,   EDITTYPE_POS_UNIVERSE,
            IDC_LIGHT_ATTEN,    IDC_LIGHT_ATTEN_SPIN, .05f,
            end,

        plRTOmniLight::kAttenTypeRadio, _T("LightShapeRadio"),  TYPE_INT, 0,    IDS_DS_LIGHTSHAPE_RATIO,
            p_default, 0,
            //p_vals, 1, 2, 
            p_ui, plRTOmniLight::kLightMap2,        TYPE_RADIO, 3,
            IDC_LIGHT_ATTEN_LINEAR_RADIO,   IDC_LIGHT_ATTEN_QUAD_RADIO, IDC_LIGHT_ATTEN_NONE_RADIO,
            end,
        
    end

);


///////////////////////////////////////////////////////////////////////////////
//// Directional Lights ///////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

static ParamBlockDesc2  RTTDirLightBlk
(
    /// Main def
    plRTDirLight::kBlkTSpotLight, _T("RT Spot Light"), 0,   plRTDirLightDesc::GetDesc(), P_AUTO_CONSTRUCT + P_AUTO_UI + P_MULTIMAP, plRTDirLight::kRefTSpotLight, 

    /// Rollout definitions
    1, 
    plRTDirLight::kLightMap1,       IDD_LIGHT_PARAM,        IDS_LIGHT_GEN_PARAMS,       0,  0,  &gLiteDlgProc,  

        /// Rollout 1 - General Parameters
        plRTDirLight::kLightOn,     _T("on"),   TYPE_BOOL,  0, IDS_RTLIGHT_ON,
            p_default, true,    
            p_ui, plRTDirLight::kLightMap1, TYPE_SINGLECHEKBOX, IDC_LIGHT_ON,
        end,
        
        plRTDirLight::kAffectDiffuse,       _T("AffectDiffuse"),    TYPE_BOOL,  0, IDS_RTLIGHT_ON,
            p_default, true,    
            p_ui, plRTDirLight::kLightMap1, TYPE_SINGLECHEKBOX, IDC_LIGHT_DIFFUSE,
        end,
        
        plRTDirLight::kAmbientOnlyStub,     _T("AmbientOnly"),  TYPE_BOOL,  0, IDS_RTLIGHT_ON,
            p_default, false,   
            p_ui, plRTDirLight::kLightMap1, TYPE_SINGLECHEKBOX, IDC_AMBIENT_ONLY_STUB,
        end,
        
        plRTDirLight::kCastShadows,     _T("CastShadows"),  TYPE_BOOL,  0, IDS_DS_CASTSHADOWSS,
//          p_default, false,   
//          p_ui, plRTDirLight::kLightMap1, TYPE_SINGLECHEKBOX, IDC_CAST_SHADOWS,
        end,
        
        plRTDirLight::kLightColor,  _T("LightColor"),           TYPE_RGBA,  P_ANIMATABLE, IDS_DS_LIGHTCOL,
            p_default, Color(255,255,255),
            p_ui, plRTDirLight::kLightMap1,         TYPE_COLORSWATCH,       IDC_LIGHT_COLOR,
            end,

        plRTDirLight::kSpec,    _T("AffectSpecular"),       TYPE_BOOL,  P_ANIMATABLE, IDS_DS_SPEC,
            p_default, false,
            p_ui, plRTDirLight::kLightMap1,     TYPE_SINGLECHEKBOX, IDC_AFFECT_SPECULAR,
            end,

        plRTDirLight::kSpecularColorSwatch,_T("SpecularColor"), TYPE_RGBA,  P_ANIMATABLE, IDS_DS_SPECCOL,
            p_default, Color(255,255,255),
            p_ui, plRTDirLight::kLightMap1,         TYPE_COLORSWATCH,       IDC_LIGHT_COLOR_SPECULAR,
            end,

        plRTDirLight::kIntensity,       _T("IntensityEditSpinner"), TYPE_FLOAT, P_ANIMATABLE, IDS_DB_MULTIPLIER,    
            p_range, -250.0, 250.0,
            p_default, 1.0,
            p_ui, plRTDirLight::kLightMap1,         TYPE_SPINNER,   EDITTYPE_FLOAT,
            IDC_LMULT,IDC_LMULTSPINNER, .05f,
            end,

    end
);


#endif //_plRTLightsPB_h