|
|

楼主 |
发表于 2008-4-29 15:18:00
|
显示全部楼层
Re:牛刀小试,发个截图
光线是通过UI控制的。
class CForm2:virtual public CForm
{
public:
CBtn * btnOK;
CBtn * btnOK2;
CListBox * lstList;
LIGHT l;
private:
CTexture *m_pTex;
CTextureSurf *m_pSurf;
CForm1 *m_pTT;
Bool m_TT_B;
public:
DYNAMIC_FUNC7(::CForm2,inst::ui::CForm,inst::ui::IForm,inst::ui::IMasterContainer,inst::ui::IContainer,inst::ui::IElement,inst::IDynamic);
CForm2():CForm(L"Form2")
{
InitComponent();
m_pTT=new CForm1;
m_pTT->SetAlpha(0);
pUI->RemoveForm(m_pTT);
m_pTT->Show();
m_pTT->SetScreen(null);
ZeroMemory(&l,sizeof(l));
l.Type=LIGHT_DIRECTIONAL;
l.Dir=VEC3(0,-1,0);
l.Color=0xFFFFFF;
}
virtual ~CForm2()
{
delete m_pTT;
DestroyComponent();
}
private:
void InitComponent();
void DestroyComponent();
private:void btnOK_MouseDown(void *es,PARAM1 p1,PARAM2 p2,POS x,POS y)
{
if(p1 & 1) l.Dir.x-=0.5;
if(p1 & 2) l.Dir.x+=0.5;
if(l.Dir.x>10) l.Dir.x=10;
if(l.Dir.x<-10) l.Dir.x=-10;
g_pg->SetLight(0,l);
}
private:void btnOK2_MouseDown(void *es,PARAM1 p1,PARAM2 p2,POS x,POS y)
{
if(p1 & 1) l.Dir.z-=0.5;
if(p1 & 2) l.Dir.z+=0.5;
if(l.Dir.z>10) l.Dir.z=10;
if(l.Dir.z<-10) l.Dir.z=-10;
g_pg->SetLight(0,l);
}
private:void btnOK_MouseEnter(void *es)
{
m_TT_B=False;
}
private:void btnOK_MouseMove(void *es,PARAM1 p1,PARAM2 p2,POS x,POS y)
{
if(m_TT_B)return;
pUI->SetToolTip((IElement *)m_pTT);
m_pTT->SetX(GetX()+btnOK->GetX()+x);
m_pTT->SetY(GetY()+btnOK->GetY()+y);
m_pTT->SetAlpha(0);
m_TT_B=True;
}
private:void btnOK_MouseLeave(void *es)
{
pUI->SetToolTip(null);
m_TT_B=False;
}
public: void Update(UInt32 dt)
{
if(m_TT_B)
{
if(m_pTT->GetAlpha()>196)return;
m_pTT->SetAlpha(m_pTT->GetAlpha()+dt*0.7);
}
}
}; |
|