reman3/Rayman_X/cpa/tempgrp/OLG/src/lightdia.cpp

2963 lines
83 KiB
C++

/*
///////////////////////////////////////////////////////////////////////////////////////////////////
// Description : LightDia.cpp
//
// Dialog edition the spots
//
///////////////////////////////////////////////////////////////////////////////////////////////////
//
//
///////////////////////////////////////////////////////////////////////////////////////////////////
// Creation date: 11 feb 1997 Author: J Thénoz
///////////////////////////////////////////////////////////////////////////////////////////////////
// Modification date: Author:
//
//
//
//
///////////////////////////////////////////////////////////////////////////////////////////////////
*/
#include "stdafx.h"
#include "acp_base.h"
#include "resource.h"
#include "itf.h"
#include "LightDia.hpp"
#include "LightObj.hpp"
#include "Inter.hpp"
#include "x:\cpa\main\inc\_EditId.h"
#include "tut.h"
//ROMTEAM color lights Ionut Grozea 10-08-1998
#include "ogd.h"
//ENDROMTEAM color lights Ionut Grozea 10-08-1998
//CHINA WFQ (MT) 16/02/98 {
#define LIMIT 1000
//ENDCHINA WFQ }
//ROMTEAM Color edition Ionut Grozea 1-08-1998
#define C_szLightIniFile "Light\\Light.ini"
//ENDROMTEAM Color edition Ionut Grozea 1-08-1998
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// MACROS
#define M_Enable( nID, bShow ) GetDlgItem ( (nID) ) -> EnableWindow( bShow )
#define M_Show( nID, iShow ) GetDlgItem ( (nID) ) -> ShowWindow( iShow )
#define M_ShowAndEnable( nID, bShow )\
{\
M_Show( nID, (bShow) ? SW_SHOW : SW_HIDE );\
M_Enable( nID, bShow );\
}
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
IMPLEMENT_DYNCREATE ( DiaLight, CFormView );
/////////////////////////////////////////////////////////////////////////////
// DiaLight dialog
DiaLight::DiaLight(CWnd* pParent /*=NULL*/)
: CFormView(DiaLight::IDD)
{
m_poLight=NULL;
m_bUpdate=TRUE;
m_bNearHasFocus=FALSE;
m_bFarHasFocus=FALSE;
m_bNameEditHasFocus=FALSE;
m_bIntensityEditHasFocus=FALSE;
m_bREditHasFocus=FALSE;
m_bGEditHasFocus=FALSE;
m_bBEditHasFocus=FALSE;
m_bAEditHasFocus=FALSE;
//CHINA WFQ (MT) 16/02/98 {
m_bMaxXHasFocus = FALSE;
m_bMaxYHasFocus = FALSE;
m_bMaxZHasFocus = FALSE;
m_bMinXHasFocus = FALSE;
m_bMinYHasFocus = FALSE;
m_bMinZHasFocus = FALSE;
//ENDCHINA WFQ }
//ANNECY jt {
BOOL m_bFogNearHasFocus = FALSE;
BOOL m_bFogFarHasFocus = FALSE;
BOOL m_bFogInfiniteHasFocus = FALSE;
BOOL m_bFogBlendNearHasFocus = FALSE;
BOOL m_bFogBlendFarHasFocus = FALSE;
//ENDANNECY jt }
}
//ROMTEAM scroll job Ionut Grozea 1-08-1998
WNDPROC oldproc1 ;
BOOL CALLBACK DialogProc1(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if(uMsg == WM_KEYDOWN)
{
if(wParam == VK_DOWN) wParam = VK_UP;
else if(wParam == VK_UP) wParam = VK_DOWN;
}
return CallWindowProc(oldproc1, hwnd, uMsg, wParam, lParam);
}
//ROMTEAM scroll job Ionut Grozea 1-08-1998
void DiaLight::fn_vInitDialog ( Light_Interface* pInterface )
{
m_pInterface = pInterface;
//ROMTEAM Ionut Grozea 1-08-1998
if (!pInterface->fn_bGetRealLight())
//ROMTEAM Ionut Grozea 1-08-1998
{
GetDlgItem(IDC_BUTTON_REAL_LIGHT)->SetWindowText("Display only real Lights");
}
else
{
GetDlgItem(IDC_BUTTON_REAL_LIGHT)->SetWindowText("Display all Lights");
}
UpdateData (FALSE);
m_oRSlider.SetOwner( this );
m_oRSlider.SetRange( -100, 100, TRUE );
m_oGSlider.SetRange( -100, 100, TRUE );
m_oBSlider.SetRange( -100, 100, TRUE );
m_oASlider.SetRange( -100, 100, TRUE );
m_oNearSlider.SetRange ( 0, 1000, TRUE );
m_oFarSlider.SetRange ( 0, 1000, TRUE );
m_oIntensitySlider.SetRange ( 1, 10000, TRUE );
m_fRValue=0.f;
m_fGValue=0.f;
m_fBValue=0.f;
m_fAValue=0.f;
m_oRSlider.SetPos( 0 );
m_oGSlider.SetPos( 0 );
m_oBSlider.SetPos( 0 );
m_oASlider.SetPos( 0 );
m_oTabControl.DeleteAllItems ();
m_fNearValue = 0.f;
m_fFarValue = 0.f;
m_fIntensity = 0.f;
m_bNearFarTab = FALSE; // 1 Tab with Near/Far
m_bAlphaTab = FALSE; // 2 tabs with Near/Far & Alpha
m_bInterExtraTab = FALSE; // 3 tabs with Intern & Extern & Intensity
UpdateData (FALSE);
// enable the dialog
// common controls
fn_vDisplayCommonControls( FALSE );
// near/far
fn_vDisplayNearFarControls( FALSE );
// tab
M_ShowAndEnable (IDC_LIGHT_TAB, FALSE);
// fog
fn_vDisplayFogControl (FALSE);
// icon
fn_vDisplayCommonIcons( SW_HIDE );
// Buttons
((CButton *) GetDlgItem(IDC_LIGHT_OFF_RADIO))->SetIcon(LoadIcon(m_pInterface->GetDLLIdentity()->hModule, MAKEINTRESOURCE(IDI_BUTTON_ACTOROFF)));
((CButton *) GetDlgItem(IDC_LIGHT_ON_RADIO))->SetIcon(LoadIcon(m_pInterface->GetDLLIdentity()->hModule, MAKEINTRESOURCE(IDI_BUTTON_ACTORON)));
// Parallel Box controls
fn_vDisplayInternalExternalControls( FALSE );
//ROMTEAM scroll job Ionut Grozea 1-08-1998
oldproc1 = (WNDPROC)SetWindowLong(GetDlgItem(IDC_LIGHT_R_SLIDER)->m_hWnd, GWL_WNDPROC, (long)DialogProc1);
oldproc1 = (WNDPROC)SetWindowLong(GetDlgItem(IDC_LIGHT_B_SLIDER)->m_hWnd, GWL_WNDPROC, (long)DialogProc1);
oldproc1 = (WNDPROC)SetWindowLong(GetDlgItem(IDC_LIGHT_FAR_SLIDER)->m_hWnd, GWL_WNDPROC, (long)DialogProc1);
oldproc1 = (WNDPROC)SetWindowLong(GetDlgItem(IDC_LIGHT_NEAR_SLIDER)->m_hWnd, GWL_WNDPROC, (long)DialogProc1);
oldproc1 = (WNDPROC)SetWindowLong(GetDlgItem(IDC_LIGHT_G_SLIDER)->m_hWnd, GWL_WNDPROC, (long)DialogProc1);
oldproc1 = (WNDPROC)SetWindowLong(GetDlgItem(IDC_LIGHT_INTENSITY_SLIDER)->m_hWnd, GWL_WNDPROC, (long)DialogProc1);
oldproc1 = (WNDPROC)SetWindowLong(GetDlgItem(IDC_LIGHT_A_SLIDER)->m_hWnd, GWL_WNDPROC, (long)DialogProc1);
//ENDROMTEAM scroll job Ionut Grozea 1-08-1998
}
// to edit a new light
void DiaLight::fn_vEdit (Light* poLight)
{
if( m_poLight )
{
if( !poLight )
{
fn_vDisplayCommonControls( FALSE );
fn_vDisplayCommonIcons( SW_HIDE );
fn_vDisplayNearFarControls( FALSE );
fn_vDisplayInternalExternalControls( FALSE );
fn_vDisplayFogControl( FALSE );
}
else if( m_poLight->GetSuperObject()->GetModelName() != poLight->GetSuperObject()->GetModelName() )
{
fn_vDisplayCommonIcons( SW_HIDE );
fn_vDisplayNearFarControls( FALSE );
fn_vDisplayInternalExternalControls( FALSE );
fn_vDisplayFogControl( FALSE );
}
}
else if( poLight )
{
fn_vDisplayCommonControls( TRUE );
fn_vDisplayCommonIcons( SW_HIDE );
fn_vDisplayNearFarControls( FALSE );
fn_vDisplayInternalExternalControls( FALSE );
fn_vDisplayFogControl( FALSE );
}
m_poLight = poLight;
if ( poLight && poLight->GetSuperObject() )
{
GetParent()->SetWindowText ( m_poLight->GetSuperObject()->GetModelName() );
fn_vInitEditName ();
fn_vGetColor ();
fn_vInitOnOff ();
fn_vInitTabControl ();
fn_vSwapLightTab();
fn_vRefreshDialog ();
//ROMTEAM BlendRLI (Ionut Grozea 24/02/98)
fn_vInitType();
//ENDROMTEAM BlendRLI (Ionut Grozea)
// display status icon
fn_vDisplayIcon ();
}
else
{
GetParent()->SetWindowText ( "No light to edit" );
m_poLight=NULL;
m_csEditName="";
}
GetParent()->GetParent()->RedrawWindow (NULL, NULL, RDW_INVALIDATE|RDW_FRAME);
}
void DiaLight::fn_vRefreshSectorList (void)
{
if (!m_poLight)
return;
// sectors of the light
CPA_List<CPA_SuperObject>* poSectorList = m_poLight->fn_pGetSectorList();
m_poLight->GetInterface()->fn_vAddModifSectorList ( poSectorList );
// empty Clist
m_SectorList.ResetContent();
if (!m_oDisplayAllControl.GetCheck())
{
POSITION xPos;
CPA_SuperObject* poSector;
for ( poSector=poSectorList->GetHeadElement(xPos); poSector; poSector=poSectorList->GetNextElement(xPos) )
m_SectorList.AddString ( poSector->GetObject()->GetName() );
}
else
{
POSITION xPos;
CPA_SuperObject* poSector;
CPA_BaseObject* poBaseObject;
CPA_BaseObjectList* poList = m_poLight->GetInterface()->GetMainWorld()->fn_p_oGetOriginalObjectList (C_szSectorTypeName);
Position xBaseObjectPos;
// set all the sectors in the list
for ( poBaseObject=poList->GetHeadElement(xBaseObjectPos); xBaseObjectPos; poBaseObject=poList->GetNextElement(xBaseObjectPos) )
{
m_SectorList.AddString ( poBaseObject->GetName() );
}
for ( poSector=poSectorList->GetHeadElement(xPos); poSector; poSector=poSectorList->GetNextElement(xPos) )
{
int iPos = m_SectorList.FindStringExact( 0, poSector->GetObject()->GetName() );
if (iPos>=0) m_SectorList.SetSel( iPos );
}
}
// color the sectors
if (m_oSee.GetCheck()) m_poLight->fn_vPaintSector ();
}
void DiaLight::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(DiaLight)
DDX_Control(pDX, IDC_MIN_Z, m_cMin_Z);
DDX_Control(pDX, IDC_MIN_Y, m_cMin_Y);
DDX_Control(pDX, IDC_MIN_X, m_cMin_X);
DDX_Control(pDX, IDC_MAX_Z, m_cMax_Z);
DDX_Control(pDX, IDC_MAX_Y, m_cMax_Y);
DDX_Control(pDX, IDC_MAX_X, m_cMax_X);
DDX_Control(pDX, IDC_LIGHT_A_SLIDER, m_oASlider);
DDX_Control(pDX, IDC_LIGHT_INTENSITY_SLIDER, m_oIntensitySlider);
DDX_Control(pDX, IDC_NEAR_STATIC, m_oNearStatic);
DDX_Control(pDX, IDC_FAR_STATIC, m_oFarStatic);
DDX_Control(pDX, IDC_LIGHT_TAB, m_oTabControl);
DDX_Control(pDX, IDC_LIGHT_FAR_SLIDER, m_oFarSlider);
DDX_Control(pDX, IDC_LIGHT_NEAR_SLIDER, m_oNearSlider);
DDX_Control(pDX, IDC_LIGHT_SEE, m_oSee);
DDX_Control(pDX, IDC_LIGHT_DISPLAY_ALL, m_oDisplayAllControl);
DDX_Control(pDX, IDC_LIGHT_SECTOR_LIST, m_SectorList);
DDX_Control(pDX, IDC_LIGHT_B_SLIDER, m_oBSlider);
DDX_Control(pDX, IDC_LIGHT_R_SLIDER, m_oRSlider);
DDX_Control(pDX, IDC_LIGHT_G_SLIDER, m_oGSlider);
DDX_Text(pDX, IDC_LIGHT_B_EDIT, m_fBValue);
DDX_Text(pDX, IDC_LIGHT_G_EDIT, m_fGValue);
DDX_Text(pDX, IDC_LIGHT_R_EDIT, m_fRValue);
DDX_Text(pDX, IDC_LIGHT_NAME_EDIT, m_csEditName);
DDV_MaxChars(pDX, m_csEditName, 100);
DDX_Text(pDX, IDC_LIGHT_FAR_EDIT, m_fFarValue);
DDX_Text(pDX, IDC_LIGHT_NEAR_EDIT, m_fNearValue);
DDX_Text(pDX, IDC_LIGHT_INTENSITY_EDIT, m_fIntensity);
DDX_Text(pDX, IDC_LIGHT_A_EDIT, m_fAValue);
DDX_Text(pDX, IDC_MAX_X_EDIT, m_Max_X);
DDX_Text(pDX, IDC_MAX_Z_EDIT, m_Max_Z);
DDX_Text(pDX, IDC_MAX_Y_EDIT, m_Max_Y);
DDX_Text(pDX, IDC_MIN_X_EDIT, m_Min_X);
DDX_Text(pDX, IDC_MIN_Y_EDIT, m_Min_Y);
DDX_Text(pDX, IDC_MIN_Z_EDIT, m_Min_Z);
DDX_Text(pDX, IDC_FOG_BLEND_FAR_EDIT, m_fFogBlendFar);
DDX_Text(pDX, IDC_FOG_BLEND_NEAR_EDIT, m_fFogBlendNear);
DDX_Text(pDX, IDC_FOG_FAR_EDIT, m_fFogFar);
DDX_Text(pDX, IDC_FOG_INFINITE_EDIT, m_fFogInfinite);
DDX_Text(pDX, IDC_FOG_NEAR_EDIT, m_fFogNear);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(DiaLight, CFormView)
//{{AFX_MSG_MAP(DiaLight)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_DRAWITEM()
ON_WM_QUERYDRAGICON()
ON_EN_KILLFOCUS(IDC_LIGHT_B_EDIT, OnKillfocusLightBEdit)
ON_EN_KILLFOCUS(IDC_LIGHT_G_EDIT, OnKillfocusLightGEdit)
ON_EN_KILLFOCUS(IDC_LIGHT_R_EDIT, OnKillfocusLightREdit)
ON_WM_HSCROLL()
ON_BN_CLICKED(IDC_LIGHT_COLOR_DEFINITION, OnLightColorDefinition)
ON_BN_CLICKED(IDC_LIGHT_AMBIENT_BUTTON, OnLightAmbientButton)
ON_BN_CLICKED(IDC_LIGHT_DISPLAY_ALL, OnLightDisplayAll)
ON_BN_CLICKED(IDC_LIGHT_AFFECT_ALL, OnLightAffectAll)
ON_LBN_SELCHANGE(IDC_LIGHT_SECTOR_LIST, OnSelchangeLightSectorList)
ON_BN_CLICKED(IDC_LIGHT_SEE, OnLightSEE)
ON_BN_CLICKED(IDC_LIGHT_DEFAULT, OnLightDefault)
ON_EN_KILLFOCUS(IDC_LIGHT_NAME_EDIT, OnKillfocusLightNameEdit)
ON_EN_KILLFOCUS(IDC_LIGHT_FAR_EDIT, OnKillfocusLightFarEdit)
ON_EN_KILLFOCUS(IDC_LIGHT_NEAR_EDIT, OnKillfocusLightNearEdit)
ON_EN_SETFOCUS(IDC_LIGHT_FAR_EDIT, OnSetfocusLightFarEdit)
ON_EN_SETFOCUS(IDC_LIGHT_NEAR_EDIT, OnSetfocusLightNearEdit)
ON_NOTIFY(TCN_SELCHANGE, IDC_LIGHT_TAB, OnSelchangeLightTab)
ON_EN_SETFOCUS(IDC_LIGHT_NAME_EDIT, OnSetfocusLightNameEdit)
ON_BN_CLICKED(IDC_LIGHT_ON_RADIO, OnLightOnRadio)
ON_BN_CLICKED(IDC_LIGHT_OFF_RADIO, OnLightOffRadio)
ON_EN_KILLFOCUS(IDC_LIGHT_INTENSITY_EDIT, OnKillfocusLightIntensityEdit)
ON_EN_SETFOCUS(IDC_LIGHT_INTENSITY_EDIT, OnSetfocusLightIntensityEdit)
ON_EN_KILLFOCUS(IDC_LIGHT_A_EDIT, OnKillfocusLightAEdit)
ON_BN_CLICKED(IDC_LIGHT_ACTIVE_OFF_RADIO, OnLightActiveOffRadio)
ON_BN_CLICKED(IDC_LIGHT_ACTIVE_ON_RADIO, OnLightActiveOnRadio)
ON_EN_SETFOCUS(IDC_LIGHT_A_EDIT, OnSetfocusLightAEdit)
ON_EN_SETFOCUS(IDC_LIGHT_B_EDIT, OnSetfocusLightBEdit)
ON_EN_SETFOCUS(IDC_LIGHT_G_EDIT, OnSetfocusLightGEdit)
ON_EN_SETFOCUS(IDC_LIGHT_R_EDIT, OnSetfocusLightREdit)
ON_BN_CLICKED(IDC_MAP_OFF_RADIO, OnMapOffRadio)
ON_BN_CLICKED(IDC_MAP_ON_RADIO, OnMapOnRadio)
ON_EN_SETFOCUS(IDC_MAX_X_EDIT, OnSetfocusMaxXEdit)
ON_EN_SETFOCUS(IDC_MAX_Y_EDIT, OnSetfocusMaxYEdit)
ON_EN_SETFOCUS(IDC_MAX_Z_EDIT, OnSetfocusMaxZEdit)
ON_EN_SETFOCUS(IDC_MIN_X_EDIT, OnSetfocusMinXEdit)
ON_EN_SETFOCUS(IDC_MIN_Y_EDIT, OnSetfocusMinYEdit)
ON_EN_SETFOCUS(IDC_MIN_Z_EDIT, OnSetfocusMinZEdit)
ON_EN_KILLFOCUS(IDC_MIN_Z_EDIT, OnKillfocusMinZEdit)
ON_EN_KILLFOCUS(IDC_MIN_Y_EDIT, OnKillfocusMinYEdit)
ON_EN_KILLFOCUS(IDC_MIN_X_EDIT, OnKillfocusMinXEdit)
ON_EN_KILLFOCUS(IDC_MAX_Z_EDIT, OnKillfocusMaxZEdit)
ON_EN_KILLFOCUS(IDC_MAX_Y_EDIT, OnKillfocusMaxYEdit)
ON_EN_KILLFOCUS(IDC_MAX_X_EDIT, OnKillfocusMaxXEdit)
ON_BN_CLICKED(IDC_BUTTON_NORMAL, OnButtonNormal)
ON_BN_CLICKED(IDC_BUTTON_PAINT, OnButtonPaint)
ON_BN_CLICKED(IDC_BUTTON_BACK, OnButtonBack)
ON_BN_CLICKED(IDC_BUTTON_REAL_LIGHT, OnButtonRealLight)
ON_EN_KILLFOCUS(IDC_FOG_BLEND_FAR_EDIT, OnKillfocusBlendFarEdit)
ON_EN_SETFOCUS(IDC_FOG_BLEND_FAR_EDIT, OnSetfocusBlendFarEdit)
ON_EN_KILLFOCUS(IDC_FOG_BLEND_NEAR_EDIT, OnKillfocusBlendNearEdit)
ON_EN_SETFOCUS(IDC_FOG_BLEND_NEAR_EDIT, OnSetfocusBlendNearEdit)
ON_EN_KILLFOCUS(IDC_FOG_FAR_EDIT, OnKillfocusFarEdit)
ON_EN_SETFOCUS(IDC_FOG_FAR_EDIT, OnSetfocusFarEdit)
ON_EN_KILLFOCUS(IDC_FOG_INFINITE_EDIT, OnKillfocusInfiniteEdit)
ON_EN_SETFOCUS(IDC_FOG_INFINITE_EDIT, OnSetfocusInfiniteEdit)
ON_EN_KILLFOCUS(IDC_FOG_NEAR_EDIT, OnKillfocusNearEdit)
ON_EN_SETFOCUS(IDC_FOG_NEAR_EDIT, OnSetfocusNearEdit)
ON_BN_CLICKED(IDC_BUTTON_COMPUTE_ALL, OnButtonComputeAll)
ON_WM_DESTROY()
//ROMTEAM color lights Ionut Grozea 10-08-1998
ON_BN_CLICKED(IDC_BUTTON_MODE, OnButtonMode)
//ENDROMTEAM color lights Ionut Grozea 10-08-1998
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// DiaLight message handlers
/////////////////////////////////////////////////////////////////////////////
// DiaNetWP message handlers
void DiaLight::fn_vRefreshDialog (void)
{
fn_vRefreshSectorList ();
UpdateData (FALSE);
}
void DiaLight::OnSysCommand(UINT nID, LPARAM lParam)
{
CFormView::OnSysCommand(nID, lParam);
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void DiaLight::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CFormView::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR DiaLight::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
//--------------------------------------------------------------------------
// Management color edit/slider
//--------------------------------------------------------------------------
void DiaLight::fn_vInitSlider (void)
{
m_oRSlider.SetPos((int)(m_fRValue*100.f));
m_oGSlider.SetPos((int)(m_fGValue*100.f));
m_oBSlider.SetPos((int)(m_fBValue*100.f));
m_oASlider.SetPos((int)(m_fAValue*100.f));
m_oIntensitySlider.SetPos((int)(m_poLight->fn_fGetIntensity()*100.f));
}
BOOL DiaLight::OnCommand(WPARAM wParam, LPARAM lParam)
{
m_pInterface->fn_vClearStatus();
if (wParam==1)
{
if (m_bNearHasFocus)
{
OnKillfocusLightNearEdit();
m_bNearHasFocus=TRUE;
}
else if (m_bFarHasFocus)
{
OnKillfocusLightFarEdit();
m_bFarHasFocus=TRUE;
}
else if (m_bNameEditHasFocus)
{
OnKillfocusLightNameEdit();
m_bNameEditHasFocus=TRUE;
}
else if (m_bIntensityEditHasFocus)
{
OnKillfocusLightIntensityEdit();
m_bIntensityEditHasFocus=TRUE;
}
else if(m_bREditHasFocus)
{
OnKillfocusLightREdit();
m_bREditHasFocus=TRUE;
}
else if (m_bGEditHasFocus)
{
OnKillfocusLightGEdit();
m_bGEditHasFocus=TRUE;
}
else if (m_bBEditHasFocus)
{
OnKillfocusLightBEdit();
m_bBEditHasFocus=TRUE;
}
else if (m_bAEditHasFocus)
{
OnKillfocusLightAEdit();
m_bAEditHasFocus=TRUE;
}
//CHINA WFQ (MT) 16/02/98 {
else if (m_bMaxXHasFocus==TRUE)
{
OnKillfocusMaxXEdit();
//m_bMaxXHasFocus=TRUE;
}
else if (m_bMaxYHasFocus==TRUE)
{
OnKillfocusMaxYEdit();
//m_bMaxYHasFocus=TRUE;
}
else if (m_bMaxZHasFocus==TRUE)
{
OnKillfocusMaxZEdit();
//m_bMaxZHasFocus=TRUE;
}
else if (m_bMinXHasFocus==TRUE)
{
OnKillfocusMinXEdit();
//m_bMinXHasFocus=TRUE;
}
else if (m_bMinYHasFocus==TRUE)
{
OnKillfocusMinYEdit();
//m_bMinYHasFocus=TRUE;
}
else if (m_bMinZHasFocus==TRUE)
{
OnKillfocusMinZEdit();
//m_bMinZHasFocus=TRUE;
}
//ENDCHINA WFQ }
//ANNECY jt {
else if (m_bFogNearHasFocus)
{
OnKillfocusNearEdit();
m_bFogNearHasFocus=TRUE;
}
else if (m_bFogFarHasFocus)
{
OnKillfocusFarEdit();
m_bFogFarHasFocus=TRUE;
}
else if (m_bFogInfiniteHasFocus)
{
OnKillfocusInfiniteEdit();
m_bFogInfiniteHasFocus=TRUE;
}
else if (m_bFogBlendNearHasFocus)
{
OnKillfocusBlendNearEdit();
m_bFogBlendNearHasFocus=TRUE;
}
else if (m_bFogBlendFarHasFocus)
{
OnKillfocusBlendFarEdit();
m_bFogBlendFarHasFocus=TRUE;
}
//ENDANNECY jt }
return TRUE;
}
return CFormView::OnCommand(wParam, lParam);
}
void DiaLight::OnSetfocusLightAEdit()
{
m_bAEditHasFocus=TRUE;
}
void DiaLight::OnSetfocusLightBEdit()
{
m_bBEditHasFocus=TRUE;
}
void DiaLight::OnSetfocusLightGEdit()
{
m_bGEditHasFocus=TRUE;
}
void DiaLight::OnSetfocusLightREdit()
{
m_bREditHasFocus=TRUE;
}
void DiaLight::OnKillfocusLightBEdit()
{
if (m_pInterface->fn_bRunEngine())
return;
UpdateData (TRUE);
m_fBValue = (float) min ( m_fBValue, 1. );
m_fBValue = (float) max ( m_fBValue, -1. );
m_oBSlider.SetPos((int)(m_fBValue*100));
fn_vSetColor ();
m_bBEditHasFocus=FALSE;
UpdateData (FALSE);
}
void DiaLight::OnKillfocusLightGEdit()
{
if (m_pInterface->fn_bRunEngine())
return;
UpdateData (TRUE);
m_fGValue = (float) min ( m_fGValue, 1. );
m_fGValue = (float) max ( m_fGValue, -1. );
m_oGSlider.SetPos((int)(m_fGValue*100));
fn_vSetColor ();
m_bGEditHasFocus=FALSE;
UpdateData (FALSE);
}
void DiaLight::OnKillfocusLightREdit()
{
if (m_pInterface->fn_bRunEngine())
return;
UpdateData (TRUE);
m_fRValue = (float) min ( m_fRValue, 1. );
m_fRValue = (float) max ( m_fRValue, -1. );
m_oRSlider.SetPos((int)(m_fRValue*100));
fn_vSetColor ();
m_bREditHasFocus=FALSE;
UpdateData (FALSE);
}
void DiaLight::OnKillfocusLightAEdit()
{
if (m_pInterface->fn_bRunEngine())
return;
UpdateData (TRUE);
m_fAValue = (float) min ( m_fAValue, 10.f );
m_fAValue = (float) max ( m_fAValue, -10.f );
m_oASlider.SetPos((int)(m_fAValue*100));
fn_vSetColor ();
m_bAEditHasFocus=FALSE;
UpdateData (FALSE);
}
void DiaLight::OnKillfocusLightIntensityEdit()
{
if (m_pInterface->fn_bRunEngine())
return;
UpdateData (TRUE);
m_fIntensity = (float) max ( m_fIntensity, 0.01f );
m_fIntensity = (float) min ( m_fIntensity, 100.f );
m_oIntensitySlider.SetPos ((int)(m_fIntensity*100));
fn_vSetIntensity ();
m_bIntensityEditHasFocus=FALSE;
UpdateData (FALSE);
}
void DiaLight::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// security for mouse swap
if (ShowCursor(TRUE) <= 0)
{
ShowCursor(FALSE);
return;
}
if (pScrollBar==(void*)&m_oIntensitySlider)
{
m_fIntensity = (float)m_oIntensitySlider.GetPos()/100.f;
fn_vSetIntensity ();
UpdateData (FALSE);
}
else if (pScrollBar==(void*)&m_oRSlider)
{
m_fRValue = ((float)m_oRSlider.GetPos()/100.f);
fn_vSetColor ();
UpdateData (FALSE);
}
else if (pScrollBar==(void*)&m_oGSlider)
{
m_fGValue = ((float)m_oGSlider.GetPos()/100.f);
fn_vSetColor ();
UpdateData (FALSE);
}
else if (pScrollBar==(void*)&m_oBSlider)
{
m_fBValue = ((float)m_oBSlider.GetPos()/100.f);
fn_vSetColor ();
UpdateData (FALSE);
}
else if (pScrollBar==(void*)&m_oASlider)
{
m_fAValue = ((float)m_oASlider.GetPos()/100.f);
fn_vSetColor ();
UpdateData (FALSE);
}
else if (pScrollBar==(void*)&m_oNearSlider)
{
UpdateData (TRUE);
m_fNearValue = fn_iSlider2Value ( m_oNearSlider.GetPos() );
if (m_fNearValue>m_fFarValue)
{
m_fFarValue = m_fNearValue;
m_oFarSlider.SetPos(m_oNearSlider.GetPos());
}
fn_vSetNearFar ();
UpdateData (FALSE);
}
else if (pScrollBar==(void*)&m_oFarSlider)
{
UpdateData (TRUE);
m_fFarValue = fn_iSlider2Value ( m_oFarSlider.GetPos() );
if (m_fFarValue<m_fNearValue)
{
m_fNearValue = m_fFarValue;
m_oNearSlider.SetPos(m_oFarSlider.GetPos());
}
fn_vSetNearFar ();
UpdateData (FALSE);
}
CFormView::OnHScroll(nSBCode, nPos, pScrollBar);
}
void DiaLight::fn_vSetColor (void)
{
if (!m_poLight)
return;
m_poLight->fn_vSetColor ( m_fRValue*m_fIntensity, m_fGValue*m_fIntensity, m_fBValue*m_fIntensity, m_fAValue );
//ROMTEAM color lights Ionut Grozea 10-08-1998
if(!m_poLight->GetInterface()->fn_bGetColorMode())
m_poLight->SetMultiColor();
//ROMTEAM color lights Ionut Grozea 10-08-1998
// update control colors
GetDlgItem(IDC_LIGHT_COLOR_DEFINITION)->Invalidate();
}
void DiaLight::fn_vGetColor (void)
{
if (!m_poLight)
return;
m_poLight->fn_vGetColor ( &m_fRValue, &m_fGValue, &m_fBValue, &m_fAValue );
m_fIntensity = m_poLight->fn_fGetIntensity ();
if (m_fIntensity)
{
m_fRValue /= m_fIntensity;
m_fGValue /= m_fIntensity;
m_fBValue /= m_fIntensity;
}
fn_vInitSlider ();
}
void DiaLight::fn_vSetIntensity (void)
{
if (!m_poLight) return;
m_poLight->fn_vSetLightIntensity ( m_fIntensity );
}
void DiaLight::OnLightColorDefinition()
{
UpdateData (TRUE);
//ROMTEAM Color edition Ionut Grozea 1-08-1998
DiaColor oColor(this);
//ROMTEAM Color edition Ionut Grozea 1-08-1998
oColor.m_cc.rgbResult = RGB ( max(m_fRValue,0.f)*255., max(m_fGValue,0.f)*255., max(m_fBValue,0.f)*255. );
oColor.m_cc.Flags |= CC_RGBINIT;
oColor.RestoreDefaultColor();
if (oColor.DoModal()==IDOK)
{
COLORREF clr = oColor.GetColor();
m_fRValue = (float)(GetRValue (clr)/255.);
m_fGValue = (float)(GetGValue (clr)/255.);
m_fBValue = (float)(GetBValue (clr)/255.);
fn_vInitSlider ();
fn_vSetColor ();
UpdateData (FALSE);
}
}
void DiaLight::fn_vSetOnOff (Light* poLight)
{
if (!m_poLight)
return;
if (m_poLight==poLight) fn_vInitOnOff ();
}
void DiaLight::fn_vClicSector (CPA_BaseObject* poSector)
{
// set dialog list
if (m_oDisplayAllControl.GetCheck())
{ // select all mode
int iSectorIndex = m_SectorList.FindStringExact( 0, poSector->GetName() );
m_SectorList.SetSel ( iSectorIndex, !m_SectorList.GetSel(iSectorIndex) );
OnSelchangeLightSectorList();
}
else
{ // select sector mode
int iSectorIndex = m_SectorList.FindStringExact( 0, poSector->GetName() );
if (iSectorIndex>=0) m_SectorList.DeleteString (iSectorIndex);
else m_SectorList.AddString ( poSector->GetName() );
// set list of light
fn_vChangeSectorList ();
}
}
//--------------------------------------------------------------------------
// On/Off radios
//--------------------------------------------------------------------------
void DiaLight::fn_vInitOnOff (void)
{
if (!m_poLight)
return;
CheckRadioButton( IDC_LIGHT_ON_RADIO, IDC_LIGHT_OFF_RADIO, m_poLight->fn_bGetOnOff () ? IDC_LIGHT_ON_RADIO : IDC_LIGHT_OFF_RADIO );
CheckRadioButton( IDC_LIGHT_ACTIVE_ON_RADIO, IDC_LIGHT_ACTIVE_OFF_RADIO, m_poLight->fn_bIsLightOn () ? IDC_LIGHT_ACTIVE_ON_RADIO : IDC_LIGHT_ACTIVE_OFF_RADIO );
CheckRadioButton( IDC_MAP_ON_RADIO, IDC_MAP_OFF_RADIO, m_poLight->fn_bGetOnDecor () ? IDC_MAP_ON_RADIO : IDC_MAP_OFF_RADIO );
}
void DiaLight::OnLightOnRadio()
{
m_poLight->fn_vSetOnOff (TRUE);
}
void DiaLight::OnLightOffRadio()
{
m_poLight->fn_vSetOnOff (FALSE);
}
void DiaLight::OnLightAmbientButton()
{
fn_vEdit (NULL);
}
void DiaLight::fn_vInitEditName (void)
{
if (!m_poLight)
return;
m_csEditName = m_poLight->GetName();
}
void DiaLight::OnLightActiveOffRadio()
{
m_poLight->GetInterface()->fn_vSwitchOnLight ( m_poLight, FALSE );
}
void DiaLight::OnLightActiveOnRadio()
{
m_poLight->GetInterface()->fn_vSwitchOnLight ( m_poLight, TRUE );
}
void DiaLight::OnMapOffRadio()
{
m_poLight->fn_vSetOnDecor (FALSE);
m_poLight->fn_vNotifySave();
}
void DiaLight::OnMapOnRadio()
{
m_poLight->fn_vSetOnDecor (TRUE);
m_poLight->fn_vNotifySave();
}
//--------------------------------------------------------------------------
// Near/Far slider
//--------------------------------------------------------------------------
void DiaLight::OnKillfocusLightFarEdit()
{
if (m_pInterface->fn_bRunEngine())
return;
UpdateData (TRUE);
// m_fFarValue = max ( m_fNearValue, m_fFarValue );
if (m_fNearValue > m_fFarValue)
{
m_fNearValue = m_fFarValue;
m_oNearSlider.SetPos ( fn_lValue2Slider (m_fNearValue) );
}
m_oFarSlider.SetPos ( fn_lValue2Slider (m_fFarValue) );
fn_vCheckLimit ();
fn_vSetNearFar ();
UpdateData (FALSE);
m_bFarHasFocus=FALSE;
}
void DiaLight::OnKillfocusLightNearEdit()
{
if (m_pInterface->fn_bRunEngine())
return;
UpdateData (TRUE);
// m_fNearValue = min ( m_fNearValue, m_fFarValue );
if (m_fFarValue < m_fNearValue)
{
m_fFarValue = m_fNearValue;
m_oFarSlider.SetPos ( fn_lValue2Slider (m_fFarValue) );
}
m_oNearSlider.SetPos ( fn_lValue2Slider (m_fNearValue) );
fn_vCheckLimit ();
fn_vSetNearFar ();
UpdateData (FALSE);
m_bNearHasFocus=FALSE;
}
float DiaLight::fn_iSlider2Value ( int iSlider )
{
int iIndex = m_oTabControl.GetCurSel();
switch( iIndex )
{
case 0:
ASSERT(m_bNearFarTab || m_bAlphaTab);
return (float)(int)((exp((float)iSlider/180.f)-1.f)*1000.f+0.5)/1000.f;
case 1:
ASSERT(m_bAlphaTab);
return ((float)iSlider*178.f)/1000.f + 1.f;
default:
return 0.0f;
}
/*
if (m_bNearFarTab) return (float)(int)((exp((float)iSlider/180.f)-1.f)*1000.f+0.5)/1000.f;
return ((float)iSlider*178.f)/1000.f + 1.f;
*/
}
int DiaLight::fn_lValue2Slider ( float fValue )
{
int iIndex = m_oTabControl.GetCurSel();
switch( iIndex )
{
case 0:
ASSERT(m_bNearFarTab || m_bAlphaTab);
return (int)(180.f*(log(fValue+1.f))+0.5);
case 1:
ASSERT(m_bAlphaTab);
return (int)((fValue-1.f)*1000.f/178.f+0.5);
default:
return 0;
}
/*
if (m_bNearFarTab) return (int)(180.f*(log(fValue+1.f))+0.5);
return (int)((fValue-1.f)*1000.f/178.f+0.5);
*/
}
void DiaLight::fn_vCheckLimit (void)
{
int iIndex = m_oTabControl.GetCurSel();
switch( iIndex )
{
case 0:
ASSERT(m_bNearFarTab || m_bAlphaTab);
m_fNearValue = max ( m_fNearValue, 0. );
break;
case 1:
ASSERT(m_bAlphaTab);
m_fFarValue = min ( m_fFarValue, 179. );
break;
}
/*
if (m_bNearFarTab)
{
m_fNearValue = max ( m_fNearValue, 0. );
}
else
{
m_fNearValue = max ( m_fNearValue, 1. );
m_fFarValue = min ( m_fFarValue, 179. );
}
*/
}
void DiaLight::fn_vSetNearFar (void)
{
if (!m_poLight)
return;
int iIndex = m_oTabControl.GetCurSel();
MTH_tdxReal xNear, xFar;
MTH_tdxReal xLittleAlpha, xBigAlpha;
switch( iIndex )
{
case 0:
ASSERT( m_bNearFarTab || m_bAlphaTab );
xNear = (MTH_tdxReal) m_fNearValue;
xFar = (MTH_tdxReal) m_fFarValue;
m_poLight->fn_vSetLightNearFar ( xNear, xFar );
m_poLight->fn_vDrawEditObject();
break;
case 1:
ASSERT( m_bAlphaTab );
xLittleAlpha = (MTH_tdxReal)m_fNearValue * MTH_C_Pi / 180.f;
xBigAlpha = (MTH_tdxReal)m_fFarValue * MTH_C_Pi / 180.f;
m_poLight->fn_vSetLightAlpha ( xLittleAlpha, xBigAlpha );
m_poLight->fn_vDrawEditObject();
break;
}
/*
if (m_bNearFarTab)
{
ASSERT( iIndex == 0 );
}
else if( m_bAlphaTab )
{
MTH_tdxReal xLittleAlpha, xBigAlpha;
xLittleAlpha = (MTH_tdxReal)m_fNearValue * MTH_C_Pi / 180.f;
xBigAlpha = (MTH_tdxReal)m_fFarValue * MTH_C_Pi / 180.f;
m_poLight->fn_vSetLightAlpha ( xLittleAlpha, xBigAlpha );
m_poLight->fn_vDrawEditObject();
}
*/
}
//CHINA WFQ (MT) 16/02/98 {
void DiaLight::fn_vInitNearFarValue (void)
{
if (!m_poLight)
return;
GLI_tdxHandleToLight hLight = (GLI_tdxHandleToLight) m_poLight->GetEngineStruct ();
MTH_tdxReal xNear, xFar;
GLI_vGetLightNearFar ( hLight , &xNear, &xFar ) ;
m_fFarValue = xFar;
m_fNearValue = xNear;
m_oNearStatic.SetWindowText ("Near");
m_oFarStatic.SetWindowText ("Far");
m_oFarSlider.SetPos ( fn_lValue2Slider(m_fFarValue) );
m_oNearSlider.SetPos ( fn_lValue2Slider(m_fNearValue) );
UpdateData (FALSE);
}
void DiaLight::fn_vInitAlphaValue (void)
{
if (!m_poLight)
return;
GLI_tdxHandleToLight hLight = (GLI_tdxHandleToLight) m_poLight->GetEngineStruct ();
MTH_tdxReal xLittleAlpha, xBigAlpha;
GLI_vGetLightAlphas ( hLight, &xLittleAlpha, &xBigAlpha);
m_fNearValue = xLittleAlpha * 180.f / MTH_C_Pi;
m_fFarValue = xBigAlpha * 180.f / MTH_C_Pi;
m_oNearStatic.SetWindowText ("Little");
m_oFarStatic.SetWindowText ("Big");
m_oFarSlider.SetPos ( fn_lValue2Slider(m_fFarValue) );
m_oNearSlider.SetPos ( fn_lValue2Slider(m_fNearValue) );
UpdateData (FALSE);
}
void DiaLight::fn_vInitInternalValue(void)
{
if(!m_poLight)
return;
fn_vDisplayInternalExternalControls( TRUE );
GLI_tdxHandleToLight hLight = (GLI_tdxHandleToLight) m_poLight->GetEngineStruct ();
MTH3D_tdstVector xInter_Min_Pos, xInter_Max_Pos;
GLI_vGetLight_Inter_Min_Pos (hLight, &xInter_Min_Pos);
GLI_vGetLight_Inter_Max_Pos (hLight, &xInter_Max_Pos);
m_Get_Min_x = m_Min_X = xInter_Min_Pos.xX;
m_Get_Min_y = m_Min_Y = xInter_Min_Pos.xY;
m_Get_Min_z = m_Min_Z = xInter_Min_Pos.xZ;
m_Get_Max_x = m_Max_X = xInter_Max_Pos.xX;
m_Get_Max_y = m_Max_Y = xInter_Max_Pos.xY;
m_Get_Max_z = m_Max_Z = xInter_Max_Pos.xZ;
m_cMin_X.SetWindowText ("min_x");
m_cMin_Y.SetWindowText ("min_y");
m_cMin_Z.SetWindowText ("min_z");
m_cMax_X.SetWindowText ("max_x");
m_cMax_Y.SetWindowText ("max_y");
m_cMax_Z.SetWindowText ("max_z");
UpdateData (FALSE);
}
void DiaLight::fn_vInitExternalValue(void)
{
if(!m_poLight)
return;
fn_vDisplayInternalExternalControls( TRUE );
GLI_tdxHandleToLight hLight = (GLI_tdxHandleToLight) m_poLight->GetEngineStruct ();
MTH3D_tdstVector xExter_Min_Pos, xExter_Max_Pos;
GLI_vGetLight_Exter_Min_Pos (hLight, &xExter_Min_Pos);
GLI_vGetLight_Exter_Max_Pos (hLight, &xExter_Max_Pos);
m_Get_Min_X = m_Min_X = xExter_Min_Pos.xX;
m_Get_Min_Y = m_Min_Y = xExter_Min_Pos.xY;
m_Get_Min_Z = m_Min_Z = xExter_Min_Pos.xZ;
m_Get_Max_X = m_Max_X = xExter_Max_Pos.xX;
m_Get_Max_Y = m_Max_Y = xExter_Max_Pos.xY;
m_Get_Max_Z = m_Max_Z = xExter_Max_Pos.xZ;
m_cMin_X.SetWindowText ("min_X");
m_cMin_Y.SetWindowText ("min_Y");
m_cMin_Z.SetWindowText ("min_Z");
m_cMax_X.SetWindowText ("max_X");
m_cMax_Y.SetWindowText ("max_Y");
m_cMax_Z.SetWindowText ("max_Z");
UpdateData (FALSE);
}
void DiaLight::fn_vInitIntensityValue(void)
{
if(!m_poLight)
return;
fn_vDisplayInternalExternalControls( FALSE );
// uses Y controls to Intensity edition
M_ShowAndEnable(IDC_MIN_Y, TRUE);
M_ShowAndEnable(IDC_MIN_Y_EDIT, TRUE);
M_ShowAndEnable(IDC_MAX_Y, TRUE);
M_ShowAndEnable(IDC_MAX_Y_EDIT, TRUE);
GLI_tdxHandleToLight hLight = (GLI_tdxHandleToLight) m_poLight->GetEngineStruct ();
MTH_tdxReal xMin_I;
MTH_tdxReal xMax_I;
GLI_vGetLight_Intensity_Min_Max ( hLight , &xMin_I, &xMax_I ) ;
m_Get_Min_I = m_Min_Y = xMin_I;
m_Get_Max_I = m_Max_Y = xMax_I;
m_cMin_Y.SetWindowText ("min_I");
m_cMax_Y.SetWindowText ("max_I");
UpdateData (FALSE);
}
//ENDCHINA WFQ }
//ANNECY jt {
void DiaLight::fn_vInitFogValue (void)
{
if(!m_poLight) return;
GLI_tdxHandleToLight hLight = (GLI_tdxHandleToLight) m_poLight->GetEngineStruct ();
MTH_tdxReal xMaxI;
GLI_vGetLightNearFar ( hLight , &m_fFogNear, &m_fFogFar ) ;
GLI_vGetLightAlphas ( hLight, &m_fFogInfinite, &m_fFogBlendNear);
GLI_vGetLight_Intensity_Min_Max ( hLight , &m_fFogBlendFar, &xMaxI ) ;
UpdateData (FALSE);
}
//ENDANNECY jt }
//--------------------------------------------------------------------------
// Tab Control
//--------------------------------------------------------------------------
void DiaLight::fn_vInitTabControl (void)
{
if (!m_poLight)
return;
if( (m_poLight->GetSuperObject()->GetModelName() == csAmbientModelName) ||
(m_poLight->GetSuperObject()->GetModelName() == csParallelModelName) )
{
M_ShowAndEnable( IDC_LIGHT_TAB, FALSE );
m_oTabControl.DeleteAllItems ();
m_bNearFarTab = FALSE;
m_bAlphaTab = FALSE;
m_bInterExtraTab = FALSE;
}
else if(( m_poLight->GetSuperObject()->GetModelName() == csSphericalModelName ) ||
( m_poLight->GetSuperObject()->GetModelName() == csZModelName ))
{
M_ShowAndEnable( IDC_LIGHT_TAB, TRUE );
fn_vDisplayNearFarControls( TRUE );
// update TAB
if(m_bNearFarTab == FALSE)
{
TC_ITEM stTabCtrlItemNearFar;
m_oTabControl.DeleteAllItems ();
stTabCtrlItemNearFar.mask = TCIF_TEXT;
stTabCtrlItemNearFar.pszText = "Near/Far";
m_oTabControl.InsertItem( 0, &stTabCtrlItemNearFar);
m_oTabControl.SetCurSel ( 0 );
m_bNearFarTab = TRUE;
m_bAlphaTab = FALSE;
m_bInterExtraTab = FALSE;
}
}
else if( m_poLight->GetSuperObject()->GetModelName() == csSpotModelName )
{
M_ShowAndEnable( IDC_LIGHT_TAB, TRUE );
fn_vDisplayNearFarControls( TRUE );
// update TAB
if(m_bAlphaTab == FALSE)
{
TC_ITEM stTabCtrlItemNearFar;
TC_ITEM stTabCtrlItemAlpha;
m_oTabControl.DeleteAllItems ();
stTabCtrlItemNearFar.mask = TCIF_TEXT;
stTabCtrlItemAlpha .mask = TCIF_TEXT;
stTabCtrlItemNearFar.pszText = "Near/Far";
stTabCtrlItemAlpha .pszText = "Alpha";
m_oTabControl.InsertItem( 0, &stTabCtrlItemNearFar);
m_oTabControl.InsertItem( 1, &stTabCtrlItemAlpha );
m_oTabControl.SetCurSel ( 0 );
m_bNearFarTab = FALSE;
m_bAlphaTab = TRUE;
m_bInterExtraTab = FALSE;
}
}
else if( m_poLight->GetSuperObject()->GetModelName() == csParallelBoxModelName )
{
M_ShowAndEnable( IDC_LIGHT_TAB, TRUE );
fn_vDisplayInternalExternalControls( TRUE );
// update TAB
if(m_bInterExtraTab == FALSE)
{
TC_ITEM stTabCtrlItemInter;
TC_ITEM stTabCtrlItemExtra;
TC_ITEM stTabCtrlItemIntensity;
m_oTabControl.DeleteAllItems ();
stTabCtrlItemInter. mask = TCIF_TEXT;
stTabCtrlItemExtra. mask = TCIF_TEXT;
stTabCtrlItemIntensity. mask = TCIF_TEXT;
stTabCtrlItemInter. pszText = "In_vol";
stTabCtrlItemExtra. pszText = "Ex_vol";
stTabCtrlItemIntensity. pszText = "Inten_val";
m_oTabControl.InsertItem( 0, &stTabCtrlItemInter);
m_oTabControl.InsertItem( 1, &stTabCtrlItemExtra);
m_oTabControl.InsertItem( 2, &stTabCtrlItemIntensity);
m_oTabControl. SetCurSel( 0 );
m_bNearFarTab = FALSE;
m_bAlphaTab = FALSE;
m_bInterExtraTab = TRUE;
}
}
else if( m_poLight->GetSuperObject()->GetModelName() == csFogModelName )
{
M_ShowAndEnable( IDC_LIGHT_TAB, FALSE );
fn_vDisplayFogControl (TRUE);
fn_vInitFogValue ();
m_oTabControl.DeleteAllItems ();
m_bNearFarTab = FALSE;
m_bAlphaTab = FALSE;
m_bInterExtraTab = FALSE;
}
}
//CHINA WFQ (MT) 16/02/98 {
void DiaLight::OnSelchangeLightTab(NMHDR* pNMHDR, LRESULT* pResult)
{
if (pNMHDR->idFrom==IDC_LIGHT_TAB)
{
fn_vSwapLightTab();
}
*pResult = 0;
}
//ENDCHINA WFQ }
static int iOldIndex = 0;
void DiaLight::fn_vSwapLightTab()
{
int iIndex = m_oTabControl.GetCurSel();
switch( iIndex )
{
case 0:
if( m_bNearFarTab || m_bAlphaTab )
{
fn_vInitNearFarValue ();
}
else if( m_bInterExtraTab )
{
if (iOldIndex != iIndex)
{
m_oTabControl.SetCurSel(iOldIndex);
if (m_bMaxXHasFocus==TRUE)
{
OnKillfocusMaxXEdit();
}
else if (m_bMaxYHasFocus==TRUE)
{
OnKillfocusMaxYEdit();
}
else if (m_bMaxZHasFocus==TRUE)
{
OnKillfocusMaxZEdit();
}
else if (m_bMinXHasFocus==TRUE)
{
OnKillfocusMinXEdit();
}
else if (m_bMinYHasFocus==TRUE)
{
OnKillfocusMinYEdit();
}
else if (m_bMinZHasFocus==TRUE)
{
OnKillfocusMinZEdit();
}
m_oTabControl.SetCurSel(iIndex);
}
fn_vInitInternalValue();
}
break;
case 1:
if( m_bAlphaTab )
{
fn_vInitAlphaValue ();
}
else if( m_bInterExtraTab )
{
if (iOldIndex != iIndex)
{
m_oTabControl.SetCurSel(iOldIndex);
if (m_bMaxXHasFocus==TRUE)
{
OnKillfocusMaxXEdit();
}
else if (m_bMaxYHasFocus==TRUE)
{
OnKillfocusMaxYEdit();
}
else if (m_bMaxZHasFocus==TRUE)
{
OnKillfocusMaxZEdit();
}
else if (m_bMinXHasFocus==TRUE)
{
OnKillfocusMinXEdit();
}
else if (m_bMinYHasFocus==TRUE)
{
OnKillfocusMinYEdit();
}
else if (m_bMinZHasFocus==TRUE)
{
OnKillfocusMinZEdit();
}
m_oTabControl.SetCurSel(iIndex);
}
fn_vInitExternalValue();
}
break;
case 2:
if( m_bInterExtraTab )
{
if (iOldIndex != iIndex)
{
m_oTabControl.SetCurSel(iOldIndex);
if (m_bMaxXHasFocus==TRUE)
{
OnKillfocusMaxXEdit();
}
else if (m_bMaxYHasFocus==TRUE)
{
OnKillfocusMaxYEdit();
}
else if (m_bMaxZHasFocus==TRUE)
{
OnKillfocusMaxZEdit();
}
else if (m_bMinXHasFocus==TRUE)
{
OnKillfocusMinXEdit();
}
else if (m_bMinYHasFocus==TRUE)
{
OnKillfocusMinYEdit();
}
else if (m_bMinZHasFocus==TRUE)
{
OnKillfocusMinZEdit();
}
m_oTabControl.SetCurSel(iIndex);
}
fn_vInitIntensityValue();
}
break;
}
iOldIndex = iIndex;
}
//--------------------------------------------------------------------------
// Sectors management
//--------------------------------------------------------------------------
void DiaLight::OnLightDisplayAll()
{
fn_vRefreshSectorList();
}
void DiaLight::OnLightAffectAll()
{
if (!m_poLight)
return;
CPA_List<CPA_SuperObject>* poSectorList = m_poLight->fn_pGetSectorList();
poSectorList->RemoveAll ();
POSITION xSuperObjectPos;
CPA_SuperObject* poSuperObject;
CPA_List<CPA_SuperObject>* poList = m_poLight->GetInterface()->GetInterface()->GetObjectListByType (C_szSectorTypeName);
// set all the sectors in the list
for ( poSuperObject=poList->GetHeadElement(xSuperObjectPos); xSuperObjectPos; poSuperObject=poList->GetNextElement(xSuperObjectPos) )
m_poLight->fn_vAddSector (poSuperObject);
m_poLight->GetInterface()->fn_vRefreshLight(m_poLight);
m_poLight->fn_vNotifySave ();
fn_vRefreshSectorList();
}
void DiaLight::OnSelchangeLightSectorList()
{
if (!m_poLight)
return;
if (!m_oDisplayAllControl.GetCheck())
{
m_SectorList.SelItemRange( FALSE, 0, m_SectorList.GetCount() );
return;
}
CPA_List<CPA_SuperObject>* poSectorList = m_poLight->fn_pGetSectorList();
poSectorList->RemoveAll ();
POSITION xSuperObjectPos;
CPA_SuperObject* poSuperObject;
CPA_List<CPA_SuperObject>* poList = m_poLight->GetInterface()->GetInterface()->GetObjectListByType (C_szSectorTypeName);
m_poLight->GetInterface()->fn_vAddModifSectorList ( poList );
// set all the sectors in the list
for ( poSuperObject=poList->GetHeadElement(xSuperObjectPos); xSuperObjectPos; poSuperObject=poList->GetNextElement(xSuperObjectPos) )
{
int iSectorPos = m_SectorList.FindStringExact ( 0, poSuperObject->GetObject()->GetName() );
if (m_SectorList.GetSel(iSectorPos))
if (!m_poLight->fn_vAddSector (poSuperObject))
m_SectorList.SetSel ( iSectorPos, FALSE );
}
m_poLight->GetInterface()->fn_vRefreshLight(m_poLight);
m_poLight->fn_vNotifySave ();
// color the sectors
if (m_oSee.GetCheck()) m_poLight->fn_vPaintSector ();
}
void DiaLight::fn_vChangeSectorList (void)
{
if (!m_poLight)
return;
CPA_List<CPA_SuperObject>* poSectorList = m_poLight->fn_pGetSectorList();
poSectorList->RemoveAll ();
POSITION xSuperObjectPos;
CPA_SuperObject* poSuperObject;
CPA_List<CPA_SuperObject>* poList = m_poLight->GetInterface()->GetInterface()->GetObjectListByType (C_szSectorTypeName);
// set all the sectors in the list
for ( poSuperObject=poList->GetHeadElement(xSuperObjectPos); xSuperObjectPos; poSuperObject=poList->GetNextElement(xSuperObjectPos) )
{
int iSectorPos = m_SectorList.FindStringExact ( 0, poSuperObject->GetObject()->GetName() );
if (iSectorPos>=0) m_poLight->fn_vAddSector (poSuperObject);
}
m_poLight->GetInterface()->fn_vRefreshLight(m_poLight);
m_poLight->fn_vNotifySave ();
// color the sectors
if (m_oSee.GetCheck()) m_poLight->fn_vPaintSector ();
}
void DiaLight::OnLightSEE()
{
if (!m_poLight)
return;
m_poLight->fn_vPaintSector ( m_oSee.GetCheck() );
}
void DiaLight::OnLightDefault()
{
if (!m_poLight)
return;
m_poLight->fn_vComputeSector ();
m_pInterface->fn_vRefreshLight(m_poLight);
fn_vRefreshSectorList();
}
void DiaLight::OnKillfocusLightNameEdit()
{
if (m_pInterface->fn_bRunEngine())
return;
if (!m_poLight)
return;
CString pOldName = m_csEditName;
UpdateData (TRUE);
if (pOldName == m_csEditName) return;
if (m_poLight->fn_eRename (m_csEditName)!=E_mc_None)
{
m_pInterface->fn_vGiveProgressInfo (m_csEditName+CString( " is already used."), -1);
m_csEditName=pOldName;
UpdateData (FALSE);
}
else
{
m_poLight->GetInterface()->fn_vRefreshHierarchyList ();
}
m_bNameEditHasFocus=FALSE;
}
void DiaLight::OnSetfocusLightFarEdit()
{
m_bFarHasFocus=TRUE;
}
void DiaLight::OnSetfocusLightNearEdit()
{
m_bNearHasFocus=TRUE;
}
void DiaLight::OnLightRealRadio()
{
m_pInterface->fn_vSetRLIDrawMask (FALSE);
}
void DiaLight::OnLightRliRadio()
{
m_pInterface->fn_vSetRLIDrawMask (TRUE);
}
void DiaLight::OnSetfocusLightNameEdit()
{
m_bNameEditHasFocus=TRUE;
}
void DiaLight::OnSetfocusLightIntensityEdit()
{
m_bIntensityEditHasFocus=TRUE;
}
//--------------------------------------------------------------------------
// Dialog icons
//--------------------------------------------------------------------------
void DiaLight::fn_vDisplayIcon (void)
{
// hide all icons
//fn_vDisplayCommonIcons( SW_HIDE );
// show real icons
if (!m_poLight->fn_bIs3DsMaxLight())
{
switch (m_poLight->fn_lGetType())
{
case GLI_C_lSphericalLight:
M_Show (IDC_SPHERICAL_LIGHT_PICTURE, SW_SHOW );
break;
case GLI_C_lHotSpotLight :
M_Show (IDC_SPOT_LIGHT_PICTURE, SW_SHOW );
break;
case GLI_C_lParallelLight :
M_Show (IDC_PARALLEL_LIGHT_PICTURE, SW_SHOW );
break;
case GLI_C_lAmbientLight :
M_Show (IDC_AMBIENT_LIGHT_PICTURE, SW_SHOW );
break;
case GLI_C_lParallelLight_With_Limit:
M_Show (IDC_PARABOX_LIGHT_PICTURE, SW_SHOW );
break;
//ROMTEAM Z_Light Ionut Grozea 01-05-1998
/*
case GLI_C_lZ_Light:
M_Show (IDC_Z_LIGHT1, SW_SHOW );
break;
*/
//ENDROMTEAM Z_Light Ionut Grozea 01-05-1998
case GLI_C_lFogLight :
M_Show (IDC_FOG_PICTURE, SW_SHOW );
break;
}
}
else
{
switch (m_poLight->fn_lGetType())
{
case GLI_C_lParallelLight_With_Limit:
M_Show (IDC_PARABOX_IMPORT_LIGHT_PICTURE, SW_SHOW );
break;
case GLI_C_lSphericalLight:
M_Show (IDC_SPHERICAL_IMPORT_LIGHT_PICTURE, SW_SHOW );
break;
case GLI_C_lHotSpotLight :
M_Show (IDC_SPOT_IMPORT_LIGHT_PICTURE, SW_SHOW );
break;
case GLI_C_lParallelLight :
M_Show (IDC_PARALLEL_IMPORT_LIGHT_PICTURE, SW_SHOW );
break;
case GLI_C_lAmbientLight :
M_Show (IDC_AMBIENT_IMPORT_LIGHT_PICTURE, SW_SHOW );
break;
}
}
}
BOOL DiaLight::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
BOOL bCreate = CFormView::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
TUT_M_vGetTutDll ();
TUT_M_vRegisterControl (m_hWnd , "OLG_LightWindow", TUT_e_Window);
TUT_M_vRegisterControlID (IDC_LIGHT_R_SLIDER, "OLG_RedSlider", TUT_e_Slider);
TUT_M_vRegisterControlID (IDC_LIGHT_G_SLIDER, "OLG_GreenSlider", TUT_e_Slider);
TUT_M_vRegisterControlID (IDC_LIGHT_B_SLIDER, "OLG_BlueSlider", TUT_e_Slider);
TUT_M_vRegisterControlID (IDC_LIGHT_A_SLIDER, "OLG_AlphaSlider", TUT_e_Slider);
TUT_M_vRegisterControlID (IDC_LIGHT_R_EDIT, "OLG_RedEdit", TUT_e_TextEdit);
TUT_M_vRegisterControlID (IDC_LIGHT_G_EDIT, "OLG_GreenEdit", TUT_e_TextEdit);
TUT_M_vRegisterControlID (IDC_LIGHT_B_EDIT, "OLG_BlueEdit", TUT_e_TextEdit);
TUT_M_vRegisterControlID (IDC_LIGHT_A_EDIT, "OLG_AlphaEdit", TUT_e_TextEdit);
TUT_M_vRegisterControlID (IDC_LIGHT_ON_RADIO, "OLG_LightOn", TUT_e_Button);
TUT_M_vRegisterControlID (IDC_LIGHT_OFF_RADIO, "OLG_LightOff", TUT_e_Button);
TUT_M_vRegisterControlID (IDC_LIGHT_ACTIVE_ON_RADIO,"OLG_ActiveOn", TUT_e_Button);
TUT_M_vRegisterControlID (IDC_LIGHT_ACTIVE_OFF_RADIO,"OLG_ActiveOff", TUT_e_Button);
TUT_M_vRegisterControlID (IDC_MAP_ON_RADIO, "OLG_MapOn", TUT_e_Button);
TUT_M_vRegisterControlID (IDC_MAP_OFF_RADIO, "OLG_MapOff", TUT_e_Button);
TUT_M_vRegisterControlID (IDC_LIGHT_COLOR_DEFINITION,"OLG_ColorDefine", TUT_e_Button);
TUT_M_vRegisterControlID (IDC_LIGHT_AFFECT_ALL, "OLG_AllSectors", TUT_e_Button);
TUT_M_vRegisterControlID (IDC_LIGHT_DEFAULT, "OLG_DefaultSectors", TUT_e_Button);
TUT_M_vRegisterControlID (IDC_LIGHT_SEE, "OLG_See", TUT_e_Button);
TUT_M_vRegisterControlID (IDC_LIGHT_DISPLAY_ALL, "OLG_DisplayAll", TUT_e_Button);
TUT_M_vRegisterControlID (IDC_LIGHT_SECTOR_LIST, "OLG_SectorList", TUT_e_ListBox);
TUT_M_vRegisterControlID (IDC_LIGHT_NAME_EDIT, "OLG_NameEdit", TUT_e_TextEdit);
TUT_M_vRegisterControlID (IDC_LIGHT_NEAR_SLIDER, "OLG_NearSlider", TUT_e_Slider);
TUT_M_vRegisterControlID (IDC_LIGHT_FAR_SLIDER, "OLG_FarSlider", TUT_e_Slider);
TUT_M_vRegisterControlID (IDC_LIGHT_NEAR_EDIT, "OLG_NearEdit", TUT_e_TextEdit);
TUT_M_vRegisterControlID (IDC_LIGHT_FAR_EDIT, "OLG_FarEdit", TUT_e_TextEdit);
TUT_M_vRegisterControlID (IDC_LIGHT_TAB, "OLG_LightTab", TUT_e_Window); // <- Onglet
TUT_M_vRegisterControlID (IDC_LIGHT_INTENSITY_SLIDER,"OLG_IntensitySlider", TUT_e_Slider);
TUT_M_vRegisterControlID (IDC_LIGHT_INTENSITY_EDIT, "OLG_IntensityEdit", TUT_e_TextEdit);
//ROMTEAM BlendRLI (Ionut Grozea 24/02/98)
TUT_M_vRegisterControlID (IDC_BUTTON_NORMAL, "OLG_TypeNormal", TUT_e_Button);
TUT_M_vRegisterControlID (IDC_BUTTON_PAINT, "OLG_TypePaint", TUT_e_Button);
TUT_M_vRegisterControlID (IDC_BUTTON_BACK, "OLG_TypeBack", TUT_e_Button);
//ROMTEAM Ionut Grozea (Compute all 19.05.98)
TUT_M_vRegisterControlID (IDC_BUTTON_COMPUTE_ALL, "OLG_TypeComputeAll", TUT_e_Button);
//ENDROMTEAM Ionut Grozea (Compute all 19.05.98)
//ENDROMTEAM BlendRLI (Ionut Grozea)
TUT_M_vRegisterControlID (IDC_MIN_X_EDIT, "OLG_ParaBox_MinX", TUT_e_TextEdit);
TUT_M_vRegisterControlID (IDC_MIN_Y_EDIT, "OLG_ParaBox_MinY", TUT_e_TextEdit);
TUT_M_vRegisterControlID (IDC_MIN_Z_EDIT, "OLG_ParaBox_MinZ", TUT_e_TextEdit);
TUT_M_vRegisterControlID (IDC_MAX_X_EDIT, "OLG_ParaBox_MaxX", TUT_e_TextEdit);
TUT_M_vRegisterControlID (IDC_MAX_Y_EDIT, "OLG_ParaBox_MaxY", TUT_e_TextEdit);
TUT_M_vRegisterControlID (IDC_MAX_Z_EDIT, "OLG_ParaBox_MaxZ", TUT_e_TextEdit);
TUT_M_vRegisterControlID (IDC_BUTTON_REAL_LIGHT, "OLG_DisplayRealOrAll", TUT_e_Button);
return bCreate;
}
void DiaLight::OnDestroy()
{
CFormView::OnDestroy();
TUT_M_vGetTutDll ();
TUT_M_vUnregisterControl (m_hWnd);
TUT_M_vUnregisterControlID (IDC_LIGHT_R_SLIDER);
TUT_M_vUnregisterControlID (IDC_LIGHT_G_SLIDER);
TUT_M_vUnregisterControlID (IDC_LIGHT_B_SLIDER);
TUT_M_vUnregisterControlID (IDC_LIGHT_A_SLIDER);
TUT_M_vUnregisterControlID (IDC_LIGHT_R_EDIT);
TUT_M_vUnregisterControlID (IDC_LIGHT_G_EDIT);
TUT_M_vUnregisterControlID (IDC_LIGHT_B_EDIT);
TUT_M_vUnregisterControlID (IDC_LIGHT_A_EDIT);
TUT_M_vUnregisterControlID (IDC_LIGHT_ON_RADIO);
TUT_M_vUnregisterControlID (IDC_LIGHT_OFF_RADIO);
TUT_M_vUnregisterControlID (IDC_LIGHT_ACTIVE_ON_RADIO);
TUT_M_vUnregisterControlID (IDC_LIGHT_ACTIVE_OFF_RADIO);
TUT_M_vUnregisterControlID (IDC_MAP_ON_RADIO);
TUT_M_vUnregisterControlID (IDC_MAP_OFF_RADIO);
TUT_M_vUnregisterControlID (IDC_LIGHT_COLOR_DEFINITION);
TUT_M_vUnregisterControlID (IDC_LIGHT_AFFECT_ALL);
TUT_M_vUnregisterControlID (IDC_LIGHT_DEFAULT);
TUT_M_vUnregisterControlID (IDC_LIGHT_SEE);
TUT_M_vUnregisterControlID (IDC_LIGHT_DISPLAY_ALL);
TUT_M_vUnregisterControlID (IDC_LIGHT_SECTOR_LIST);
TUT_M_vUnregisterControlID (IDC_LIGHT_NAME_EDIT);
TUT_M_vUnregisterControlID (IDC_LIGHT_NEAR_SLIDER);
TUT_M_vUnregisterControlID (IDC_LIGHT_FAR_SLIDER);
TUT_M_vUnregisterControlID (IDC_LIGHT_NEAR_EDIT);
TUT_M_vUnregisterControlID (IDC_LIGHT_FAR_EDIT);
TUT_M_vUnregisterControlID (IDC_LIGHT_TAB);
TUT_M_vUnregisterControlID (IDC_LIGHT_INTENSITY_SLIDER);
TUT_M_vUnregisterControlID (IDC_LIGHT_INTENSITY_EDIT);
//ROMTEAM BlendRLI (Ionut Grozea 24/02/98)
TUT_M_vUnregisterControlID (IDC_BUTTON_NORMAL);
TUT_M_vUnregisterControlID (IDC_BUTTON_PAINT);
TUT_M_vUnregisterControlID (IDC_BUTTON_BACK);
//ROMTEAM Ionut Grozea (Compute all 19.05.98)
TUT_M_vUnregisterControlID (IDC_BUTTON_COMPUTE_ALL);
//ENDROMTEAM Ionut Grozea (Compute all 19.05.98)
//ENDROMTEAM BlendRLI (Ionut Grozea)
TUT_M_vUnregisterControlID (IDC_MIN_X_EDIT);
TUT_M_vUnregisterControlID (IDC_MIN_Y_EDIT);
TUT_M_vUnregisterControlID (IDC_MIN_Z_EDIT);
TUT_M_vUnregisterControlID (IDC_MAX_X_EDIT);
TUT_M_vUnregisterControlID (IDC_MAX_Y_EDIT);
TUT_M_vUnregisterControlID (IDC_MAX_Z_EDIT);
TUT_M_vUnregisterControlID (IDC_BUTTON_REAL_LIGHT);
}
//CHINA WFQ (MT) 16/02/98 {
void DiaLight::OnSetfocusMaxXEdit()
{
// TODO: Add your control notification handler code here
m_bMaxXHasFocus=TRUE;
}
void DiaLight::OnSetfocusMaxYEdit()
{
// TODO: Add your control notification handler code here
m_bMaxYHasFocus=TRUE;
}
void DiaLight::OnSetfocusMaxZEdit()
{
// TODO: Add your control notification handler code here
m_bMaxZHasFocus=TRUE;
}
void DiaLight::OnSetfocusMinXEdit()
{
// TODO: Add your control notification handler code here
m_bMinXHasFocus=TRUE;
}
void DiaLight::OnSetfocusMinYEdit()
{
// TODO: Add your control notification handler code here
m_bMinYHasFocus=TRUE;
}
void DiaLight::OnSetfocusMinZEdit()
{
// TODO: Add your control notification handler code here
m_bMinZHasFocus=TRUE;
}
void DiaLight::OnKillfocusMinZEdit()
{
if (m_pInterface->fn_bRunEngine())
return;
// TODO: Add your control notification handler code here
UpdateData (TRUE);
if(m_oTabControl.GetCurSel() == 1)
{
m_Get_Min_Z = m_Min_Z;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
// m_Get_Min_Z = (float)min ( m_Get_Min_Z, m_Get_Min_z );
// m_Get_Min_Z = (float)max ( m_Get_Min_Z, -LIMIT);
m_Get_Min_Z = (float)max ( m_Get_Min_Z, -LIMIT);
m_Get_Min_z = (float)max ( m_Get_Min_Z, m_Get_Min_z);
m_Get_Max_z = (float)max ( m_Get_Min_Z, m_Get_Max_z);
m_Get_Max_Z = (float)max ( m_Get_Min_Z, m_Get_Max_Z);
//ROMTEAM parallel box Ionut Grozea 1-08-1998
m_Min_Z = m_Get_Min_Z;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
m_Max_Z = m_Get_Max_Z;
fn_vSetxyzXYZ ();
//ROMTEAM parallel box Ionut Grozea 1-08-1998
}
else if(m_oTabControl.GetCurSel() == 0)
{
m_Get_Min_z = m_Min_Z;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
// m_Get_Min_z = (float)min ( m_Get_Min_z, m_Get_Max_z );
// m_Get_Min_z = (float)max ( m_Get_Min_z, m_Get_Min_Z );
m_Get_Max_z = (float)max ( m_Get_Min_z, m_Get_Max_z );
m_Get_Max_Z = (float)max ( m_Get_Min_z, m_Get_Max_Z );
m_Get_Min_Z = (float)min ( m_Get_Min_z, m_Get_Min_Z );
m_Max_Z = m_Get_Max_z;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
m_Min_Z = m_Get_Min_z;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
fn_vSetxyzXYZ ();
//ROMTEAM parallel box Ionut Grozea 1-08-1998
};
m_bMinZHasFocus = FALSE;
UpdateData (FALSE);
}
void DiaLight::OnKillfocusMinYEdit()
{
if (m_pInterface->fn_bRunEngine())
return;
// TODO: Add your control notification handler code here
UpdateData (TRUE);
if(m_oTabControl.GetCurSel() == 1)
{
m_Get_Min_Y = m_Min_Y;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
// m_Get_Min_Y = (float)min ( m_Get_Min_Y, m_Get_Min_y );
// m_Get_Min_Y = (float)max ( m_Get_Min_Y, -LIMIT);
//ROMTEAM parallel box Ionut Grozea 1-08-1998
m_Get_Min_Y = (float)max ( m_Get_Min_Y, -LIMIT);
m_Get_Min_y = (float)max ( m_Get_Min_Y, m_Get_Min_y);
m_Get_Max_y = (float)max ( m_Get_Min_Y, m_Get_Max_y);
m_Get_Max_Y = (float)max ( m_Get_Min_Y, m_Get_Max_Y);
//ROMTEAM parallel box Ionut Grozea 1-08-1998
m_Min_Y = m_Get_Min_Y;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
m_Max_Y = m_Get_Max_Y;
fn_vSetxyzXYZ ();
//ROMTEAM parallel box Ionut Grozea 1-08-1998
}
else if(m_oTabControl.GetCurSel() == 0)
{
m_Get_Min_y = m_Min_Y;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
// m_Get_Min_y = (float)min ( m_Get_Min_y, m_Get_Max_y );
// m_Get_Min_y = (float)max ( m_Get_Min_y, m_Get_Min_Y );
m_Get_Max_y = (float)max ( m_Get_Min_y, m_Get_Max_y );
m_Get_Max_Y = (float)max ( m_Get_Min_y, m_Get_Max_Y );
m_Get_Min_Y = (float)min ( m_Get_Min_y, m_Get_Min_Y );
m_Max_Y = m_Get_Max_y;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
m_Min_Y = m_Get_Min_y;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
fn_vSetxyzXYZ ();
//ROMTEAM parallel box Ionut Grozea 1-08-1998
// m_Min_Y = m_Get_Min_y;
// fn_vSetMinxyz ();
}
else if(m_oTabControl.GetCurSel() == 2)
{
if (m_bMinYHasFocus)
{
m_Get_Min_I = m_Min_Y;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
m_Get_Min_I = (float)max ( m_Get_Min_I, 0);
m_Get_Max_I = (float)max ( m_Get_Min_I, m_Get_Max_I);
m_Min_Y = m_Get_Min_I;
m_Max_Y = m_Get_Max_I;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
fn_vSetMinMaxI ();
}
}
m_bMinYHasFocus = FALSE;
UpdateData (FALSE);
}
void DiaLight::OnKillfocusMinXEdit()
{
if (m_pInterface->fn_bRunEngine())
return;
// TODO: Add your control notification handler code here
UpdateData (TRUE);
if(m_oTabControl.GetCurSel() == 1)
{
m_Get_Min_X = m_Min_X;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
// m_Get_Min_X = (float)min ( m_Get_Min_X, m_Get_Min_x );
// m_Get_Min_X = (float)max ( m_Get_Min_X, -LIMIT);
//ROMTEAM parallel box Ionut Grozea 1-08-1998
m_Get_Min_X = (float)max ( m_Get_Min_Z, -LIMIT);
m_Get_Min_x = (float)max ( m_Get_Min_X, m_Get_Min_x);
m_Get_Max_x = (float)max ( m_Get_Min_X, m_Get_Max_x);
m_Get_Max_X = (float)max ( m_Get_Min_X, m_Get_Max_X);
//ROMTEAM parallel box Ionut Grozea 1-08-1998
m_Min_X = m_Get_Min_X;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
m_Max_X = m_Get_Max_X;
fn_vSetxyzXYZ ();
//ROMTEAM parallel box Ionut Grozea 1-08-1998
// m_Min_X = m_Get_Min_X;
// fn_vSetMinXYZ ();
}
else if(m_oTabControl.GetCurSel() == 0)
{
m_Get_Min_x = m_Min_X;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
// m_Get_Min_x = (float)min ( m_Get_Min_x, m_Get_Max_x );
// m_Get_Min_x = (float)max ( m_Get_Min_x, m_Get_Min_X );
//ROMTEAM parallel box Ionut Grozea 1-08-1998
m_Get_Max_x= (float)max ( m_Get_Min_x, m_Get_Max_x);
m_Get_Max_X= (float)max ( m_Get_Min_x ,m_Get_Max_X);
m_Get_Min_X= (float)min ( m_Get_Min_x, m_Get_Min_X);
m_Max_X= m_Get_Max_x;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
m_Min_X= m_Get_Min_x;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
fn_vSetxyzXYZ ();
//ROMTEAM parallel box Ionut Grozea 1-08-1998
// m_Min_X = m_Get_Min_x;
// fn_vSetMinxyz ();
};
m_bMinXHasFocus = FALSE;
UpdateData (FALSE);
}
void DiaLight::OnKillfocusMaxZEdit()
{
if (m_pInterface->fn_bRunEngine())
return;
// TODO: Add your control notification handler code here
UpdateData (TRUE);
if(m_oTabControl.GetCurSel() == 1)
{
m_Get_Max_Z = m_Max_Z;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
// m_Get_Max_Z = (float)max ( m_Get_Max_Z, m_Get_Max_z );
// m_Get_Max_Z = (float)min ( m_Get_Max_Z, LIMIT);
//ROMTEAM parallel box Ionut Grozea 1-08-1998
m_Get_Max_Z = (float)min ( m_Get_Max_Z, LIMIT);
m_Get_Max_z = (float)min ( m_Get_Max_Z, m_Get_Max_z );
m_Get_Min_z = (float)min ( m_Get_Max_Z, m_Get_Min_z );
m_Get_Min_Z = (float)min ( m_Get_Max_Z, m_Get_Min_Z );
m_Max_Z = m_Get_Max_Z;
m_Min_Z = m_Get_Min_Z;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
// fn_vSetMaxXYZ ();
fn_vSetxyzXYZ ();
}
else if(m_oTabControl.GetCurSel() == 0)
{
m_Get_Max_z = m_Max_Z;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
// m_Get_Max_z = (float)min ( m_Get_Max_Z, m_Get_Max_z );
// m_Get_Max_z = (float)max ( m_Get_Min_z, m_Get_Max_z );
m_Get_Max_Z = (float)max ( m_Get_Max_Z, m_Get_Max_z );
m_Get_Min_z = (float)min ( m_Get_Min_z, m_Get_Max_z );
m_Get_Min_Z = (float)min ( m_Get_Min_Z, m_Get_Max_z );
m_Min_Z = m_Get_Min_z;
m_Max_Z = m_Get_Max_z;
fn_vSetxyzXYZ ();
};
m_bMaxZHasFocus = FALSE;
UpdateData (FALSE);
}
void DiaLight::OnKillfocusMaxYEdit()
{
if (m_pInterface->fn_bRunEngine())
return;
// TODO: Add your control notification handler code here
UpdateData (TRUE);
if(m_oTabControl.GetCurSel() == 1)
{
m_Get_Max_Y = m_Max_Y;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
// m_Get_Max_Y = (float)max ( m_Get_Max_Y, m_Get_Max_y );
// m_Get_Max_Y = (float)min ( m_Get_Max_Y, LIMIT);
m_Get_Max_Y = (float)min ( m_Get_Max_Y, LIMIT);
m_Get_Max_y = (float)min ( m_Get_Max_Y, m_Get_Max_y );
m_Get_Min_y = (float)min ( m_Get_Max_Y, m_Get_Min_y );
m_Get_Min_Y = (float)min ( m_Get_Max_Y, m_Get_Min_Y );
m_Max_Y = m_Get_Max_Y;
m_Min_Y = m_Get_Min_Y;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
// fn_vSetMaxXYZ ();
fn_vSetxyzXYZ ();
// m_Max_Y = m_Get_Max_Y;
// fn_vSetMaxXYZ ();
}
else if(m_oTabControl.GetCurSel() == 0)
{
m_Get_Max_y = m_Max_Y;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
// m_Get_Max_y = (float)min ( m_Get_Max_Y, m_Get_Max_y );
// m_Get_Max_y = (float)max ( m_Get_Min_y, m_Get_Max_y );
m_Get_Max_Y = (float)max ( m_Get_Max_Y, m_Get_Max_y );
m_Get_Min_y = (float)min ( m_Get_Min_y, m_Get_Max_y );
m_Get_Min_Y = (float)min ( m_Get_Min_Y, m_Get_Max_y );
m_Min_Y = m_Get_Min_y;
m_Max_Y = m_Get_Max_y;
fn_vSetxyzXYZ ();
// m_Max_Y = m_Get_Max_y;
// fn_vSetMaxxyz ();
}
else if(m_oTabControl.GetCurSel() == 2)
{
if (m_bMaxYHasFocus)
{
m_Get_Max_I = m_Max_Y;
m_Get_Max_I = (float)min ( m_Get_Max_I, 100);
// m_Get_Max_I = (float)max ( m_Get_Max_I, m_Get_Min_I);
//ROMTEAM parallel box Ionut Grozea 1-08-1998
m_Get_Min_I = (float)min ( m_Get_Max_I, m_Get_Min_I);
m_Max_Y = m_Get_Max_I;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
m_Min_Y = m_Get_Min_I;
fn_vSetMinMaxI();
}
};
m_bMaxYHasFocus = FALSE;
UpdateData (FALSE);
}
void DiaLight::OnKillfocusMaxXEdit()
{
if (m_pInterface->fn_bRunEngine())
return;
// TODO: Add your control notification handler code here
UpdateData (TRUE);
if(m_oTabControl.GetCurSel() == 1)
{
m_Get_Max_X = m_Max_X;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
// m_Get_Max_X = (float)max ( m_Get_Max_X, m_Get_Max_x );
// m_Get_Max_X = (float)min ( m_Get_Max_X, LIMIT);
m_Get_Max_X = (float)min ( m_Get_Max_X, LIMIT);
m_Get_Max_x = (float)min ( m_Get_Max_X, m_Get_Max_x );
m_Get_Min_x = (float)min ( m_Get_Max_X, m_Get_Min_x );
m_Get_Min_X = (float)min ( m_Get_Max_X, m_Get_Min_X );
m_Max_X = m_Get_Max_X;
m_Min_X = m_Get_Min_X;
fn_vSetxyzXYZ ();
//ROMTEAM parallel box Ionut Grozea 1-08-1998
// m_Max_X = m_Get_Max_X;
// fn_vSetMaxXYZ ();
}
else if(m_oTabControl.GetCurSel() == 0)
{
m_Get_Max_x = m_Max_X;
//ROMTEAM parallel box Ionut Grozea 1-08-1998
// m_Get_Max_x = (float)min ( m_Get_Max_X, m_Get_Max_x );
// m_Get_Max_x = (float)max ( m_Get_Min_x, m_Get_Max_x );
m_Get_Max_X = (float)max ( m_Get_Max_X, m_Get_Max_x );
m_Get_Min_x = (float)min ( m_Get_Min_x, m_Get_Max_x );
m_Get_Min_X = (float)min ( m_Get_Min_X, m_Get_Max_x );
m_Min_X = m_Get_Min_x;
m_Max_X = m_Get_Max_x;
fn_vSetxyzXYZ ();
// m_Max_X = m_Get_Max_x;
// fn_vSetMaxxyz ();
};
m_bMaxXHasFocus = FALSE;
UpdateData (FALSE);
}
void DiaLight::fn_vSetMaxxyz (void)
{
if (!m_poLight)
return;
if (m_bInterExtraTab )
{
MTH3D_tdstVector xInter_Max_Pos;
MTH3D_M_vSetVectorElements (&xInter_Max_Pos, m_Get_Max_x, m_Get_Max_y, m_Get_Max_z);
m_poLight->fn_vSetLight_Inter_Max_Pos ( xInter_Max_Pos );
m_poLight->fn_vDrawEditObject();
}
}
void DiaLight::fn_vSetMaxXYZ (void)
{
if (!m_poLight)
return;
if (m_bInterExtraTab )
{
MTH3D_tdstVector xExter_Max_Pos;
MTH3D_M_vSetVectorElements (&xExter_Max_Pos, m_Get_Max_X, m_Get_Max_Y, m_Get_Max_Z);
m_poLight->fn_vSetLight_Exter_Max_Pos ( xExter_Max_Pos );
m_poLight->fn_vDrawEditObject();
}
}
void DiaLight::fn_vSetMinxyz (void)
{
if (!m_poLight)
return;
if (m_bInterExtraTab )
{
MTH3D_tdstVector xInter_Min_Pos;
MTH3D_M_vSetVectorElements (&xInter_Min_Pos, m_Get_Min_x, m_Get_Min_y, m_Get_Min_z);
m_poLight->fn_vSetLight_Inter_Min_Pos ( xInter_Min_Pos );
m_poLight->fn_vDrawEditObject();
}
}
void DiaLight::fn_vSetMinXYZ (void)
{
if (!m_poLight)
return;
if (m_bInterExtraTab )
{
MTH3D_tdstVector xExter_Min_Pos;
MTH3D_M_vSetVectorElements (&xExter_Min_Pos, m_Get_Min_X, m_Get_Min_Y, m_Get_Min_Z);
m_poLight->fn_vSetLight_Exter_Min_Pos ( xExter_Min_Pos );
m_poLight->fn_vDrawEditObject();
}
}
//ROMTEAM parallel box Ionut Grozea 1-08-1998
void DiaLight::fn_vSetxyzXYZ (void)
{
fn_vSetMaxxyz ();
fn_vSetMaxXYZ ();
fn_vSetMinxyz ();
fn_vSetMinXYZ ();
}
//ROMTEAM parallel box Ionut Grozea 1-08-1998
void DiaLight::fn_vSetMinMaxI (void)
{
if (!m_poLight)
return;
if (m_bInterExtraTab )
{
MTH_tdxReal xIntensity_Min, xIntensity_Max;
xIntensity_Min = m_Get_Min_I;
xIntensity_Max = m_Get_Max_I;
m_poLight->fn_vSetLight_Intensity_Min_Max( xIntensity_Min, xIntensity_Max );
m_poLight->fn_vDrawEditObject();
}
}
//ENDCHINA WFQ }
//ROMTEAM BlendRLI (Ionut Grozea 24/02/98)
void DiaLight::OnButtonNormal()
{
if (!m_poLight)
return;
if (m_poLight->GetSuperObject()->GetModelName() == csFogModelName)
return;
if (m_poLight->fn_bIsNoAlphaLight())
{
GetDlgItem(IDC_BUTTON_NORMAL)->SetWindowText("Normal");
GLI_vSetAlphaLightFlag ((GLI_tdxHandleToLight)m_poLight->GetEngineStruct(),0);
M_ShowAndEnable (IDC_LIGHT_A_SLIDER, TRUE);
M_ShowAndEnable (IDC_LIGHT_A_EDIT, TRUE);
M_ShowAndEnable (IDC_LIGHT_A_STATIC, TRUE);
}
else
{
GetDlgItem(IDC_BUTTON_NORMAL)->SetWindowText("No Alpha");
GLI_vSetAlphaLightFlag ((GLI_tdxHandleToLight)m_poLight->GetEngineStruct(),2);
M_ShowAndEnable (IDC_LIGHT_A_SLIDER, FALSE);
M_ShowAndEnable (IDC_LIGHT_A_EDIT, FALSE);
M_ShowAndEnable (IDC_LIGHT_A_STATIC, FALSE);
}
m_poLight->GetInterface()->fn_vComputeRLI ();
m_poLight->GetInterface()->GetInterface()->fn_vUpdateAll (E_mc_JustDraw);
m_poLight->fn_vNotifySave ();
/*
GLI_vSetPaintingLightFlag ((GLI_tdxHandleToLight)m_poLight->GetEngineStruct(),0);
GLI_vSetAlphaLightFlag ((GLI_tdxHandleToLight)m_poLight->GetEngineStruct(),0);
((CButton*)(GetDlgItem(IDC_BUTTON_PAINT)))->SetState(0);
((CButton*)(GetDlgItem(IDC_BUTTON_NORMAL)))->SetState(1);
m_poLight->fn_vSetTypeNormal();
m_poLight->GetInterface()->fn_vComputeRLI ();
m_poLight->GetInterface()->GetInterface()->fn_vUpdateAll (E_mc_JustDraw);
m_poLight->fn_vNotifySave ();
*/
}
void DiaLight::OnButtonBack()
{
UpdateData (TRUE);
//ROMTEAM Color editionIonut Grozea 1-08-1998
DiaColor oColor(this);
//ROMTEAM Color editionIonut Grozea 1-08-1998
float fRValue, fGValue, fBValue;
GEO_tdstColor stColor;
GLI_xGetLightBackgroundColor ( (GLI_tdxHandleToLight)m_poLight->GetEngineStruct(), &stColor );
fRValue = stColor.xR;
fGValue = stColor.xG;
fBValue = stColor.xB;
stColor.xA = 0.;
oColor.m_cc.rgbResult = RGB ( max(fRValue,0.f)*255., max(fGValue,0.f)*255., max(fBValue,0.f)*255. );
oColor.m_cc.Flags |= CC_RGBINIT;
if (oColor.DoModal()==IDOK)
{
COLORREF clr = oColor.GetColor();
fRValue = (float)(GetRValue (clr)/255.);
fGValue = (float)(GetGValue (clr)/255.);
fBValue = (float)(GetBValue (clr)/255.);
stColor.xR = fRValue;
stColor.xG = fGValue;
stColor.xB = fBValue;
stColor.xA = 0.;
m_poLight->fn_vNotifySave ();
GLI_xSetLightBackgroundColor ( (GLI_tdxHandleToLight)m_poLight->GetEngineStruct(), &stColor );
m_poLight->fn_vSetModify (TRUE);
m_poLight->GetInterface()->GetInterface()->fn_vUpdateAll (E_mc_JustDraw);
// UpdateData (FALSE);
}
// update control colors
GetDlgItem(IDC_BUTTON_BACK)->Invalidate();
}
void DiaLight::OnButtonPaint()
{
if (!m_poLight)
return;
if (m_poLight->fn_bIsPaint())
{
GetDlgItem(IDC_BUTTON_PAINT)->SetWindowText("No Paint");
// ((CButton*)(GetDlgItem(IDC_BUTTON_PAINT)))->SetState(0);
m_poLight->fn_vSetTypeNormal();
GLI_vSetPaintingLightFlag ((GLI_tdxHandleToLight)m_poLight->GetEngineStruct(),0);
}
else
{
GetDlgItem(IDC_BUTTON_PAINT)->SetWindowText("Paint");
// ((CButton*)(GetDlgItem(IDC_BUTTON_PAINT)))->SetState(1);
GLI_vSetPaintingLightFlag ((GLI_tdxHandleToLight)m_poLight->GetEngineStruct(),1);
m_poLight->fn_vSetTypePaint();
}
m_poLight->GetInterface()->fn_vComputeRLI ();
m_poLight->GetInterface()->GetInterface()->fn_vUpdateAll (E_mc_JustDraw);
m_poLight->fn_vNotifySave ();
/*
GLI_vSetPaintingLightFlag ((GLI_tdxHandleToLight)m_poLight->GetEngineStruct(),1);
GLI_vSetAlphaLightFlag ((GLI_tdxHandleToLight)m_poLight->GetEngineStruct(),0);
((CButton*)(GetDlgItem(IDC_BUTTON_PAINT)))->SetState(1);
((CButton*)(GetDlgItem(IDC_BUTTON_NORMAL)))->SetState(0);
m_poLight->fn_vSetTypePaint();
m_poLight->GetInterface()->fn_vComputeRLI ();
m_poLight->fn_vNotifySave ();
m_poLight->GetInterface()->GetInterface()->fn_vUpdateAll (E_mc_JustDraw);
*/
}
void DiaLight::fn_vInitType()
{
if (!m_poLight)
return;
// paint
if (m_poLight->fn_bIsPaint())
{
GetDlgItem(IDC_BUTTON_PAINT)->SetWindowText("Paint");
}
else
{
GetDlgItem(IDC_BUTTON_PAINT)->SetWindowText("No Paint");
}
// fog
if (m_poLight->GetSuperObject()->GetModelName() == csFogModelName)
{
M_ShowAndEnable (IDC_LIGHT_A_SLIDER, (m_poLight->GetSuperObject()->GetModelName() != csFogModelName));
M_ShowAndEnable (IDC_LIGHT_A_EDIT, (m_poLight->GetSuperObject()->GetModelName() != csFogModelName));
M_ShowAndEnable (IDC_LIGHT_A_STATIC, (m_poLight->GetSuperObject()->GetModelName() != csFogModelName));
GetDlgItem(IDC_BUTTON_NORMAL)->SetWindowText("No Alpha");
GetDlgItem(IDC_BUTTON_NORMAL)->EnableWindow(FALSE);
}
else
{
GetDlgItem(IDC_BUTTON_NORMAL)->EnableWindow(TRUE);
// alpha
if (m_poLight->fn_bIsNoAlphaLight())
{
M_ShowAndEnable (IDC_LIGHT_A_SLIDER, FALSE);
M_ShowAndEnable (IDC_LIGHT_A_EDIT, FALSE);
M_ShowAndEnable (IDC_LIGHT_A_STATIC, FALSE);
GetDlgItem(IDC_BUTTON_NORMAL)->SetWindowText("No Alpha");
}
else
{
M_ShowAndEnable (IDC_LIGHT_A_SLIDER, TRUE);
M_ShowAndEnable (IDC_LIGHT_A_EDIT, TRUE);
M_ShowAndEnable (IDC_LIGHT_A_STATIC, TRUE);
GetDlgItem(IDC_BUTTON_NORMAL)->SetWindowText("Normal");
}
}
}
//ENDROMTEAM BlendRLI (Ionut Grozea)
//ANNECY jt {
void DiaLight::OnKillfocusBlendFarEdit()
{
if (m_pInterface->fn_bRunEngine())
return;
UpdateData (TRUE);
MTH_tdxReal xFogBlendFar, xMaxIntensity;
xFogBlendFar = (MTH_tdxReal) m_fFogBlendFar;
xMaxIntensity = (MTH_tdxReal) 0.f;
m_poLight->fn_vSetLight_Intensity_Min_Max (xFogBlendFar,xMaxIntensity);
m_bFogBlendFarHasFocus = FALSE;
}
void DiaLight::OnSetfocusBlendFarEdit()
{
m_bFogBlendFarHasFocus = TRUE;
}
void DiaLight::OnKillfocusBlendNearEdit()
{
if (m_pInterface->fn_bRunEngine())
return;
UpdateData (TRUE);
MTH_tdxReal xFogInfinite, xFogBlendNear;
xFogInfinite = (MTH_tdxReal) m_fFogInfinite;
xFogBlendNear = (MTH_tdxReal) m_fFogBlendNear;
m_poLight->fn_vSetLightAlpha ( xFogInfinite, xFogBlendNear );
m_bFogBlendNearHasFocus = FALSE;
}
void DiaLight::OnSetfocusBlendNearEdit()
{
m_bFogBlendNearHasFocus = TRUE;
}
void DiaLight::OnKillfocusFarEdit()
{
if (m_pInterface->fn_bRunEngine())
return;
UpdateData (TRUE);
MTH_tdxReal xFogNear, xFogFar;
xFogNear = (MTH_tdxReal) m_fFogNear;
xFogFar = (MTH_tdxReal) m_fFogFar;
m_poLight->fn_vSetLightNearFar ( xFogNear, xFogFar );
m_bFogBlendFarHasFocus = FALSE;
}
void DiaLight::OnSetfocusFarEdit()
{
m_bFogBlendFarHasFocus = TRUE;
}
void DiaLight::OnKillfocusInfiniteEdit()
{
if (m_pInterface->fn_bRunEngine())
return;
UpdateData (TRUE);
MTH_tdxReal xFogInfinite, xFogBlendNear;
xFogInfinite = (MTH_tdxReal) m_fFogInfinite;
xFogBlendNear = (MTH_tdxReal) m_fFogBlendNear;
m_poLight->fn_vSetLightAlpha ( xFogInfinite, xFogBlendNear );
m_bFogInfiniteHasFocus = FALSE;
}
void DiaLight::OnSetfocusInfiniteEdit()
{
m_bFogInfiniteHasFocus = TRUE;
}
void DiaLight::OnKillfocusNearEdit()
{
if (m_pInterface->fn_bRunEngine())
return;
UpdateData (TRUE);
MTH_tdxReal xFogNear, xFogFar;
xFogNear = (MTH_tdxReal) m_fFogNear;
xFogFar = (MTH_tdxReal) m_fFogFar;
m_poLight->fn_vSetLightNearFar ( xFogNear, xFogFar );
m_bFogNearHasFocus = FALSE;
}
void DiaLight::OnSetfocusNearEdit()
{
m_bFogNearHasFocus = TRUE;
}
void DiaLight::fn_vDisplayFogControl (BOOL bState)
{
/*
int iState = bState ? SW_SHOW : SW_HIDE;
GetDlgItem (IDC_FOG_NEAR_EDIT)->ShowWindow( iState );
GetDlgItem (IDC_FOG_FAR_EDIT)->ShowWindow( iState );
GetDlgItem (IDC_FOG_INFINITE_EDIT)->ShowWindow( iState );
GetDlgItem (IDC_FOG_BLEND_NEAR_EDIT)->ShowWindow( iState );
GetDlgItem (IDC_FOG_BLEND_FAR_EDIT)->ShowWindow( iState );
GetDlgItem (IDC_FOG_NEAR_STATIC)->ShowWindow( iState );
GetDlgItem (IDC_FOG_FAR_STATIC)->ShowWindow( iState );
GetDlgItem (IDC_FOG_INFINITE_STATIC)->ShowWindow( iState );
GetDlgItem (IDC_FOG_BLEND_NEAR_STATIC)->ShowWindow( iState );
GetDlgItem (IDC_FOG_BLEND_FAR_STATIC)->ShowWindow( iState );
GetDlgItem (IDC_FOG_NEAR_EDIT)->EnableWindow( bState );
GetDlgItem (IDC_FOG_FAR_EDIT)->EnableWindow( bState );
GetDlgItem (IDC_FOG_INFINITE_EDIT)->EnableWindow( bState );
GetDlgItem (IDC_FOG_BLEND_NEAR_EDIT)->EnableWindow( bState );
GetDlgItem (IDC_FOG_BLEND_FAR_EDIT)->EnableWindow( bState );
GetDlgItem (IDC_FOG_NEAR_STATIC)->EnableWindow( bState );
GetDlgItem (IDC_FOG_FAR_STATIC)->EnableWindow( bState );
GetDlgItem (IDC_FOG_INFINITE_STATIC)->EnableWindow( bState );
GetDlgItem (IDC_FOG_BLEND_NEAR_STATIC)->EnableWindow( bState );
GetDlgItem (IDC_FOG_BLEND_FAR_STATIC)->EnableWindow( bState );
*/
M_ShowAndEnable(IDC_FOG_NEAR_EDIT, bState);
M_ShowAndEnable(IDC_FOG_FAR_EDIT, bState);
M_ShowAndEnable(IDC_FOG_INFINITE_EDIT, bState);
M_ShowAndEnable(IDC_FOG_BLEND_NEAR_EDIT, bState);
M_ShowAndEnable(IDC_FOG_BLEND_FAR_EDIT, bState);
M_ShowAndEnable(IDC_FOG_NEAR_STATIC, bState);
M_ShowAndEnable(IDC_FOG_FAR_STATIC, bState);
M_ShowAndEnable(IDC_FOG_INFINITE_STATIC, bState);
M_ShowAndEnable(IDC_FOG_BLEND_NEAR_STATIC, bState);
M_ShowAndEnable(IDC_FOG_BLEND_FAR_STATIC, bState);
}
//ENDANNECY jt }
//ROMTEAM RealLights (Ionut Grozea 05/03/98)
void DiaLight::OnButtonRealLight()
{
//ROMTEAM Ionut Grozea 1-08-1998
HCURSOR hWaitCursor;
HCURSOR hOldCursor;
//ROMTEAM Ionut Grozea 1-08-1998
if (!m_poLight->GetInterface()->fn_bGetRealLight())
{
//ROMTEAM Ionut Grozea 1-08-1998
hWaitCursor = AfxGetApp()->LoadStandardCursor( IDC_WAIT );
hOldCursor = SetCursor( hWaitCursor );
//ROMTEAM Ionut Grozea 1-08-1998
GetDlgItem(IDC_BUTTON_REAL_LIGHT)->SetWindowText("Display all Lights");
m_poLight->GetInterface()->fn_bSetRealLight(TRUE);
m_poLight->GetInterface()->RefreshOnlyRealLights();
m_poLight->GetInterface()->GetInterface()->fn_vUpdateAll (E_mc_JustDraw);
//ROMTEAM Ionut Grozea 1-08-1998
SetCursor( hOldCursor );
//ROMTEAM Ionut Grozea 1-08-1998
}
else
{
//ROMTEAM Ionut Grozea 1-08-1998
hWaitCursor = AfxGetApp()->LoadStandardCursor( IDC_WAIT );
hOldCursor = SetCursor( hWaitCursor );
//ROMTEAM Ionut Grozea 1-08-1998
((CButton*)(GetDlgItem(IDC_BUTTON_REAL_LIGHT)))->SetWindowText("Display only real Lights");
m_poLight->GetInterface()->fn_bSetRealLight(FALSE);
m_poLight->GetInterface()->fn_vRefreshAllLights();
m_poLight->GetInterface()->GetInterface()->fn_vUpdateAll (E_mc_JustDraw);
//ROMTEAM Ionut Grozea 1-08-1998
SetCursor( hOldCursor );
//ROMTEAM Ionut Grozea 1-08-1998
}
}
//ENDROMTEAM RealLights (Ionut Grozea)
void DiaLight::fn_vDisplayInternalExternalControls(BOOL _bShow )
{
M_ShowAndEnable(IDC_MIN_X, _bShow );
M_ShowAndEnable(IDC_MIN_Y, _bShow );
M_ShowAndEnable(IDC_MIN_Z, _bShow );
M_ShowAndEnable(IDC_MIN_X_EDIT, _bShow );
M_ShowAndEnable(IDC_MIN_Y_EDIT, _bShow );
M_ShowAndEnable(IDC_MIN_Z_EDIT, _bShow );
M_ShowAndEnable (IDC_MAX_X, _bShow );
M_ShowAndEnable (IDC_MAX_Y, _bShow );
M_ShowAndEnable (IDC_MAX_Z, _bShow );
M_ShowAndEnable (IDC_MAX_X_EDIT, _bShow );
M_ShowAndEnable (IDC_MAX_Y_EDIT, _bShow );
M_ShowAndEnable (IDC_MAX_Z_EDIT, _bShow );
}
/*=======================================================================================
* Description
*
* Creation date 24/03/98
* Author Marc Trabucato
*=====================================================================================*/
void DiaLight::fn_vDisplayNearFarControls(BOOL _bShow )
{
M_ShowAndEnable(IDC_LIGHT_NEAR_SLIDER, _bShow );
M_ShowAndEnable(IDC_LIGHT_FAR_SLIDER, _bShow );
M_ShowAndEnable(IDC_LIGHT_NEAR_EDIT, _bShow );
M_ShowAndEnable(IDC_LIGHT_FAR_EDIT, _bShow );
M_ShowAndEnable(IDC_NEAR_STATIC, _bShow );
M_ShowAndEnable(IDC_FAR_STATIC, _bShow );
}
/*=======================================================================================
* Description
*
* Creation date 24/03/98
* Author Marc Trabucato
*=====================================================================================*/
void DiaLight::fn_vDisplayCommonControls(BOOL _bShow )
{
// Name
M_Enable (IDC_LIGHT_NAME_EDIT, _bShow);
// On/Off buttons
M_Enable (IDC_LIGHT_ON_RADIO, _bShow);
M_Enable (IDC_LIGHT_OFF_RADIO, _bShow);
M_Enable (IDC_ON_OFF_STATIC, _bShow);
M_Enable (IDC_LIGHT_ACTIVE_ON_RADIO, _bShow);
M_Enable (IDC_LIGHT_ACTIVE_OFF_RADIO, _bShow);
M_Enable (IDC_MAP_ON_RADIO, _bShow);
M_Enable (IDC_MAP_OFF_RADIO, _bShow);
// Paint
M_Enable (IDC_BUTTON_PAINT, _bShow);
M_Enable (IDC_BUTTON_NORMAL, _bShow);
M_Enable (IDC_BUTTON_BACK, _bShow);
//ROMTEAM Ionut Grozea (Compute all 19.05.98)
M_Enable (IDC_BUTTON_COMPUTE_ALL, _bShow);
//ENDROMTEAM Ionut Grozea (Compute all 19.05.98)
M_Enable (IDC_BUTTON_REAL_LIGHT, TRUE);
// color & alpha
M_Enable (IDC_LIGHT_R_SLIDER, _bShow);
M_Enable (IDC_LIGHT_G_SLIDER, _bShow);
M_Enable (IDC_LIGHT_B_SLIDER, _bShow);
M_Enable (IDC_LIGHT_A_SLIDER, _bShow);
M_Enable (IDC_LIGHT_R_EDIT, _bShow);
M_Enable (IDC_LIGHT_G_EDIT, _bShow);
M_Enable (IDC_LIGHT_B_EDIT, _bShow);
M_Enable (IDC_LIGHT_A_EDIT, _bShow);
M_Enable (IDC_LIGHT_R_STATIC, _bShow);
M_Enable (IDC_LIGHT_G_STATIC, _bShow);
M_Enable (IDC_LIGHT_B_STATIC, _bShow);
M_Enable (IDC_LIGHT_A_STATIC, _bShow);
M_Enable (IDC_LIGHT_COLOR_DEFINITION, _bShow);
// intensity
M_Enable (IDC_LIGHT_INTENSITY_SLIDER, _bShow);
M_Enable (IDC_LIGHT_INTENSITY_EDIT, _bShow);
M_Enable (IDC_LIGHT_MIN_INTENSITY, _bShow);
M_Enable (IDC_LIGHT_MAX_INTENSITY, _bShow);
// effect
M_Enable (IDC_LIGHT_AFFECT_ALL, _bShow);
M_Enable (IDC_LIGHT_DEFAULT, _bShow);
M_Enable (IDC_LIGHT_SEE, _bShow);
M_Enable (IDC_LIGHT_DISPLAY_ALL, _bShow);
M_Enable (IDC_LIGHT_SECTOR_LIST, _bShow);
M_Enable (IDC_LIGHT_REAL_TIME_STATIC, _bShow);
}
/*=======================================================================================
* Description
*
* Creation date 24/03/98
* Author Marc Trabucato
*=====================================================================================*/
void DiaLight::fn_vDisplayCommonIcons(int _iState )
{
M_Show (IDC_AMBIENT_LIGHT_PICTURE, _iState );
M_Show (IDC_PARALLEL_LIGHT_PICTURE, _iState );
M_Show (IDC_SPHERICAL_LIGHT_PICTURE, _iState );
M_Show (IDC_SPOT_LIGHT_PICTURE, _iState );
M_Show (IDC_AMBIENT_IMPORT_LIGHT_PICTURE, _iState );
M_Show (IDC_PARALLEL_IMPORT_LIGHT_PICTURE, _iState );
M_Show (IDC_SPHERICAL_IMPORT_LIGHT_PICTURE, _iState );
M_Show (IDC_SPOT_IMPORT_LIGHT_PICTURE, _iState );
M_Show (IDC_PARABOX_LIGHT_PICTURE, _iState );
M_Show (IDC_PARABOX_IMPORT_LIGHT_PICTURE, _iState );
M_Show (IDC_FOG_PICTURE, _iState );
M_Show (IDC_Z_LIGHT1, _iState );
}
//ROMTEAM ComputeAll Ionut Grozea 21-04-1998
void DiaLight::OnButtonComputeAll()
{
if(!m_pInterface)
return;
CPA_BaseObjectList* poListOfLight = m_pInterface->GetMainWorld()->fn_p_oGetOriginalObjectList (C_szLightTypeName);
Position xPosLight;
CPA_BaseObject* poBaseObject;
if(!poListOfLight)
return;
m_pInterface->fn_vSetCursor (IDC_ORIENT_LIGHT_POINTER);
for ( poBaseObject = poListOfLight->GetHeadElement(xPosLight); poBaseObject; poBaseObject = poListOfLight->GetNextElement(xPosLight) )
{
if (!(Light*)poBaseObject)
return;
((Light*)poBaseObject)->fn_vComputeSector ();
m_pInterface->fn_vRefreshLight((Light*)poBaseObject);
(Light*)poBaseObject;
}
fn_vRefreshSectorList();
m_pInterface->fn_vSetCursor (IDC_POINTER);
}
//ENDROMTEAM ComputeAll Ionut Grozea 21-04-1998
//ROMTEAM Color edition Ionut Grozea 1-08-1998
BOOL DiaColor::OnInitDialog()
{
RECT m_Rect,m_RectDiaLight ;
GetWindowRect( &m_Rect);
m_pDiaLight->GetWindowRect( &m_RectDiaLight);
MoveWindow( m_RectDiaLight.right, 200, m_Rect.right - m_Rect.left,m_Rect.bottom - m_Rect.top);
return CColorDialog::OnInitDialog();
}
//ROMTEAM Color edition Ionut Grozea 1-08-1998
//ROMTEAM Color edition Ionut Grozea 1-08-1998
void DiaColor::OnOK()
{
CColorDialog::OnOK();
int iCount,jCount;
CString m_cString;
CString csFileName = M_GetMainApp()->m_csEditorDataPath + "Objects\\" + C_szLightIniFile;
char csDimension[255];
static COLORREF * m_CustomColor;
m_CustomColor = GetSavedCustomColors();
for(iCount = 0;iCount<16;iCount++)
{
for(jCount = 0;jCount<3;jCount++)
{
char m_szNr[255] ;
itoa(iCount , m_szNr,10);
m_cString = "Color nr "+ (CString)m_szNr +(jCount==0?"Red":(jCount==1?"Green":"Blue"));
if (jCount == 0)
itoa(GetRValue(m_CustomColor[iCount]), csDimension,10);
if (jCount == 1)
itoa(GetGValue(m_CustomColor[iCount]), csDimension,10);
if (jCount == 2)
itoa(GetBValue(m_CustomColor[iCount]), csDimension,10);
WritePrivateProfileString ("Default colors", m_cString, csDimension, (char*)(LPCSTR)csFileName);
}
}
}
//ROMTEAM Color edition Ionut Grozea 1-08-1998
//ROMTEAM Color edition Ionut Grozea 1-08-1998
void DiaColor::RestoreDefaultColor()
{
COLORREF m_defaultColor;
BYTE m_color[3];
CString m_cString;
int iCount,jCount;
char szDimension[256];
CString csFileName = M_GetMainApp()->m_csEditorDataPath + "Objects\\" + C_szLightIniFile;
char m_szNr[255] ;
for(iCount = 0;iCount<16;iCount++)
{
for(jCount = 0;jCount<3;jCount++)
{
itoa(iCount,m_szNr,10);
m_cString = "Color nr "+ (CString)m_szNr +(jCount==0?"Red":(jCount==1?"Green":"Blue"));
GetPrivateProfileString ("Default colors", m_cString, "0", szDimension, 256, (char*)(LPCSTR)csFileName);
m_color[jCount] = atoi(szDimension);
}
m_defaultColor = RGB(m_color[0],m_color[1],m_color[2] );
m_cc.lpCustColors[iCount]=m_defaultColor;
}
}
//ROMTEAM Color edition Ionut Grozea 1-08-1998
//ROMTEAM color lights Ionut Grozea 10-08-1998
void DiaLight::OnButtonMode()
{
if(!m_pInterface)
return;
HCURSOR hWaitCursor;
HCURSOR hOldCursor;
hWaitCursor = AfxGetApp()->LoadStandardCursor( IDC_WAIT );
hOldCursor = SetCursor( hWaitCursor );
if (m_poLight->GetInterface()->fn_bGetColorMode())
{
GetDlgItem(IDC_BUTTON_MODE)->SetWindowText("Display in 2 colors");
CPA_BaseObjectList* poListOfLight = m_pInterface->GetMainWorld()->fn_p_oGetOriginalObjectList (C_szLightTypeName);
Position xPosLight;
CPA_BaseObject* poBaseObject;
if(!poListOfLight)
return;
for ( poBaseObject = poListOfLight->GetHeadElement(xPosLight); poBaseObject; poBaseObject = poListOfLight->GetNextElement(xPosLight) )
{
if (!(Light*)poBaseObject )
continue;
if ( m_poLight->GetInterface()->fn_bGetRealLight() && !((Light*)poBaseObject)->fn_bGetOnOff())
continue;
((Light*)poBaseObject)->SetMultiColor();
}
m_poLight->GetInterface()->fn_SetColorMode(FALSE);
}
else
{
GetDlgItem(IDC_BUTTON_MODE)->SetWindowText("Display multicolors");
CPA_BaseObjectList* poListOfLight = m_pInterface->GetMainWorld()->fn_p_oGetOriginalObjectList (C_szLightTypeName);
Position xPosLight;
CPA_BaseObject* poBaseObject;
if(!poListOfLight)
return;
for ( poBaseObject = poListOfLight->GetHeadElement(xPosLight); poBaseObject; poBaseObject = poListOfLight->GetNextElement(xPosLight) )
{
if (!(Light*)poBaseObject)
continue;
if ( m_poLight->GetInterface()->fn_bGetRealLight() && !((Light*)poBaseObject)->fn_bGetOnOff())
continue;
((Light*)poBaseObject)->Set2Colors();
}
m_poLight->GetInterface()->fn_SetColorMode(TRUE);
}
m_poLight->GetInterface()->GetInterface()->fn_vUpdateAll (E_mc_JustDraw);
SetCursor( hOldCursor );
}
//ENDROMTEAM color lights Ionut Grozea 10-08-1998
//==================================================================================================
// Description : handle function for WM_DRAWITEM
//==================================================================================================
void DiaLight::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC *pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
RECT *rect = &lpDrawItemStruct->rcItem;
COLORREF xColor;
switch ( nIDCtl )
{
default:
CFormView::OnDrawItem(nIDCtl, lpDrawItemStruct);
break;
case IDC_LIGHT_COLOR_DEFINITION:
{
if (m_poLight)
{
GEO_tdstColor stColor;
float fIntensity;
GLI_xGetLightColor ( (GLI_tdxHandleToLight)m_poLight->GetEngineStruct(), &stColor );
fIntensity = m_poLight->fn_fGetIntensity();
xColor = RGB ( max(stColor.xR,0.f)/fIntensity*255., max(stColor.xG,0.f)/fIntensity*255., max(stColor.xB,0.f)/fIntensity*255. );
}
else
xColor = RGB(0.0f,0.0f,0.0f);
// draw button
rect->bottom -=1;
pDC->FillSolidRect(rect, RGB(250.0f, 250.0f, 250.0f));
rect->left +=1;
rect->top +=1;
rect->bottom +=1;
pDC->FillSolidRect(rect, RGB(0.0f, 0.0f, 0.0f));
// draw color
rect->right -=1;
rect->bottom -=1;
pDC->FillSolidRect( rect, xColor);
//draw text
pDC->SetBkMode(TRANSPARENT);
pDC->DrawText("\nC\no\nl\no\nr", rect, DT_CENTER | DT_VCENTER);
}
break;
case IDC_BUTTON_BACK:
{
if (m_poLight)
{
GEO_tdstColor stColor;
GLI_xGetLightBackgroundColor ( (GLI_tdxHandleToLight)m_poLight->GetEngineStruct(), &stColor );
xColor = RGB ( max(stColor.xR,0.f)*255., max(stColor.xG,0.f)*255., max(stColor.xB,0.f)*255. );
}
else
xColor = RGB(0.0f,0.0f,0.0f);
// draw button
rect->bottom -=1;
pDC->FillSolidRect(rect, RGB(250.0f, 250.0f, 250.0f));
rect->left +=1;
rect->top +=1;
rect->bottom +=1;
pDC->FillSolidRect(rect, RGB(0.0f, 0.0f, 0.0f));
// draw color
rect->right -=1;
rect->bottom -=1;
pDC->FillSolidRect( rect, xColor);
//draw text
pDC->SetBkMode(TRANSPARENT);
pDC->DrawText("FogBack", rect, DT_CENTER | DT_VCENTER);
}
break;
}
}