928 lines
37 KiB
C++
928 lines
37 KiB
C++
// diatext.cpp : implementation file
|
|
//
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include "Acp_Base.h"
|
|
|
|
#define HieFriend
|
|
#include "incgli.h"
|
|
|
|
#include "inctex.h"
|
|
#include "_interf.hpp"
|
|
#include "GMatObj.hpp"
|
|
#include "VMatObj.hpp"
|
|
#include "diatext.hpp"
|
|
#include "DiaView.hpp"
|
|
#include "TextureDlg.h"
|
|
#include "TexObj.hpp"
|
|
#include "choosecolor.hpp"
|
|
#include "MatList.hpp"
|
|
#include "x:\cpa\main\inc\_editid.h"
|
|
#include "TUT.h"
|
|
|
|
#define C_szDurationStringFormat "%6.2f"
|
|
|
|
extern Material_Interface *gs_p_oMaterialInterface;
|
|
|
|
static BOOL g_sModalLoop = FALSE;
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// DiaMain dialog
|
|
|
|
IMPLEMENT_DYNCREATE(DiaText, CFormView)
|
|
|
|
DiaText::DiaText()
|
|
: CFormView(DiaText::IDD)
|
|
{
|
|
m_hEditedTexture = NULL;
|
|
m_bDisplaySupplyTexture = FALSE;
|
|
m_lAnimatedTextureIndex = -1;
|
|
m_nRPixelColor = 0;
|
|
m_nGPixelColor = 0;
|
|
m_nBPixelColor = 0;
|
|
|
|
//{{AFX_DATA_INIT(DiaText)
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
|
|
void DiaText::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CFormView::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(DiaText)
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
DiaText::~DiaText()
|
|
{
|
|
m_oMemDC.SelectObject(m_p_oPreviousSelectedBitmap);
|
|
m_oMemBitmap.DeleteObject();
|
|
m_oMemDC.DeleteDC();
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(DiaText, CFormView)
|
|
//{{AFX_MSG_MAP(DiaText)
|
|
ON_WM_CREATE()
|
|
ON_WM_DRAWITEM()
|
|
ON_BN_CLICKED(IDC_BUTTON_VISUEL, OnButtonVisuel)
|
|
ON_BN_CLICKED(IDC_BUTTON_PRIORITY, OnButtonPriority)
|
|
ON_BN_CLICKED(IDC_BUTTON_QUALITYLEVEL, OnButtonQualityLevel)
|
|
ON_BN_CLICKED(IDC_CHECK_HORIZONTALTILE, OnCheckTile)
|
|
ON_BN_CLICKED(IDC_BUTTON_CHROMAKEYCOLOR, OnButtonChromakeyColor)
|
|
ON_BN_CLICKED(IDC_CHECK_HORIZONTALFILTERING, OnCheckFilter)
|
|
ON_BN_CLICKED(IDC_BUTTON_SUPPLYTEXTURE, OnButtonSupplyTexture)
|
|
ON_EN_KILLFOCUS(IDC_EDIT_DURATION, OnKillFocusEditDuration)
|
|
ON_WM_RBUTTONDOWN()
|
|
ON_WM_LBUTTONDOWN()
|
|
ON_BN_CLICKED(IDC_CHECK_VERTICALTILE, OnCheckTile)
|
|
ON_BN_CLICKED(IDC_CHECK_VERTICALFILTERING, OnCheckFilter)
|
|
ON_BN_CLICKED(IDC_CHECK_DEPTHFILTERING, OnCheckFilter)
|
|
ON_BN_CLICKED(IDC_BUTTON_PIXELCOLOR, OnButtonPixelcolor)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// DiaText message handlers
|
|
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
int DiaText::OnToolHitTest(CPoint point, TOOLINFO* pTI) const
|
|
{
|
|
CString csMessage;
|
|
switch ( CWnd::OnToolHitTest(point, pTI) )
|
|
{
|
|
default:
|
|
csMessage = "???????????????????????????????????????????????????????????";
|
|
break;
|
|
|
|
//Mircea Dunka 04.11.98
|
|
case IDC_BUTTON_PIXELCOLOR:
|
|
csMessage = "color picked from scene (click to set chromakey)";
|
|
break;
|
|
//end Mircea Dunka
|
|
|
|
case IDC_STATIC:
|
|
csMessage = "";
|
|
break;
|
|
|
|
case IDC_EDIT_DURATION:
|
|
csMessage = "set the duration in seconds that the current texture will be displayed";
|
|
break;
|
|
|
|
case IDC_BUTTON_VISUEL:
|
|
csMessage = "left click to view/edit the texture OR right click to get the color";
|
|
break;
|
|
|
|
case IDC_BUTTON_PRIORITY:
|
|
csMessage = "change the priority of this texture to adapt to memory restrictions";
|
|
break;
|
|
|
|
case IDC_BUTTON_QUALITYLEVEL:
|
|
csMessage = "change the quality of this texture to adapt to memory restrictions";
|
|
break;
|
|
|
|
case IDC_CHECK_HORIZONTALTILE:
|
|
case IDC_CHECK_VERTICALTILE:
|
|
csMessage = "enable/disable texture tiling";
|
|
break;
|
|
|
|
case IDC_CHECK_HORIZONTALFILTERING:
|
|
case IDC_CHECK_VERTICALFILTERING:
|
|
case IDC_CHECK_DEPTHFILTERING:
|
|
csMessage = "enable/disable texture bilinear filtering";
|
|
break;
|
|
|
|
case IDC_BUTTON_CHROMAKEYCOLOR:
|
|
csMessage = "Chromakey / alpha";
|
|
break;
|
|
|
|
case IDC_BUTTON_SUPPLYTEXTURE:
|
|
csMessage = "swap display between the main and supply texture";
|
|
break;
|
|
}
|
|
//output the help info in the status bar
|
|
fn_vGiveProgressInfo(csMessage, -1);
|
|
|
|
//there is no hit for a true tooltip
|
|
return -1;
|
|
}
|
|
|
|
//==================================================================================================
|
|
// Description : handle function for WM_CREATE
|
|
//==================================================================================================
|
|
int DiaText::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
{
|
|
if (CFormView::OnCreate(lpCreateStruct) == -1)
|
|
return -1;
|
|
|
|
EnableToolTips(TRUE);
|
|
m_oMemDC.CreateCompatibleDC( NULL );
|
|
m_oMemBitmap.CreateCompatibleBitmap( this->GetDC(), 16, 16);
|
|
m_p_oPreviousSelectedBitmap = m_oMemDC.SelectObject(&m_oMemBitmap);
|
|
|
|
return 0;
|
|
}
|
|
|
|
//==================================================================================================
|
|
// Description : handle function for WM_DRAWITEM
|
|
//==================================================================================================
|
|
BOOL DiaText::Create( LPCTSTR lpszClassName, LPCTSTR lpszWindowName,
|
|
DWORD dwRequestedStyle, const RECT& rect, CWnd* pParentWnd, UINT nID,
|
|
CCreateContext* pContext )
|
|
{
|
|
BOOL bResult = CFormView::Create( lpszClassName, lpszWindowName, dwRequestedStyle, rect, pParentWnd, nID, pContext );
|
|
|
|
//control registration for tutorial and assistants, should be unregistered when view is destroyed
|
|
TUT_M_vGetTutDll();
|
|
TUT_M_vRegisterControlID(IDC_BUTTON_SUPPLYTEXTURE,"TGM_DiaTextButtonSupplyTexture",TUT_e_Button);
|
|
TUT_M_vRegisterControlID(IDC_BUTTON_VISUEL,"TGM_DiaTextButtonVisuel",TUT_e_Button);
|
|
TUT_M_vRegisterControlID(IDC_BUTTON_PRIORITY,"TGM_DiaTextButtonPriority",TUT_e_Button);
|
|
TUT_M_vRegisterControlID(IDC_BUTTON_QUALITYLEVEL,"TGM_DiaTextButtonQyalityLevel",TUT_e_Button);
|
|
TUT_M_vRegisterControlID(IDC_CHECK_HORIZONTALFILTERING,"TGM_DiaTextCheckHorizontalFiltering",TUT_e_Button);
|
|
TUT_M_vRegisterControlID(IDC_CHECK_VERTICALFILTERING,"TGM_DiaTextCheckVerticalFiltering",TUT_e_Button);
|
|
TUT_M_vRegisterControlID(IDC_CHECK_DEPTHFILTERING,"TGM_DiaTextCheckDepthFiltering",TUT_e_Button);
|
|
TUT_M_vRegisterControlID(IDC_CHECK_HORIZONTALTILE,"TGM_DiaTextcheckHorizontalTiling",TUT_e_Button);
|
|
TUT_M_vRegisterControlID(IDC_CHECK_VERTICALTILE,"TGM_DiaTextCheckVerticalTiling",TUT_e_Button);
|
|
TUT_M_vRegisterControlID(IDC_BUTTON_CHROMAKEYCOLOR,"TGM_DiaTextButtonChromakeyColor",TUT_e_Button);
|
|
TUT_M_vRegisterControlID(IDC_EDIT_DURATION,"TGM_DiaTextEditDuration",TUT_e_TextEdit);
|
|
//Mircea Dunka 4.11.98
|
|
TUT_M_vRegisterControlID(IDC_BUTTON_PIXELCOLOR,"TGM_PixelColor",TUT_e_Button);
|
|
//end Mircea Dunka
|
|
return bResult;
|
|
}
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
void DiaText::m_fn_vShowMaterial(GMT_tdxHandleToGameMaterial _hMat, long _lAnimatedTextureIndex /*= -1*/)
|
|
{
|
|
m_lAnimatedTextureIndex = _lAnimatedTextureIndex;
|
|
tdoEditorGameMaterial *p_oEditedGameMaterial = gs_p_oMaterialInterface->m_p_oGetEditedMaterial();
|
|
BOOL bAGameMAterialIsEdited = p_oEditedGameMaterial ? TRUE : FALSE;
|
|
|
|
|
|
/* if no material is currently selected, disable everything */
|
|
if ( !bAGameMAterialIsEdited )
|
|
{
|
|
m_lAnimatedTextureIndex = -1;
|
|
m_hEditedTexture = NULL; //invalidate the handle
|
|
//clear the controls
|
|
GetDlgItem(IDC_EDIT_DURATION )->SetWindowText("");
|
|
((CButton *) GetDlgItem(IDC_CHECK_HORIZONTALTILE ))->SetCheck(FALSE);
|
|
((CButton *) GetDlgItem(IDC_CHECK_VERTICALTILE ))->SetCheck(FALSE);
|
|
((CButton *) GetDlgItem(IDC_CHECK_HORIZONTALFILTERING))->SetCheck(FALSE);
|
|
((CButton *) GetDlgItem(IDC_CHECK_VERTICALFILTERING ))->SetCheck(FALSE);
|
|
((CButton *) GetDlgItem(IDC_CHECK_DEPTHFILTERING ))->SetCheck(FALSE);
|
|
//change the texture before the button is disabled, else it will not be displayed...
|
|
m_fn_vChangeTexture(NULL);
|
|
//Mircea Dunka 5.11.1998
|
|
//I need this button remain this way all the time!!!
|
|
GetDlgItem(IDC_BUTTON_VISUEL )->EnableWindow(FALSE);
|
|
m_bButtonVisuelEnabled = FALSE;
|
|
GetDlgItem(IDC_BUTTON_PIXELCOLOR )->EnableWindow(FALSE);
|
|
//end Mircea Dunka
|
|
GetDlgItem(IDC_BUTTON_PRIORITY )->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_BUTTON_QUALITYLEVEL )->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_CHECK_HORIZONTALTILE )->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_CHECK_VERTICALTILE )->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_CHECK_HORIZONTALFILTERING)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_CHECK_VERTICALFILTERING )->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_CHECK_DEPTHFILTERING )->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_BUTTON_CHROMAKEYCOLOR )->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_BUTTON_SUPPLYTEXTURE )->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_EDIT_DURATION )->EnableWindow(FALSE);
|
|
return;
|
|
}
|
|
|
|
//normally, the specified engine game material must belong to the current editor game material...
|
|
ASSERT(_hMat == p_oEditedGameMaterial->GetData());
|
|
ACP_tdxHandleOfMaterial hEditedVisualMaterial = GMT_fn_hGetVisualMaterial(_hMat);
|
|
float fDuration = 0.0f;
|
|
//get the texture's handle
|
|
if ( m_lAnimatedTextureIndex == -1 )
|
|
m_hEditedTexture = NULL;
|
|
else //get the animated texture instead
|
|
GLI_vGetMaterialAnimatedTexture(hEditedVisualMaterial, m_lAnimatedTextureIndex, &m_hEditedTexture, &fDuration);
|
|
|
|
//fill the duration control
|
|
BOOL bEditDuration = (m_hEditedTexture ? TRUE : FALSE) && (GLI_lGetMaterialNumberOfAnimatedTexture(hEditedVisualMaterial) > 1);
|
|
if ( bEditDuration )
|
|
{
|
|
CString csDuration;
|
|
csDuration.Format(C_szDurationStringFormat, fDuration);
|
|
csDuration.TrimLeft();
|
|
GetDlgItem(IDC_EDIT_DURATION)->SetWindowText(csDuration);
|
|
}
|
|
else
|
|
GetDlgItem(IDC_EDIT_DURATION)->SetWindowText("");
|
|
GetDlgItem(IDC_EDIT_DURATION)->EnableWindow(bEditDuration);
|
|
|
|
BOOL bTheMaterialIsTextured = (m_hEditedTexture ? TRUE : FALSE);
|
|
m_bControlsFilledFromMaterial = TRUE;
|
|
GLI_tdstTexture *p_stTextureToDisplay = NULL;
|
|
|
|
GetDlgItem(IDC_BUTTON_SUPPLYTEXTURE)->SetWindowText(m_bDisplaySupplyTexture ? "Supply texture" : "Primary texture");
|
|
if ( bTheMaterialIsTextured )
|
|
{
|
|
p_stTextureToDisplay = (m_bDisplaySupplyTexture ? TEX_p_tdstGetSupplyTexture(m_hEditedTexture) : m_hEditedTexture);
|
|
if ( p_stTextureToDisplay == NULL ) //can only happen if we want to display the supplied texture and there is none
|
|
bTheMaterialIsTextured = FALSE; //display no texture
|
|
|
|
unsigned long xMType;
|
|
GLI_xGetMaterialType(hEditedVisualMaterial, &xMType);
|
|
if (xMType & GLI_C_lIsTextured)
|
|
m_fn_vChangeTexture(p_stTextureToDisplay);
|
|
else
|
|
m_fn_vChangeTexture(NULL);
|
|
}
|
|
else
|
|
m_fn_vChangeTexture(NULL);
|
|
|
|
if ( bTheMaterialIsTextured )
|
|
{
|
|
//TODO: priority, bilinear filtering
|
|
|
|
//fill the controls with the proper values
|
|
switch ( TEX_ucGetTextureQualityLevel(p_stTextureToDisplay) )
|
|
{
|
|
case TEX_C_QLOW:
|
|
GetDlgItem(IDC_BUTTON_QUALITYLEVEL)->SetWindowText("Low");
|
|
break;
|
|
|
|
case TEX_C_QNORMAL:
|
|
GetDlgItem(IDC_BUTTON_QUALITYLEVEL)->SetWindowText("Normal");
|
|
break;
|
|
|
|
case TEX_C_QHIGH:
|
|
GetDlgItem(IDC_BUTTON_QUALITYLEVEL)->SetWindowText("High");
|
|
break;
|
|
}
|
|
|
|
long lMipmappingMode = TEX_lGetTextureMipMappingMode(p_stTextureToDisplay);
|
|
if ( lMipmappingMode == TEX_C_TRILINEAR )
|
|
((CButton *) GetDlgItem(IDC_CHECK_DEPTHFILTERING))->SetCheck(TRUE);
|
|
BOOL bFilterU = FALSE, bFilterV = FALSE;
|
|
if ( lMipmappingMode == TEX_C_BILINEAR )
|
|
{
|
|
//TODO: read filtering axis
|
|
}
|
|
((CButton *) GetDlgItem(IDC_CHECK_HORIZONTALFILTERING))->SetCheck(bFilterU);
|
|
((CButton *) GetDlgItem(IDC_CHECK_VERTICALFILTERING ))->SetCheck(bFilterV);
|
|
|
|
BOOL bTilingX, bTilingY;
|
|
TEX_vGetTextureTilingMode(p_stTextureToDisplay, &bTilingX , &bTilingY);
|
|
((CButton *) GetDlgItem(IDC_CHECK_HORIZONTALTILE ))->SetCheck(bTilingX);
|
|
((CButton *) GetDlgItem(IDC_CHECK_VERTICALTILE ))->SetCheck(bTilingY);
|
|
|
|
BOOL bActive, bFiltering;
|
|
unsigned char ucR, ucG, ucB, ucA;
|
|
TEX_vGetTextureChromakey(p_stTextureToDisplay, &bActive, &bFiltering, &ucR, &ucG, &ucB, &ucA);
|
|
UpdateData(FALSE); //move the data into the control
|
|
}
|
|
|
|
//enable the button just after the texture is changed
|
|
//Mircea Dunka 5.11.1998
|
|
//I need this button remain this way all the time!!!
|
|
//GetDlgItem(IDC_BUTTON_VISUEL )->EnableWindow(bTheMaterialIsTextured);
|
|
GetDlgItem(IDC_BUTTON_VISUEL )->EnableWindow(FALSE);
|
|
m_bButtonVisuelEnabled = bTheMaterialIsTextured;
|
|
//end Mircea Dunka
|
|
|
|
//note that these buttons will be updated by OnDrawItem()
|
|
GetDlgItem(IDC_BUTTON_VISUEL )->Invalidate();
|
|
GetDlgItem(IDC_BUTTON_CHROMAKEYCOLOR )->Invalidate();
|
|
|
|
GetDlgItem(IDC_BUTTON_PRIORITY )->EnableWindow(bTheMaterialIsTextured);
|
|
GetDlgItem(IDC_BUTTON_QUALITYLEVEL )->EnableWindow(bTheMaterialIsTextured);
|
|
GetDlgItem(IDC_CHECK_HORIZONTALTILE )->EnableWindow(bTheMaterialIsTextured);
|
|
GetDlgItem(IDC_CHECK_VERTICALTILE )->EnableWindow(bTheMaterialIsTextured);
|
|
GetDlgItem(IDC_CHECK_HORIZONTALFILTERING)->EnableWindow(bTheMaterialIsTextured);
|
|
GetDlgItem(IDC_CHECK_VERTICALFILTERING )->EnableWindow(bTheMaterialIsTextured);
|
|
GetDlgItem(IDC_CHECK_DEPTHFILTERING )->EnableWindow(bTheMaterialIsTextured);
|
|
GetDlgItem(IDC_BUTTON_CHROMAKEYCOLOR )->EnableWindow(bTheMaterialIsTextured);
|
|
GetDlgItem(IDC_BUTTON_SUPPLYTEXTURE )->EnableWindow(bTheMaterialIsTextured || m_bDisplaySupplyTexture);
|
|
//Mircea Dunka 16.11.98
|
|
GetDlgItem(IDC_BUTTON_PIXELCOLOR )->EnableWindow(bTheMaterialIsTextured);
|
|
//end Mircea Dunka
|
|
|
|
m_bControlsFilledFromMaterial = FALSE;
|
|
//Invalidate();
|
|
}
|
|
|
|
//==================================================================================================
|
|
// Description : handle function for WM_DRAWITEM
|
|
//==================================================================================================
|
|
void DiaText::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
|
|
{
|
|
CDC *pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
|
|
RECT *rect = &lpDrawItemStruct->rcItem;
|
|
BOOL bATextureIsEdited = m_hEditedTexture ? TRUE : FALSE;
|
|
COLORREF xColor;
|
|
|
|
switch ( nIDCtl )
|
|
{
|
|
default:
|
|
CFormView::OnDrawItem(nIDCtl, lpDrawItemStruct);
|
|
break;
|
|
|
|
case IDC_BUTTON_VISUEL:
|
|
{
|
|
BITMAP stBitmap;
|
|
m_oMemDC.GetCurrentBitmap()->GetBitmap(&stBitmap);
|
|
pDC -> StretchBlt(
|
|
rect->left, rect->top, rect->right, rect->bottom,
|
|
&m_oMemDC,
|
|
0, 0, stBitmap.bmWidth, stBitmap.bmHeight,
|
|
SRCCOPY
|
|
);
|
|
}
|
|
break;
|
|
|
|
case IDC_BUTTON_CHROMAKEYCOLOR:
|
|
{
|
|
unsigned char ucR, ucG, ucB, ucA;
|
|
if ( bATextureIsEdited )
|
|
{
|
|
BOOL bActive, bFiltering;
|
|
GLI_tdstTexture *p_stTextureToDisplay = (m_bDisplaySupplyTexture ? TEX_p_tdstGetSupplyTexture(m_hEditedTexture) : m_hEditedTexture);
|
|
if ( p_stTextureToDisplay )
|
|
TEX_vGetTextureChromakey(p_stTextureToDisplay, &bActive, &bFiltering, &ucR, &ucG, &ucB, &ucA);
|
|
else
|
|
ucR = ucG = ucB = ucA = 0;
|
|
xColor = RGB(ucR, ucG, ucB);
|
|
}
|
|
else
|
|
xColor = RGB(192,192,192);
|
|
pDC->FillSolidRect( rect, xColor);
|
|
//draw the alpha color in the button too, in the righthand third of the rectangle
|
|
if ( bATextureIsEdited )
|
|
{
|
|
short wOffset = (rect->right * 2) / 3;
|
|
rect->left += wOffset;
|
|
xColor = RGB(ucA, ucA, ucA);
|
|
pDC->FillSolidRect(rect, xColor);
|
|
}
|
|
}
|
|
break;
|
|
//mircea Dunka 4.11.98
|
|
case IDC_BUTTON_PIXELCOLOR:
|
|
{
|
|
xColor = RGB(m_nRPixelColor, m_nGPixelColor, m_nBPixelColor);
|
|
pDC->FillSolidRect(rect,xColor);
|
|
|
|
COLORREF clrNewTextColor;
|
|
if(((m_nRPixelColor >= 128) ? 0:255) + ((m_nGPixelColor >= 128) ? 0:255) + ((m_nBPixelColor >= 128) ? 0:255) > 255)
|
|
clrNewTextColor = 0x00FFFFFF;
|
|
else
|
|
clrNewTextColor = 0x000000000;
|
|
COLORREF clrOldTextColor = pDC->SetTextColor(clrNewTextColor);
|
|
int nOldBkMode = pDC->SetBkMode(TRANSPARENT);
|
|
char szBuffer[20];
|
|
wsprintf(szBuffer, "R:%d G:%d B:%d", m_nRPixelColor, m_nGPixelColor, m_nBPixelColor);
|
|
pDC->DrawText(szBuffer, strlen(szBuffer), rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
|
|
|
|
pDC->SetBkMode(nOldBkMode);
|
|
pDC->SetTextColor(clrOldTextColor);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
void DiaText::OnButtonQualityLevel()
|
|
{
|
|
GLI_tdstTexture *p_stTextureToDisplay = (m_bDisplaySupplyTexture ? TEX_p_tdstGetSupplyTexture(m_hEditedTexture) : m_hEditedTexture);
|
|
unsigned char ucQuality = TEX_ucGetTextureQualityLevel(p_stTextureToDisplay);
|
|
switch ( ucQuality )
|
|
{
|
|
case TEX_C_QLOW:
|
|
GetDlgItem(IDC_BUTTON_QUALITYLEVEL)->SetWindowText("Normal");
|
|
ucQuality = TEX_C_QNORMAL;
|
|
break;
|
|
|
|
case TEX_C_QNORMAL:
|
|
GetDlgItem(IDC_BUTTON_QUALITYLEVEL)->SetWindowText("High");
|
|
ucQuality = TEX_C_QHIGH;
|
|
break;
|
|
|
|
case TEX_C_QHIGH:
|
|
GetDlgItem(IDC_BUTTON_QUALITYLEVEL)->SetWindowText("Low");
|
|
ucQuality = TEX_C_QLOW;
|
|
break;
|
|
}
|
|
TEX_vSetTextureQualityLevel(p_stTextureToDisplay, ucQuality);
|
|
m_vNotifyChangeToScripts(FALSE, TRUE); //only the texture section is modified
|
|
}
|
|
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
void DiaText::OnButtonPriority()
|
|
{
|
|
static short wPri = 0;
|
|
switch ( wPri )
|
|
{
|
|
case 0:
|
|
GetDlgItem(IDC_BUTTON_PRIORITY)->SetWindowText("roglobo");
|
|
wPri = 1;
|
|
break;
|
|
|
|
case 1:
|
|
GetDlgItem(IDC_BUTTON_PRIORITY)->SetWindowText("gougnapla");
|
|
wPri = 2;
|
|
break;
|
|
|
|
case 2:
|
|
GetDlgItem(IDC_BUTTON_PRIORITY)->SetWindowText("zorbagnac");
|
|
wPri = 0;
|
|
break;
|
|
}
|
|
//m_vNotifyChangeToScripts(FALSE, TRUE); //only the texture section is modified
|
|
}
|
|
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
void DiaText::OnCheckTile()
|
|
{
|
|
GLI_tdstTexture *p_stTextureToDisplay = (m_bDisplaySupplyTexture ? TEX_p_tdstGetSupplyTexture(m_hEditedTexture) : m_hEditedTexture);
|
|
TEX_vSetTextureTilingMode(
|
|
p_stTextureToDisplay,
|
|
((CButton *) GetDlgItem(IDC_CHECK_HORIZONTALTILE))->GetCheck(),
|
|
((CButton *) GetDlgItem(IDC_CHECK_VERTICALTILE))->GetCheck()
|
|
);
|
|
m_vNotifyChangeToScripts(FALSE, TRUE); //only the texture section is modified
|
|
}
|
|
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
void DiaText::OnCheckFilter()
|
|
{
|
|
BOOL bFilterU, bFilterV, bFilterZ;
|
|
bFilterU = ((CButton *) GetDlgItem(IDC_CHECK_HORIZONTALFILTERING))->GetCheck();
|
|
bFilterV = ((CButton *) GetDlgItem(IDC_CHECK_VERTICALFILTERING))->GetCheck();
|
|
bFilterZ = ((CButton *) GetDlgItem(IDC_CHECK_DEPTHFILTERING))->GetCheck();
|
|
|
|
GLI_tdstTexture *p_stTextureToDisplay = (m_bDisplaySupplyTexture ? TEX_p_tdstGetSupplyTexture(m_hEditedTexture) : m_hEditedTexture);
|
|
long lTypeOfMipMapping;
|
|
|
|
if ( bFilterZ )
|
|
lTypeOfMipMapping = TEX_C_TRILINEAR;
|
|
else if ( bFilterU || bFilterV )
|
|
lTypeOfMipMapping = TEX_C_BILINEAR;
|
|
else
|
|
lTypeOfMipMapping = TEX_C_NO_MIPMAPPING;
|
|
TEX_vSetTextureMipMappingMode(p_stTextureToDisplay, lTypeOfMipMapping);
|
|
//TODO: set axis of bilinear filtering in texture according to bFilterU and bFilterV
|
|
m_vNotifyChangeToScripts(FALSE, TRUE); //only the texture section is modified
|
|
}
|
|
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
void DiaText::OnButtonVisuel()
|
|
{
|
|
if (g_sModalLoop)
|
|
return;
|
|
|
|
g_sModalLoop = TRUE;
|
|
gs_p_oMaterialInterface->m_p_oGetTextureChooserDialog()->DoModal();
|
|
g_sModalLoop = FALSE;
|
|
|
|
int iImage = gs_p_oMaterialInterface->m_p_oGetTextureChooserDialog()->m_fn_iGetSelectedImage();
|
|
if (iImage != -1)
|
|
{
|
|
GLI_tdstTexture *p_stGliText = (GLI_tdstTexture *) gs_p_oMaterialInterface->m_p_oGetMaterialsTextureList()->m_fn_lGetBitmapLong(iImage);
|
|
M_p_oGetEditManager()->AskFor(new tdoChangeTextureModif(
|
|
gs_p_oMaterialInterface->m_p_oGetEditedMaterial()->m_hGetEngineMaterial(),
|
|
m_lAnimatedTextureIndex,
|
|
p_stGliText,
|
|
iImage,
|
|
m_bDisplaySupplyTexture
|
|
));
|
|
/*
|
|
GMT_tdxHandleToGameMaterial hGameMaterial = gs_p_oMaterialInterface->m_p_oGetEditedMaterial()->m_hGetEngineMaterial();
|
|
ACP_tdxHandleOfMaterial hEditedVisualMaterial = GMT_fn_hGetVisualMaterial(hGameMaterial);
|
|
tdoEditorVisualMaterial *p_oVisualMaterial = (tdoEditorVisualMaterial *) gs_p_oMaterialInterface->m_p_oGetEditorObjectForEngine(hEditedVisualMaterial);
|
|
GLI_tdstTexture *p_stTextureToUnlink = NULL;
|
|
CPA_BaseObject *p_oOwnerObject = m_bDisplaySupplyTexture ? gs_p_oMaterialInterface->m_p_oGetEditorObjectForEngine(m_hEditedTexture) : p_oVisualMaterial;
|
|
//find the editor texture associated to the previous texture, and remove the cohemngr link if there is one
|
|
if ( m_hEditedTexture )
|
|
{
|
|
tdoEditorTexture *p_oEditorTexture = NULL;
|
|
if ( p_stTextureToUnlink = (m_bDisplaySupplyTexture ? TEX_p_tdstGetSupplyTexture(m_hEditedTexture) : m_hEditedTexture) )
|
|
p_oEditorTexture = (tdoEditorTexture *) gs_p_oMaterialInterface->m_p_oGetEditorObjectForEngine(p_stTextureToUnlink);
|
|
if ( p_oEditorTexture )
|
|
g_oCoherenceManager.m_fn_vRemoveALink(p_oOwnerObject, p_oEditorTexture);
|
|
}
|
|
|
|
//get the pointer on the new texture
|
|
GLI_tdstTexture *p_stGliText = (GLI_tdstTexture *) gs_p_oMaterialInterface->m_p_oGetMaterialsTextureList()->m_fn_lGetBitmapLong(iImage);
|
|
if ( p_stGliText != NULL && p_stTextureToUnlink != p_stGliText ) //if the texture effectively changed
|
|
{
|
|
//try to find the editor texture for this file, and associate it to the visual material
|
|
tdoEditorTexture *p_oEditorTexture = (tdoEditorTexture *) gs_p_oMaterialInterface->m_p_oGetEditorObjectForEngine(p_stGliText);
|
|
if ( p_oEditorTexture )
|
|
g_oCoherenceManager.m_fn_vAddALink(p_oOwnerObject, p_oEditorTexture);
|
|
|
|
if ( !m_bDisplaySupplyTexture )
|
|
{
|
|
GLI_tdstTexture *hChangedTexture;
|
|
float fDuration;
|
|
GLI_vGetMaterialAnimatedTexture(hEditedVisualMaterial, m_lAnimatedTextureIndex, &hChangedTexture, &fDuration);
|
|
//give the new texture to the engine visual material
|
|
GLI_vModifyMaterialAnimatedTexture(hEditedVisualMaterial, m_lAnimatedTextureIndex, p_stGliText, fDuration);
|
|
//add the flag saying the material is textured
|
|
ACP_tdxIndex xCurrentType;
|
|
GLI_xGetMaterialType(hEditedVisualMaterial, &xCurrentType);
|
|
GLI_xSetMaterialType(hEditedVisualMaterial, xCurrentType | GLI_C_lIsTextured);
|
|
}
|
|
else //give the supply texture to the main texture
|
|
TEX_vSetSupplyTexture(m_hEditedTexture, p_stGliText);
|
|
//display the new texture
|
|
m_fn_vShowMaterial(hGameMaterial, m_lAnimatedTextureIndex);
|
|
//m_fn_vChangeTexture(p_stGliText);
|
|
//GetDlgItem(IDC_BUTTON_VISUEL)->Invalidate();
|
|
//update the textured flag button
|
|
((CButton *) (gs_p_oMaterialInterface->m_p_oGetVisualMaterialView()->GetDlgItem(IDC_CHECK_TEXTURE)))->SetCheck(TRUE);
|
|
//make listview update the displayed texture for the edited game material
|
|
gs_p_oMaterialInterface->m_p_oGetMaterialListView()->m_fn_vSetItemImage(
|
|
gs_p_oMaterialInterface->m_p_oGetMaterialListView()->m_fn_lGetSelectedItem(),
|
|
(short) iImage
|
|
);
|
|
gs_p_oMaterialInterface->m_p_oGetMaterialListView()->m_fn_vRedrawSelectedItem();
|
|
//tell the main view to redraw itself because a material changed aspect
|
|
M_GetMainDevice3D()->DrawObject();
|
|
}
|
|
m_vNotifyChangeToScripts(TRUE, TRUE); //to be sure everybody is notified (but is the primary texture notified as well ?
|
|
*/
|
|
}
|
|
}
|
|
|
|
//==================================================================================================
|
|
// Description : change texture in m_oMemDC (for display)
|
|
//==================================================================================================
|
|
void DiaText::m_fn_vChangeTexture(GLI_tdstTexture *p_stTexture, BOOL _bEnableButton /*= TRUE*/)
|
|
{
|
|
//restore the old bitmap in the DC before destroying the textured one
|
|
m_oMemDC.SelectObject(m_p_oPreviousSelectedBitmap);
|
|
m_oMemBitmap.DeleteObject();
|
|
|
|
int iImage = -1;
|
|
tdoEditorGameMaterial * p_oGameMaterial = gs_p_oMaterialInterface->m_p_oGetEditedMaterial();
|
|
if ( p_oGameMaterial )
|
|
{
|
|
ACP_tdxHandleOfMaterial hEditedVisualMaterial = GMT_fn_hGetVisualMaterial(p_oGameMaterial->m_hGetEngineMaterial());
|
|
if ( hEditedVisualMaterial != NULL ) //is the handle valid ?
|
|
{
|
|
// try to get the good bitmap in list
|
|
if ( p_stTexture )
|
|
iImage = gs_p_oMaterialInterface->m_p_oGetMaterialsTextureList()->m_fn_iGetBitmapIndexByLong((long) p_stTexture);
|
|
else //if we display the supply texture, show an invalid texture when there is none instead of the rainbow
|
|
iImage = m_bDisplaySupplyTexture ? -1 : gs_p_oMaterialInterface->m_p_oGetMaterialsTextureList()->m_fn_iGetBitmapIndex(C_szNoBitmapName);
|
|
}
|
|
}
|
|
|
|
if ( iImage == -1 )
|
|
iImage = gs_p_oMaterialInterface->m_p_oGetMaterialsTextureList()->m_fn_iGetBitmapIndex(C_szUnviewableBitmapName);
|
|
|
|
if ( iImage != -1 )
|
|
{
|
|
BITMAP stBitmap;
|
|
CBitmap *p_oBitmap = CBitmap::FromHandle( gs_p_oMaterialInterface->m_p_oGetMaterialsTextureList()->m_fn_hGetBitmap(iImage));
|
|
p_oBitmap->GetBitmap(&stBitmap);
|
|
m_oMemBitmap.CreateCompatibleBitmap(this->GetDC(), stBitmap.bmWidth, stBitmap.bmHeight);
|
|
m_oMemDC.SelectObject(&m_oMemBitmap);
|
|
m_oMemDC.DrawState(CPoint(0,0), CSize(stBitmap.bmWidth, stBitmap.bmHeight), p_oBitmap, DST_BITMAP);
|
|
}
|
|
//Mircea Dunka 5.11.1998
|
|
//I need this button to remain disabled all the time!!! (for right click messages).
|
|
//GetDlgItem(IDC_BUTTON_VISUEL)->EnableWindow(_bEnableButton && p_stTexture);
|
|
GetDlgItem(IDC_BUTTON_VISUEL )->EnableWindow(FALSE);
|
|
m_bButtonVisuelEnabled = _bEnableButton && p_stTexture;
|
|
//end Mircea Dunka
|
|
|
|
GetDlgItem(IDC_BUTTON_VISUEL)->Invalidate();
|
|
}
|
|
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
void DiaText::m_vNotifyChangeToScripts(BOOL _bVisualSection, BOOL _bTextureSection)
|
|
{
|
|
ACP_tdxHandleOfMaterial hEditedVisualMaterial = GMT_fn_hGetVisualMaterial(gs_p_oMaterialInterface->m_p_oGetEditedMaterial()->m_hGetEngineMaterial());
|
|
//notify the visual material
|
|
if ( _bVisualSection )
|
|
{
|
|
tdoEditorVisualMaterial *p_oVisualMaterial = (tdoEditorVisualMaterial *) gs_p_oMaterialInterface->m_p_oGetEditorObjectForEngine(hEditedVisualMaterial);
|
|
if ( p_oVisualMaterial )
|
|
p_oVisualMaterial->fn_vNotifySave();
|
|
}
|
|
|
|
//notify the texture sections as well (main and supply, just to be sure
|
|
if ( _bTextureSection )
|
|
{
|
|
tdoEditorTexture *p_oEditorTexture;
|
|
p_oEditorTexture = (tdoEditorTexture *) gs_p_oMaterialInterface->m_p_oGetEditorObjectForEngine(m_hEditedTexture);
|
|
if ( p_oEditorTexture )
|
|
p_oEditorTexture->fn_vNotifySave();
|
|
p_oEditorTexture = (tdoEditorTexture *) gs_p_oMaterialInterface->m_p_oGetEditorObjectForEngine(TEX_p_tdstGetSupplyTexture(m_hEditedTexture));
|
|
if ( p_oEditorTexture )
|
|
p_oEditorTexture->fn_vNotifySave();
|
|
}
|
|
}
|
|
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
void DiaText::OnButtonChromakeyColor()
|
|
{
|
|
//Mircea Dunka 12.11.98
|
|
GEO_tdstColor stTempColor, stCapturedColor;
|
|
//end Mircea Dunka
|
|
BOOL bActive, bFiltering;
|
|
unsigned char ucR, ucG, ucB, ucA;
|
|
GLI_tdstTexture *p_stTextureToDisplay = (m_bDisplaySupplyTexture ? TEX_p_tdstGetSupplyTexture(m_hEditedTexture) : m_hEditedTexture);
|
|
TEX_vGetTextureChromakey(p_stTextureToDisplay, &bActive, &bFiltering, &ucR, &ucG, &ucB, &ucA);
|
|
|
|
stTempColor.xR = ((float) ucR) / 255;
|
|
stTempColor.xG = ((float) ucG) / 255;
|
|
stTempColor.xB = ((float) ucB) / 255;
|
|
stTempColor.xA = ((float) ucA) / 255;
|
|
|
|
//Mircea Dunka 12.11.98
|
|
stCapturedColor.xR = ((float) m_nRPixelColor) / 255;
|
|
stCapturedColor.xG = ((float) m_nGPixelColor) / 255;
|
|
stCapturedColor.xB = ((float) m_nBPixelColor) / 255;
|
|
stCapturedColor.xA = 0;
|
|
// end Mircea Dunka
|
|
|
|
if ( fn_bEditColor(GetDlgItem(IDC_BUTTON_CHROMAKEYCOLOR), &stTempColor, &stCapturedColor) )
|
|
{
|
|
TEX_vSetTextureChromakey(
|
|
p_stTextureToDisplay, bActive, bFiltering,
|
|
(unsigned char) (stTempColor.xR * 255),
|
|
(unsigned char) (stTempColor.xG * 255),
|
|
(unsigned char) (stTempColor.xB * 255),
|
|
(unsigned char) (stTempColor.xA * 255)
|
|
);
|
|
GetDlgItem(IDC_BUTTON_CHROMAKEYCOLOR)->Invalidate();
|
|
//tell the main view to redraw itself because a material changed aspect
|
|
M_GetMainDevice3D()->DrawObject();
|
|
//tell the texture section has to be saved
|
|
m_vNotifyChangeToScripts(FALSE, TRUE);
|
|
}
|
|
}
|
|
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
void DiaText::OnButtonSupplyTexture()
|
|
{
|
|
m_bDisplaySupplyTexture = !m_bDisplaySupplyTexture;
|
|
m_fn_vShowMaterial(gs_p_oMaterialInterface->m_p_oGetEditedMaterial()->m_hGetEngineMaterial(), m_lAnimatedTextureIndex);
|
|
}
|
|
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
void DiaText::OnKillFocusEditDuration()
|
|
{
|
|
//read the contents of the edit
|
|
CString csDuration;
|
|
GetDlgItem(IDC_EDIT_DURATION)->GetWindowText(csDuration);
|
|
//convert the string into a floating point number
|
|
float fDuration = (float) atof(LPCTSTR(csDuration));
|
|
if ( fDuration < 0.0f )
|
|
fDuration = 0.0f;
|
|
//write back in the edit the string that corresponds to the value we parsed
|
|
csDuration.Format(C_szDurationStringFormat, fDuration);
|
|
csDuration.TrimLeft();
|
|
GetDlgItem(IDC_EDIT_DURATION)->SetWindowText(csDuration);
|
|
|
|
//change the duration for the texture
|
|
GMT_tdxHandleToGameMaterial hGameMaterial = gs_p_oMaterialInterface->m_p_oGetEditedMaterial()->m_hGetEngineMaterial();
|
|
ACP_tdxHandleOfMaterial hEditedVisualMaterial = GMT_fn_hGetVisualMaterial(hGameMaterial);
|
|
GLI_tdstTexture *hReadTexture;
|
|
float fReadDuration;
|
|
GLI_vGetMaterialAnimatedTexture(hEditedVisualMaterial, m_lAnimatedTextureIndex, &hReadTexture, &fReadDuration);
|
|
GLI_vModifyMaterialAnimatedTexture(hEditedVisualMaterial, m_lAnimatedTextureIndex, hReadTexture, fDuration);
|
|
if ( hReadTexture != m_hEditedTexture )
|
|
AfxMessageBox(
|
|
"TGM INTERNAL ERROR! Tell B. Germain if you see this message\n"
|
|
"You can continue to work normally, this has no influence on your data",
|
|
MB_OK
|
|
);
|
|
|
|
//now update the edited animation texture node.
|
|
m_vNotifyChangeToScripts(FALSE, TRUE);
|
|
}
|
|
|
|
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
tdoChangeTextureModif::tdoChangeTextureModif
|
|
(
|
|
GMT_tdxHandleToGameMaterial _MyMatHandle,
|
|
long _lChanged,
|
|
GLI_tdstTexture *_hNewTexture,
|
|
int _iNewImage,
|
|
BOOL _bSupplyTexture
|
|
)
|
|
: CPA_Modif(0, "Texture Change")
|
|
{
|
|
m_hEditedGameMaterial = _MyMatHandle;
|
|
m_p_oEditedGameMaterial = (tdoEditorGameMaterial *) gs_p_oMaterialInterface->m_p_oGetEditorObjectForEngine(m_hEditedGameMaterial);
|
|
|
|
m_hTextureAfterDo = _hNewTexture;
|
|
|
|
m_iImageAfterDo = _iNewImage;
|
|
|
|
m_lChangeIndex = _lChanged;
|
|
|
|
m_bSupplyTexture = _bSupplyTexture;
|
|
|
|
ACP_tdxHandleOfMaterial hMaterialVisual = GMT_fn_hGetVisualMaterial(m_hEditedGameMaterial);
|
|
GLI_xGetMaterialTexture(hMaterialVisual, &m_hTextureBeforeDo);
|
|
if ( m_bSupplyTexture )
|
|
m_hTextureBeforeDo = TEX_p_tdstGetSupplyTexture(m_hTextureBeforeDo);
|
|
|
|
m_iImageBeforeDo = gs_p_oMaterialInterface->m_p_oGetMaterialListView()->m_iGetTextureIndexForGameMaterial(m_p_oEditedGameMaterial, FALSE);
|
|
}
|
|
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
tdoChangeTextureModif::~tdoChangeTextureModif()
|
|
{
|
|
}
|
|
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
BOOL tdoChangeTextureModif::Do()
|
|
{
|
|
return m_bDoIt(m_hTextureAfterDo, m_iImageAfterDo);
|
|
}
|
|
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
BOOL tdoChangeTextureModif::Undo()
|
|
{
|
|
return m_bDoIt(m_hTextureBeforeDo, m_iImageBeforeDo);
|
|
}
|
|
|
|
//==================================================================================================
|
|
//==================================================================================================
|
|
BOOL tdoChangeTextureModif::m_bDoIt(GLI_tdstTexture *_hReplacingTexture, int _iImageIndex)
|
|
{
|
|
ACP_tdxHandleOfMaterial hEditedVisualMaterial = GMT_fn_hGetVisualMaterial(m_hEditedGameMaterial);
|
|
|
|
//change the texture in the material
|
|
GLI_tdstTexture *hReplacedTexture;
|
|
float fDuration;
|
|
GLI_vGetMaterialAnimatedTexture(hEditedVisualMaterial, m_lChangeIndex, &hReplacedTexture, &fDuration);
|
|
GLI_vModifyMaterialAnimatedTexture(hEditedVisualMaterial, m_lChangeIndex, _hReplacingTexture, fDuration);
|
|
//if this is the first texture in the animation, update the unanimated texture too
|
|
if ( m_lChangeIndex == 0 )
|
|
GLI_xSetMaterialTexture(hEditedVisualMaterial, _hReplacingTexture);
|
|
//tell the engine something changed with the animated textures
|
|
GLI_xRefreshAnimatedTexture(hEditedVisualMaterial);
|
|
|
|
//update coherence manager links
|
|
tdoEditorVisualMaterial *p_oVisualMaterial = (tdoEditorVisualMaterial *) gs_p_oMaterialInterface->m_p_oGetEditorObjectForEngine(hEditedVisualMaterial);
|
|
tdoEditorTexture *p_oEditorTextureBefore = (tdoEditorTexture *) gs_p_oMaterialInterface->m_p_oGetEditorObjectForEngine(hReplacedTexture);
|
|
if ( p_oEditorTextureBefore )
|
|
g_oCoherenceManager.m_fn_vRemoveALink(p_oVisualMaterial, p_oEditorTextureBefore);
|
|
tdoEditorTexture *p_oEditorTextureAfter = (tdoEditorTexture *) gs_p_oMaterialInterface->m_p_oGetEditorObjectForEngine(_hReplacingTexture);
|
|
if ( p_oEditorTextureAfter )
|
|
g_oCoherenceManager.m_fn_vAddALink(p_oVisualMaterial, p_oEditorTextureAfter);
|
|
|
|
//make the visual material save itself
|
|
p_oVisualMaterial->fn_vNotifySave();
|
|
|
|
//if we changed the first texture in tha animation
|
|
if ( m_lChangeIndex == 0 )
|
|
{
|
|
//find the item for the game material in the material list
|
|
int iMaterialIndex = gs_p_oMaterialInterface->m_p_oGetMaterialListView()->m_fn_iFindMaterial(m_p_oEditedGameMaterial);
|
|
//change its image
|
|
gs_p_oMaterialInterface->m_p_oGetMaterialListView()->m_fn_vSetItemImage(iMaterialIndex, _iImageIndex);
|
|
//then redraw it
|
|
gs_p_oMaterialInterface->m_p_oGetMaterialListView()->m_fn_vRedrawSelectedItem(iMaterialIndex);
|
|
}
|
|
|
|
//update display if relevant
|
|
if ( m_p_oEditedGameMaterial == gs_p_oMaterialInterface->m_p_oGetEditedMaterial() )
|
|
{
|
|
//first update the combo of the VMT
|
|
CComboBox *p_oCombo = (CComboBox *) gs_p_oMaterialInterface->m_p_oGetVisualView()->GetDlgItem(IDC_COMBO_ANIMATEDTEXTURES);
|
|
p_oCombo->DeleteString(m_lChangeIndex);
|
|
p_oCombo->InsertString(m_lChangeIndex, p_oEditorTextureAfter ? p_oEditorTextureAfter->GetName() : "ERROR!");
|
|
p_oCombo->SetItemDataPtr(m_lChangeIndex, p_oEditorTextureAfter);
|
|
//then select the modified entry
|
|
p_oCombo->SetCurSel(m_lChangeIndex);
|
|
//then make the texture view redisplay itself
|
|
gs_p_oMaterialInterface->m_p_oGetTexView()->m_fn_vShowMaterial(m_hEditedGameMaterial, m_lChangeIndex);
|
|
}
|
|
|
|
//tell the main view to redraw itself because a material changed aspect
|
|
M_GetMainDevice3D()->DrawObject();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
//Mircea Dunka 4.11.98
|
|
void DiaText::OnRButtonDown(UINT nFlags, CPoint point)
|
|
{
|
|
|
|
CWnd* pWndTexture = GetDlgItem(IDC_BUTTON_VISUEL);
|
|
|
|
if( ChildWindowFromPoint(point, CWP_ALL) == pWndTexture)
|
|
{
|
|
CPoint ptTexture = point;
|
|
ClientToScreen(&ptTexture);
|
|
pWndTexture->ScreenToClient(&ptTexture);
|
|
COLORREF color = pWndTexture->GetDC()->GetPixel(ptTexture);
|
|
m_nRPixelColor = GetRValue(color);
|
|
m_nGPixelColor = GetGValue(color);
|
|
m_nBPixelColor = GetBValue(color);
|
|
GetDlgItem(IDC_BUTTON_PIXELCOLOR)->InvalidateRect(NULL);
|
|
}
|
|
|
|
CFormView::OnRButtonDown(nFlags, point);
|
|
}
|
|
|
|
|
|
void DiaText::OnLButtonDown(UINT nFlags, CPoint point)
|
|
{
|
|
if( (ChildWindowFromPoint(point, CWP_ALL)==GetDlgItem(IDC_BUTTON_VISUEL)) && m_bButtonVisuelEnabled)
|
|
{
|
|
OnButtonVisuel();
|
|
}
|
|
else
|
|
CFormView::OnLButtonDown(nFlags, point);
|
|
}
|
|
|
|
|
|
void DiaText::OnButtonPixelcolor()
|
|
{
|
|
BOOL bActive, bFiltering;
|
|
unsigned char ucR, ucG, ucB, ucA;
|
|
GLI_tdstTexture *p_stTextureToDisplay = (m_bDisplaySupplyTexture ? TEX_p_tdstGetSupplyTexture(m_hEditedTexture) : m_hEditedTexture);
|
|
TEX_vGetTextureChromakey(p_stTextureToDisplay, &bActive, &bFiltering, &ucR, &ucG, &ucB, &ucA);
|
|
TEX_vSetTextureChromakey(
|
|
p_stTextureToDisplay, bActive, bFiltering,
|
|
m_nRPixelColor,
|
|
m_nGPixelColor,
|
|
m_nBPixelColor,
|
|
ucA
|
|
);
|
|
GetDlgItem(IDC_BUTTON_CHROMAKEYCOLOR)->Invalidate();
|
|
//tell the main view to redraw itself because a material changed aspect
|
|
M_GetMainDevice3D()->DrawObject();
|
|
//tell the texture section has to be saved
|
|
m_vNotifyChangeToScripts(FALSE, TRUE);
|
|
|
|
}
|
|
///end Mircea Dunka
|