/ k) ^( u2 P. k( P' n5 N代码: - C# e% K+ _6 B C+ [- p Q. j2 B( ~& |( n
void CWorld::SetLight( BOOL bLight )! O# p! H7 u+ A& N$ F: \
durch ) C% e8 G+ E6 [& q Q5 TCode:4 W7 Z, L1 B1 q
void CWorld::SetLight( BOOL bLight ) 1 \' Y+ ]1 F. [8 m7 ~0 v{ / `+ P2 w |8 F //ACE("SetLight %d \n", bLight);0 G8 E- g. K5 O/ Y
$ Q9 h* a- a7 y0 m; o5 N6 o#ifndef __WORLDSERVER + m) i: R. }- S' j7 v6 M+ w DWORD dwAmbient = D3DCOLOR_ARGB( 0,0,0,0); " ^" {5 U( j, U2 Q CLight* pLight = NULL;6 |4 c3 w. i# `( W r, e. g
0 d- d# s; ?4 A. p D3DXVECTOR3 vPos = ( CObj::GetActiveObj() != NULL ? CObj::GetActiveObj()->GetPos() : D3DXVECTOR3( 0, 0, 0 ) ); O( O6 r& ^0 f2 H9 ^# i& e* b1 o/ V0 C5 v, ?5 b: D0 @
pLight = GetLight( "direction" );% b+ G( `2 w2 w" P! k, `
6 k6 S i/ m4 ?1 O
#if __VER >= 15 // __BS_CHANGING_ENVIR2 m8 M K- i1 p, x+ [
if( g_pPlayer ){ O4 O' S$ x0 }; Z# z& r9 m: f; y ENVIR_INFO* pInfo = GetInContinent( g_pPlayer->GetPos( ) ); * ^1 I% N" e3 `7 b) Y8 W" T if( pInfo && m_kCurContinent._bUseEnvir ) // ′??ú ?èàì°í ′??úá¤o??| àì???ò °??ì?? !! 1 _5 W+ j! H- Z1 t x {! e7 G: F( i( @8 C" t8 M- V; [
if( pLight ) ( ~! F1 a: e; ~ { $ o/ z& ^% |" g0 y; c( l: o$ b pLight->Ambient.r = pInfo->_fAmbient[ 0 ]; 8 K3 y* i8 R& a1 C$ w pLight->Ambient.g = pInfo->_fAmbient[ 1 ]; 7 R8 n' l6 P1 p1 m# I, p7 Q3 |$ q pLight->Ambient.b = pInfo->_fAmbient[ 2 ];( I0 n7 d/ c, y
) l; [& Q' f' e$ n& V% T' i( B
pLight->Specular.r = 2.0f;8 P) W; V+ B* _+ L
pLight->Specular.g = 2.0f;" z- x' A& u5 Y6 J5 r0 z# F
pLight->Specular.b = 2.0f; 1 D. w) I7 F* O5 j5 ]0 {. ~ 0 A3 M8 L$ C) R8 l1 |$ t
pLight->Diffuse.r = pInfo->_fDiffuse[ 0 ];+ V& V4 x' j0 p2 m& n
pLight->Diffuse.g = pInfo->_fDiffuse[ 1 ];9 e" Q7 u/ T& I, V7 R) a
pLight->Diffuse.b = pInfo->_fDiffuse[ 2 ];, h5 l) ]" }' i) m0 e
$ _( H( G! |* c/ z
HookUpdateLight( pLight ); 8 {2 S/ L) ]* ?0 f+ c; n + M) s: u% x1 i5 b" p) ^& |2 t memcpy( &m_lightFogSky, pLight, sizeof( m_lightFogSky ) ); ( ^- Z$ L& s0 A8 G' | . ?1 L! E- |. F, `8 k, x4 M5 C7 H
pLight->Diffuse.r *= 1.2f;2 Q6 p& \, O5 V5 q* Z; \
pLight->Diffuse.g *= 1.2f; : }6 @% f7 g, V8 I8 F pLight->Diffuse.b *= 1.2f; - l# }' E8 p3 q4 R" [3 a j" Z U 9 U. e/ ?* [6 z pLight->Ambient.r *= 0.8f; % U: x) Q9 D. t* Q pLight->Ambient.g *= 0.8f;+ G ?4 K0 j1 b. x( `
pLight->Ambient.b *= 0.8f;8 x. u; t: [; s/ k6 L5 i% n5 T
- G& I! v, G ]2 }# `) }7 Q
memcpy( &m_light, pLight, sizeof( m_light ) );$ r/ @1 q( V* u: \. s+ T! z
9 M& t. t- I- r+ x: D: e, \! j
D3DXVECTOR3 vecSun = D3DXVECTOR3( 0.0f, 0.5f,0.5f); 7 @* |* U* _/ I% A6 F, m9 p D3DXVec3Normalize(&(vecSun),&(vecSun));, P$ g% M3 ?1 f- \4 N6 M5 P+ Z
pLight->SetDir( -vecSun.x, -vecSun.y, -vecSun.z ); 7 i! L4 ^) L: O6 S8 L5 x4 p, i
pLight->Appear( m_pd3dDevice, TRUE ); ( @+ k! Z0 p0 L$ s- r1 K: Q% P " b' K+ I1 g$ c DWORD dwR, dwG, dwB;6 I3 k; v2 T7 H4 }7 X2 U% P
dwR = (DWORD)( pLight->Ambient.r * 255 ); 3 D& f1 b& j, D dwG = (DWORD)( pLight->Ambient.g * 255 ); ' P* R6 [7 b S) q1 Z dwB = (DWORD)( pLight->Ambient.b * 255 ); 1 M7 i: x6 Z+ C- g: z( Y: P* f Y dwAmbient = D3DCOLOR_ARGB( 255, dwR, dwG, dwB ); ! `: M# `4 G# w/ x: g8 f4 ~ }" c) x8 P& d% ^1 K I& i. T
}/ p( M' j! h& t2 T
}8 m9 D5 C5 O+ k- X4 }4 N1 d
else& A. L/ K3 M2 C) K
#endif C) H0 H3 y" R: A, p0 v6 q2 y% q( P6 r1 c0 J( Y
if( m_bIsIndoor ). z6 B6 g4 _2 X8 h* J9 _
{3 }+ Q& g( S! g6 ^9 m
if( pLight ) 9 k( S% ~3 p$ Z* l. o3 o( ?# Y: ^5 H { / q) K8 ~6 W* A1 m" K% F
// à??μ oˉè* 7 A& D: f: [& n- d _5 z
pLight->Diffuse.r = ((m_dwDiffuse>>16) & 0xff) / 255.f; 1 V Y7 x: x$ R, L2 v P0 t8 P pLight->Diffuse.g = ((m_dwDiffuse>>8) & 0xff) / 255.f; # X% X! K) O/ h pLight->Diffuse.b = ((m_dwDiffuse) & 0xff) / 255.f; 8 a# Y: A: U4 G: F4 {+ ]7 p# [ ; ]' G4 }! O- [! [1 l // oˉè* ??à? 3 J( s" A$ |6 i& Z5 {& u4 x) y3 n# z
pLight->Specular.r = 1.0f;2 n& k6 \1 M! ?: G- a( M( z7 {7 L2 p
pLight->Specular.g = 1.0f; 1 c% l8 u' c5 \* O/ e, \" M pLight->Specular.b = 1.0f;2 h/ L! `- t& \2 [
// àü?? oˉè* % b$ ?' r2 l5 P
pLight->Ambient.r = ((m_dwAmbient>>16) & 0xff) / 255.f; 6 E- ^7 C9 q6 [" A7 I% x pLight->Ambient.g = ((m_dwAmbient>>8) & 0xff) / 255.f; + c; r% o! i+ C- | pLight->Ambient.b = ((m_dwAmbient) & 0xff) / 255.f;4 v" q4 }: d* k+ w
) V: o7 D+ x. {
if( g_Option.m_nBloom ) // ???t?? ?é??àì ??á?à?à??? á??íà? á? 3???áà?? ??′ù. ?è±×?ˉ?é 3ê1? 1à??. * S9 v) I- F1 j1 o4 f+ ~0 U1 H* s% t {! _# o7 b" o4 u P: g
pLight->Diffuse.r *= 0.6f;8 ~4 \3 @, Y1 W, ]2 ~
pLight->Diffuse.g *= 0.6f; ) ]: T" E1 m, t- b( {/ j pLight->Diffuse.b *= 0.6f; : ~* R! | @6 w* M1 R( m( N pLight->Ambient.r *= 0.7f;& m* |6 `6 ~& G' P& i
pLight->Ambient.g *= 0.7f;* m. [- |# i6 D- I
pLight->Ambient.b *= 0.7f;4 F2 `' H# D! Y, ^
} 4 e' |# \2 g; h9 P4 i- o ' {% S- C% z; Z5 H: ~ c2 w#if __VER >= 15 // __BS_CHANGING_ENVIR 6 r- L x# b2 U/ f- p% h1 ` if( g_pPlayer )$ H1 H! D1 G" u+ V/ N7 A
HookUpdateLight( pLight ); * R8 I" k: F! o3 m#endif : | j# ?# H% U6 o memcpy( &m_lightFogSky, pLight, sizeof( m_lightFogSky ) ); 7 C* ]& f- A3 p+ r% U& p3 h7 |) r! n0 A$ @- N! B9 q
pLight->Diffuse.r += 0.1f; 1 h/ T& O& X& Z$ J; u% k pLight->Diffuse.g += 0.1f;. s/ _) j8 |0 H: ^- m. B
pLight->Diffuse.b += 0.1f;; r6 I3 \8 [# T) v' [2 |; M
// oˉè* ??à? 2 F) m$ I9 S, F% j: G. \7 r
pLight->Specular.r = 2.0f; ) V$ o. \5 N, z/ H pLight->Specular.g = 2.0f;4 {) S8 G5 A& ~+ {
pLight->Specular.b = 2.0f; 7 A4 o+ p3 |+ y4 i // á?oˉ # j8 W/ U z, u pLight->Ambient.r *= 0.9f;, `- o4 K% n$ M4 ^& t. U( u: @4 k6 f
pLight->Ambient.g *= 0.9f; 2 Z9 Y" x! s8 j& \& C7 Q pLight->Ambient.b *= 0.9f;: A% _" p& B; q& w) M
6 d/ u1 l0 k0 Y8 L0 i! S memcpy( &m_light, pLight, sizeof( m_light ) ); 0 @' c' d- ^- u" L 1 v$ e3 Z8 B' U, Q; G M8 z `9 S2 \ [ pLight->SetDir( m_v3LightDir.x, m_v3LightDir.y, m_v3LightDir.z );4 R# {7 N3 `: m; Y" E
pLight->Appear( m_pd3dDevice, TRUE );* D$ z4 L, ^! _; H' @
; Y+ R# c( W' @: |4 |* o" c8 \" w
DWORD dwR, dwG, dwB; 9 u& N e+ a0 \% u/ u dwR = (DWORD)( pLight->Ambient.r * 255 ); ) G6 p7 Q+ J3 X( x. U, @4 R dwG = (DWORD)( pLight->Ambient.g * 255 );) {7 x# {- N% ?( f* B3 |
dwB = (DWORD)( pLight->Ambient.b * 255 ); 5 v: R5 \0 ?4 h) S dwAmbient = D3DCOLOR_ARGB( 255, dwR, dwG, dwB ); 7 T" k/ U* s$ t5 [) s }1 D; R: ~2 J% f( E( c3 I4 u
} 9 a8 r0 y! v4 q; j else 4 I1 ^+ M) F# E4 ?9 V$ d2 e {. s4 N* V( f9 h3 l! B
if( pLight ) 5 d+ b& l- P; u4 J# i {& }/ b4 D: t# W* u$ T% H
$ u/ t. n' d. N. w3 H* ~: c7 ~; Q& s int nHour = 8, nMin = 0;8 c2 d( | a$ W+ t! v" w! Y
#ifdef __CLIENT 3 K5 V: O# m& E4 d8 | // ???óàì?e??′? ??°£à? g_GameTimer???* °?á???′ù. $ b* Y7 U3 c2 J) M nHour = g_GameTimer.m_nHour; ! ?; }1 N) v. B e6 H+ ^ nMin = g_GameTimer.m_nMin ;. _" w) V& R" }* S+ i
#else! g; Z0 J9 c; g! J% p
// o??o??′? ??°£à? m_nLightHour???* °?á???′ù. ' F1 T: k p3 p. ^, s0 V7 y9 n& L% k if( m_nLightType == 1 ) , \! f8 b4 O9 G6 c) P& Z nHour = m_nLightHour; 2 y% g8 u) N1 L. A" t #endif7 w+ w: Y' h* H$ K7 \' z
nHour--; 4 R( U5 K3 r* n, e if( nHour < 0 ) nHour = 0; % T; v8 f. \0 y) D t if( nHour > 23 ) nHour = 23;5 B% P& Q; @( T8 t; ]
j# p6 a5 s9 c) p5 h
//if( m_bFixedHour ). G& m5 X. q" \5 D- B& r- W
// nHour = m_nFixedHour, nMin = 0;8 {( E" D- F$ d* \+ L2 P5 @
LIGHTCOLOR lightColorPrv = m_k24Light[ ( nHour - 1 == -1 ) ? 23 : nHour - 1 ]; ( E! G7 V$ u1 ^ LIGHTCOLOR lightColor = m_k24Light[ nHour ];; I" t9 N7 U6 E. h& B
1 P% x/ {4 {; C6 z) J' M //m_lightColor = lightColorPrv;+ _: n2 Q4 n( b/ [3 Y1 J. M
lightColorPrv.r1 += ( lightColor.r1 - lightColorPrv.r1) * nMin / 60;; Y/ b" F$ a! L$ w6 P3 o6 m' s7 M
lightColorPrv.g1 += ( lightColor.g1 - lightColorPrv.g1) * nMin / 60; 9 K/ }! v: R: h0 x* o' J lightColorPrv.b1 += ( lightColor.b1 - lightColorPrv.b1) * nMin / 60; & a+ `) n! }7 l lightColorPrv.r2 += ( lightColor.r2 - lightColorPrv.r2) * nMin / 60;7 r- h0 K8 N: o4 w" v. e
lightColorPrv.g2 += ( lightColor.g2 - lightColorPrv.g2) * nMin / 60;8 `! K. j; @2 g; l
lightColorPrv.b2 += ( lightColor.b2 - lightColorPrv.b2) * nMin / 60; 6 J. W3 z; a7 ^9 X5 ^+ Y // 60(minMax) : 15(curMin) = 0.5(colorDistant) : x(curCol)1 t' E u6 ?5 Z3 C8 S0 i. _
( v& @6 l9 V7 O
// à??μ oˉè* " L. t; P/ W3 B, l5 ^9 P8 t
pLight->Diffuse.r = lightColorPrv.r1;& D- G/ {; O' e# p E
pLight->Diffuse.g = lightColorPrv.g1;) s; G1 C; {3 S2 l3 H
pLight->Diffuse.b = lightColorPrv.b1; & ?8 T m/ @2 Q+ f3 {5 \ // oˉè* ??à? 5 R- |) M: G+ K pLight->Specular.r = 1.0f; $ o/ ]) c! R/ X1 d. U) W pLight->Specular.g = 1.0f; ! K4 K" @ I% o: C9 D pLight->Specular.b = 1.0f;- b# p, ^& D2 F! M/ V, _$ T
// àü?? oˉè* 7 S9 Z @4 N `- l$ h
pLight->Ambient.r = lightColorPrv.r2; 5 l9 i5 S' F/ }0 D0 M/ Q: Y pLight->Ambient.g = lightColorPrv.g2; 1 s% d) D* k5 Z& x6 \: q pLight->Ambient.b = lightColorPrv.b2; " r$ f) a2 }, o5 K ' [! E. E6 L: Q5 V( Q if( g_Option.m_nBloom ) // ???t?? ?é??àì ??á?à?à??? á??íà? á? 3???áà?? ??′ù. ?è±×?ˉ?é 3ê1? 1à??. * m) Q; ^! Y: S7 \ {$ O( R7 R% _+ W& H8 a
pLight->Diffuse.r *= 0.6f; 1 y2 i3 D/ c. N5 V/ |9 Z pLight->Diffuse.g *= 0.6f; & f' K1 s& g2 L5 _) @& n: y pLight->Diffuse.b *= 0.6f; . f/ j8 r9 X8 I- k! z3 f pLight->Ambient.r *= 0.7f;8 ~2 A' O# `# T1 {# W/ t9 }1 P
pLight->Ambient.g *= 0.7f;: ?5 ]3 L2 |8 h7 y) X
pLight->Ambient.b *= 0.7f; - P6 k q+ i6 U# z/ ^ }* h- D: g5 ~" A) c, A
7 C) R: t3 U$ ?4 m6 R2 [) d
#if __VER >= 15 // __BS_CHANGING_ENVIR8 S- M/ @5 t' k( s" m2 J. l
if( g_pPlayer )* h4 a4 a, d* o& N7 c
HookUpdateLight( pLight ); ( I: w7 y1 b. q9 Q#endif 4 v3 Y- L) C* ~' x memcpy( &m_lightFogSky, pLight, sizeof( m_lightFogSky ) );4 k ^* H" U! P+ ]
* j' J* K3 G& W K6 Y#ifdef __YENV & r4 p. C( A, C- ^/ T! k2 I pLight->Diffuse.r *= 1.1f; ( h) j; h/ b8 D& ?6 B' | pLight->Diffuse.g *= 1.1f;7 l3 ^0 w0 Z7 y& g/ J" m
pLight->Diffuse.b *= 1.1f; 9 @* e/ M; d" Z* d; P- r // oˉè* ??à? : A" A# V7 G3 A' } pLight->Specular.r = 2.0f;- I8 R- M+ W V& |# f2 a B' E" y
pLight->Specular.g = 2.0f;! |0 f8 `; r% \" J% `$ e
pLight->Specular.b = 2.0f;8 z' m% T& f* f. C! ?8 ?2 |
// á?oˉ / f+ c- {8 ]& I/ L( `! x: u
pLight->Ambient.r *= 1.0f;6 E; J1 [) E: M
pLight->Ambient.g *= 1.0f;: R( G' l$ M, s- P8 c4 a2 f
pLight->Ambient.b *= 1.0f; ) @1 R8 u/ {4 H#else //__YENV - f8 M+ I6 F7 M. A pLight->Diffuse.r *= 1.1f;( G2 J" X( a0 Y8 B1 X9 {& |
pLight->Diffuse.g *= 1.1f; . [/ U, U8 N& q& U, f: f! X pLight->Diffuse.b *= 1.1f;$ a" U% p: v' t% @ r T
// oˉè* ??à? + e: A, k7 _4 O Q A4 k% e3 _
pLight->Specular.r = 2.0f;, p6 D& t1 d5 u6 K2 M$ [2 j$ ]
pLight->Specular.g = 2.0f; 5 d) r7 L; t0 |% a pLight->Specular.b = 2.0f;: p; Q7 M4 ?3 l
// á?oˉ / W* E: \, U5 r4 f pLight->Ambient.r *= 0.9f;& T! c3 Y' U0 L. n2 ?/ u, Y
pLight->Ambient.g *= 0.9f; / P& H0 j4 v. j6 s0 u% H pLight->Ambient.b *= 0.9f; - |# u# O; w4 |: R#endif //__YENV u. [1 F3 A$ b$ J ! l; @' X+ N; n: t memcpy( &m_light, pLight, sizeof( m_light ) );2 ~. \. o$ [* h# A* a, f6 o
}) Q6 X+ ]% l0 T8 h! Z2 c7 J
D3DXVECTOR3 vecSun=D3DXVECTOR3( 0.0f, 0.0f,1.0f);& y8 r% \5 t2 Z( U8 x# U, j
D3DXMATRIX matTemp;4 H. z5 ^* ] o0 {
static const float CONS_VAL = 3.1415926f / 180.f; A5 g+ ]' x( Y7 F2 y5 M# z. M' R. V$ P3 U5 B6 M: |' B b5 v
D3DXMatrixRotationX( &matTemp,(m_skyBox.m_fSunAngle +180)*CONS_VAL); & B; T" v$ l# V4 K- E/ @! a D3DXVec3TransformCoord(&vecSun,&vecSun,&matTemp); 1 |8 }% d. G1 v' J pLight->SetDir( vecSun.x, vecSun.y, vecSun.z ); ' y" g+ j8 ^* ]# A6 v3 ?, R pLight->Appear( m_pd3dDevice, TRUE ); 3 J) f0 _, o1 X( c/ R/ k7 _+ k/ D9 L- R
// D3DXVECTOR3 vecSun = D3DXVECTOR3( 0.0f, 0.5f,0.5f);9 j" R/ P& v+ E+ f. m& o0 B2 r
// D3DXVec3Normalize(&(vecSun),&(vecSun)); 7 e7 ]+ g0 x8 y4 e // pLight->SetDir( -vecSun.x, -vecSun.y, -vecSun.z ); ; o8 l3 L" ~+ u4 ]- r4 j- _2 a
1 N* }1 G7 Z7 P1 B% ~* c8 k4 q DWORD dwR, dwG, dwB; : P0 H" C. ]/ f dwR = (DWORD)( pLight->Ambient.r * 255 ); 3 P, U9 i& ~1 |& s dwG = (DWORD)( pLight->Ambient.g * 255 );; u) U e1 D5 V; z" D
dwB = (DWORD)( pLight->Ambient.b * 255 ); % s& M. ^* C; c: l( W dwAmbient = D3DCOLOR_ARGB( 255, dwR, dwG, dwB ); ) t; R) ?$ K: M' w7 O+ K. D }/ [" e! ?8 [# D4 k; D
}: z5 {8 v3 x8 g; P& m
W! M( O' C4 R3 \+ _ m_pd3dDevice->SetRenderState( D3DRS_LIGHTING, bLight );//m_bViewLight );% s9 a) M6 W: G7 l& M) v1 ?
m_pd3dDevice->SetRenderState( D3DRS_AMBIENT, dwAmbient );//D3DCOLOR_ARGB( 0,0,0,0) ); //m_dwAmbient );//D3DCOLOR_ARGB( 255,128,128,128) );//D3DCOLOR_ARGB( 255,50,50,70) );& t9 u+ F6 l$ q. b3 W) z9 N
::SetLight( bLight );9 |$ g; G" R6 i/ a
% K) K9 M% o2 o8 l
// ±ao? ?D?í???ó á¤à? + h! K5 b; ~! g- Z2 c7 z; [ m_pd3dDevice->SetMaterial( &m_baseMaterial );8 [( K9 |$ c8 o4 P, `; P _' l
) s4 V# z" b! c! i3 F# \
#endif // not WORLDSERVER 7 ]) ~* F) |& A} & f3 Q9 H Q$ ]9 M f1 E并更换 % ?% R! f6 U- j, OCode: & t( j' U; N/ x# R7 B% u$ g5 t__FLYFF_INITPAGE_EXT " A# a' h' I8 [! n定义 ; q" C6 S5 C5 F: C 7 ^& Q7 [+ n; Y2 E8 s' H" @( Z( a
/ c5 ]0 o E8 @/ R1 z9 K$ N+ I0 } 3 u9 s- y0 o/ O K+ S+ U现在终于删除我的狗屁加速...3 J, S4 g0 d' r) D' g
; o$ c) a1 n9 Z% d i s7 u8 j8 ]+ C! o! m6 k- w' t% I2 B