MZ@ !L!This program cannot be run in DOS mode. $PEL{/I!  N @ @@WH   H.textT  `.rsrcH@@.reloc @B0Hxy|l0s }}'}( "D(  (}} } } }}}}(}(rp|{ (|{ (( }}|{ "DZ"|{ "DZs o s ((- ( &*{* *0mo ,d{i1Y{o o o ( o ( ( ( "?Z( l4{o ( *04{nn(jY<}}o ( o ( {o o ( #?X {9( "?ZlA 8 +y{(ZX{|{ "DZ (\ZvkX"|{ "DZ (\ZvkXs o,X (XDyX (XDc+}(! *0"{o" {o ,-*{-@o# o$ {o% {{Z{{Zo& 8((o' o( o) o {i( 2( +{i( #@[#?6 l[i8lZ {q  {(   (   ( ( l= (* 9 ( l#?Z(+ 63 | {, -%kk[  ( l[k"@[ ? ([([ |{ k[kXi |{ k[kXi |{ (\vk[(vk"@[XkY |{ (\vk[(vk"@[XkY{j(nZjXԏq{Xj(nZjXԏq{j(XnZjXԏq{Xj(XnZjXԏq"?Y(- "?Y(- (- "?Y(- (. "?Y(- (- (. (- (- (.  {"(- {/ "{0 (  |{1  |{2 k"L?Zi |{3 k"L?Zi |{4 k"L?Zi(5 {  {!qo6 { o7 { X {!q( o6 { X {o7 { X {!q( o6 { X {o7 { X {!qo6 { Xo7 |{8  | {, Z | {8 X{ { { s9 o: { X{ { s9 o: { X{ { s9 o: { X{ { s9 o: XX?o# o$ {o% {Z{Zo& }(; @o# o$ s o< o% o  (= o>  o {? " #<(@ (A  (= o> *0{iZ{i0{iZ{i>{i sB  {oC  +,sD ""?"s oE  oF &X {iZ2(G oH t}oI {i{oC  8ь'oF &Xь'oF &Xь'oF &ь'oF &Xь'oF &Xь'oF &Xь'oF &Xь'oF &ь'oF &Xь'oF &Xь'oF &ь'oF &X X {i Z? '(G oH t}oI * *^{r%p(J (K *0"B|{ Z|{ XisL  oM |  }{oN {oN {oN sB 8<{}! (oM k" A[ (oM k" A["DY"DY{|} {|} {doM k"B[}"{| |{8 oM }8 /+{| |{, oM }, +{| }, o {{(    { {oO { [" { {oO { [(  { l(P i  { l(P i  ? ? {oQ {8 Y=v {oQ {, Y=]  (R q oM {1 =4{1 ?'  (R {4 k{oO {S Z X (R {4 k{oO {S Z  X(R {4 k{oO {S Z X X(R {4 k{oO {S Z {  kY {  kY"?YZ"?YZZ"?YZX"?YZZXZZX (FoM k"B(T  %{U {4 k"HC[Z}U {| {U "?ZX}S {   (R q}{   (R q}| {{(A "? {V Z" {U Z"( {{!{{{ {S { s ( {{!{{{ {S e{ s ( {{!{{{ {S { s (W {{!{{{ {S e{ s (W {qoF &X?(G oH t}oI ,( **{*"}*{*"}*{*"}*{*n}XXZ}*{*0}"?{8 k["?{, k[sT }|{8 |{, Z(} |{8 |{, Z(} |{8 |{, Z(} |{8 |{, Z(}  8 8{ |{8 ZX|{V kZ{ |{8 ZX|{U XkZ{ |{8 ZX|{U kZ{ |{8 ZX|{V XkZX |{, ?WX |{8 ?;*{ *2((Y *"(Y *6{Z (*"(Y *zo\ (Y o\ ("o] *N{Z o\ (#*{#*R}#{Z ($*{$*R}${Z (%*(^ *0s& o)o+*{%*"}%*{&*"}&*0vk{ "@Zvk"`G[(.ZX{ "@Zvk"`G[(/ZX"zD[ "@(*[(3Z (((/Z (.Z(/Zs9 * ba"?Z s=Z XZ RX _k"N[Y*(_ *(` *0* "I@Z "?(.Y"?Z "?YZZX*(-"@[Y(-"@[XX(-"@[X*0$ i kY (1 X(1  (0*0F " "?  "? "?+ Z(2ZX X ZX2*[Z _`5$gEc% xK>^u# 9!X8W}DJG0MSoz<i\)7.(f6A?PILYtVdm@4|{&v~RU;/:*w,Fe+ 'blnOqpha" Q3k1jTsy2-]rCHNB=0   : :   ::::::    :     :     :     :    ' :%А(b :%Б(b :%В(b :%Г(b :%Д(b :%Е(b :%Ж(b :%З(b :%И(b  :%Й(b  :%К(b  :%Л(b  :%М(b  :%Н(b :%О(b :%П(b :%Р(b :%С(b :%Т(b :%У(b :%Ф(b :%Х(b :%Ц(b :%Ч(b :%Ш(b :%Щ(b :%Ъ(b :%Ы(b :%Ь(b :%Э(b :%Ю(b :%Я(b (@:%а(b :%б(b ::%в(b ::::%г(b :%д(b  : :%е(b  :%ж(b  : :::%з(b :::::::::%и(b :  :%й(b :!!:"":##:%к(b :%л(b  :%м(b !:%н(b ":$$#:%%$:&&%:%о(b &:''':%п(b (:(():))*:**+:++,:,,-:--.:../://0:%(b 1:002:113:224:%(b 5:%(b 6:337:%(b 8:%(b 9:44::55;:66<:%(b =:77>:%(b ?:%(b ) :%(b * :+ +~+~* _X  2*B"0iY*i*:kZkZX*VkZkZXkZX*vkZkZXkZXkZX*0~ ">XXZX(5X(5X(5"*> XXk Z k Y k Y k Y  Y Y Y7H7+t7+Z+F4+,4+kY XkY XkY XkY"@ ZXkY"@ ZXkY"@ ZX"?Y"@@ ZX"?Y"@@ ZX"?Y"@@ ZX _  _! _"~+ ~+!~+"XX ]#~+ X~+!X~+"XXX ]$~+ X~+!X~+"XXX ]%~+ X~+!X~+"XXX ]&"?ZYZYZY''"4" +!''Z'''Z~'#(7Z "?ZYZYZY(("4" +!((Z(((Z~'$(7Z "?ZYZYZY))"4" +!))Z)))Z~'%(7Z "?ZYZYZY**"4" +!**Z***Z~'&(7Z "BXX XZ*0#?#@(c #?YZk X ZX(5X(5#@#@(c Y#@[kXkZkY kY  Y  Y   6 +   kYX kYX "?Y"@ZX "?Y"@ZX _ _~+~+X ]~+ X~+XX ]~+X~+XX ]"?  ZY  ZY"4" +ZZ~'  (6Z "?ZYZY"4" +ZZ~'(6Z "?ZYZY"4" +ZZ~'(6Z "BXXZ*0( },}-}3'}1{1{1{1{1{1{1}0 +{0sD X 2{0""?(d o: {0~e o7 {0""(d o: {0~e o7 {0"?"(d o: {0~e o7 {0"?"?(d o: {0~e o7 s }/{/o< {/ of {/og {/oh |. |."""(i }j |."@"@"@(i }? *"}/*{/* *(=*0o 9{3ok o' {3o ol {--6{3ok om .on . , },+},+},{,,P{3o" oo }2(p |2(q (r (s (t ,{3ou ( *0n{,9b{3o" {3o o\ ~v (w -.o\ ~v (w -{/ox o\ ~v (w ,*sy o$ o' {3o" oo {8 k{, k(d "@(z {3ok o' ol {{ k{| k(d {/ox oQ {8 {/ox oQ {, [{/ox oQ {,   "?k[ o}  o~   (W ( & ( ( &( ( &"(@ +{0oE X2{/o% 8-o'   +o"@k[kZ( {3ok {/ i{0 i(p o { (W ( " (@ (  {0k Z"?(d o: {0k Z"(d o: {0Xk Z"(d o: {0Xk Z"?(d o: "? kZ(@ "? kZ(@ {0( ( o6 {0( (W o6 {0(W (W o6 {0(W ( o6 {0{1o& X?L*{.*{-*"}-*r( }4}5}7*0g{6-}6{6Y{754o |4{5{6Yvk{7vk[( o *{5o ( &*05 sD sD sD sD }8(^ *{@{9o% {@{8{Ao& *0*{ { Y {S {S Y { { Y l l( k}S %{S ".eBZ}S {S "4%{S "CX}S {S "C7%{S "CY}S Z ZXl(c kll( k} %{ ".eBZ} %{ "BY} { "4%{ "CX} { "C7%{ "CY} *0s }9|<  '%(b }A( }?{?o" }@s }9{9o {9o< {9 of {9o" o o "B}=|> ( *0{@o# o$ sy {:{;(Io ""?"s """s o &o &sG {8{:{=(@ ( "?"?"s {>""?s9 s {8{:{=e(@ ( "?""s {>"?"?s9 s {8{;{=e(@ ( ""?"?s {>"?"s9 s {8{;{=(@ ( """?s {>""s9 s  (H {8{:{=(@ ( "?"?"s {>""?s9 s {8{:{=e(@ ( "?""s {>"?"?s9 s {8{;{=e(@ ( ""?"?s {>"?"s9 s {8{;{=(@ ( """?s {>""s9 s  (H(; 3{@o ~e o> *ro , {?ou ( *{<* *{9*{:*:}:(T*{;*:};(T*0sy {:{;(Io ""?"s """s o &o &|<{:{=(@ ( }j |<{;{=e(@ ( }? |<{:{=(@ ( (A |<{:{=e(@ ( (A |<{;{=e(@ ( (A |<{;{=(@ ( (A |<{:{=(@ ( (A |<{:{=e(@ ( (A |<{;{=e(@ ( (A |<{;{=(@ ( (A *{=*"}=*{>*"}>*0( }C{Co" }D}H{Ho vl}I{Ho vl}J#}K#Fߑ?}^E}R'}_#llF?}O"A}T#N@}LE}S 2([}P{P}Q#}N"}\#}M*([}P{P}Q*0CX{jY < 88{x n{hjZnXo {x Xn{hjZnXjXo {x XXn{hjZnXo {x XXn{hjZnXo {x Xn{hjZnXjXo {x XXn{hjZnXjXo  X Xn{lj?Xn{kj?*no , {to ( *{w* *{v*{u{vo% {uo# o$ {u{xo *r  s (*>(*0 !sB }"?" #<" #<"G=( }"?"p=?"p=?"Q?( }"@@}"HB}" A}"@}"@}"L?}( }|o" }{{|ryp~z:( """sT "?"?sT o ~zXz {{o 38{{o ~rp~rps  o +6{{o ~rp~rps  o {{o 3<{{o ~rp~rps  o +:{{o ~rp~rps  o {|o o }}{}o {}o {}o {} o {{o }~{}{~o {|o {|o }, {|o *{}*2(o *0t"o ,&{|o o( o) o ( -*{o +o t , ~o o -uR,o {}o {|o {|{o {o o o {S o {S D{o { "@o {S Zo {S Yo { s o o} o (W ( %{S "Z}S {{o "@F(@ ( o {o~ o +c{o o o} o (W   ( "PCH(@ {{o ( o {o~ o {{{~~ o {|o {o  + o t,  o  o - uR  , o {{~ o {|o {}o *<(d (3:{oF &*0t#.3D{{o {{o ( {{o ( rpo o .3@3 rp"o rp"?o r p(o {S o *( ( ( k r'po r1p{o rGp{o r]p{o rqp|( o rp|( o rp{o rp{o rp{o rp{|o (-"+"?o *fo' {S o' {S *0Czrprpr prFprGpr,p*BSJB v2.0.50727l#~|D#Strings<&#USxc#GUIDc#BlobW= 3T # %7: I/ d]|n ]/nnnnnnn5n]nwnann,n n. n/ nj n  nT n   8 Q j  E% e% ] ] ]mnnn3nn  ] ] <] W] n] ]  n " ] % .% =].nqnn n%n 9]n ]n2nnnnnnnDnQnn  7] ] ]"6O6 ]6 #d6 #k6%&y'46,;64E68G69H6BY6`l6hv6z}  G Q )MI}  ^a e;tQ}T}W}Z}fo^ gmx|aI?III1)7)=)E.G.t)a^^6)<CHtLIT^ ^A (E ,I 0N 4T 8` 8j 8p 8y 8 8 8 8 8 ; ; I   8 8 ?   I  8 r t)v {  I           I  )5t: uB }K  T [ f z ~     I I I# I4 IC I      `t*?Ti~&;Pez "7Lav 3H]rdDP {!- !3 !7 "; D##7t)*7I+<@L+A@d+FDd1[Ll1lPu1U}1Y1U1Y131;1i1&nS3Ax[37h3q3<  3333@33@3   " ($37&4k &"4L(*4P(34L);4P)D4*4,5-5.5"/N525354=L255FS65FF];6UF]C9kF]L=FVBJ]E8LcGNanKNntLN3LN-L$N7MN#7MvRAxM~R{@MRMR~NR*Q S7SaSeSSnTTVU#7ZX7ZXAxZX3ZX-ZY}[ Y[Y\#Y\4Y7][L][P][^[^$[_7\2cX\?h]Lm^Yn_bo _jo_to_~p(_qV_r__sp_t_udwtfzf}i 7~~j% #~jW~nl7l#7imAxqm3tmnt|manm-md Lmk Pm" c(nhq7qAxq3q-q#7qr rt tAxt7|w wm  yy (yL2   i {  ^{ R^W{ RW\Wbhq||168@  38; &enenxenx? !)Y17Q7 AIAIIA1Y1@9)1:1AxiGARA^Qu9y 7A ;91n'1?2iAxiO8Qu>Y] ydCyRKyIypIr t v x TqqzY y\qb1hQnwiAdi7q7q*BJ7IP_YuIz1>IiApIa\a]IaIAV]?`G!7QQ7P#>y_(Q;fQL;QXAmii9y1iY  O9y@]EQQY7y^C p juAAy!)71A"1,@:5QxHQTYYNqV3>1Y}">&>*>.>1DP>IV_9p9QP91-1Yq:i!=C)M0VJIPP9VflYrQ)xAI9_1pY1991xi".@C7KLXPep}971pfYdYc  &)c .;?. 9.9.+9.39.So.k.K9.CY.[.c Qdiot{Au*/;bnx6,    !$#0;BJUU_&yUU"& D* I0 M; MH MS M_ RUy fyU DU         ! ()+*=<>BCDM!N#P%Q%R'S'U)V)W+X+^-_/`/a1b3c5d7k9o;p=q?r?tAuAvCyEzGIK535EGIK(66(686H6X6h6x66666666677(787H7X7h7x77777777788(888H8X8h8x88888888899(989H9X9h9x99T o "TIrrlicht.Extensions.dllGrassPatchSceneNodeIrrlichtNETCP.ExtensionsGrassParticleTTFaceTTFontWindGeneratorPerlinSimplexNoiseIrrlichtNETCP.Extensions.OtherLensflareSceneNodeRotationAnimatorIrrQuadBeamNodeATMOSphereATMOSkySceneNodeP3DSimplexNoiseTerrainWaterSceneNodeIrrlicht.NETIrrlichtNETCP.InheritableISceneNodemscorlibSystemValueTypeIrrlichtNETCPGUIFontObjectIAnimatorGRASS_PATCH_SIZESceneNodeSceneManagerVector3DTexture.ctorMaterial_materialGetMaterialget_MaterialCountOnRegisterSceneNodeOnAnimateRenderReallocateBuffersLoadSaveCreate_drawdistanceget_DrawDistanceset_DrawDistance_maxdensityget_MaxDensityset_MaxDensity_fpslockget_MaxFPSset_MaxFPS_windresget_WindResset_WindResDimension2D_imagecountDimension2Df_imagesizeget_ImageCountset_ImageCountBox3D_bboxget_BoundingBoxv1v2v3v4Vertex3DVerticesIndicesVector2DWindGridParticlesTerrainTerrainHeightMapTerrainColourMapTerrainGrassMaplastwindtimeredrawnextlooplastdrawcountWindGenfilenamegridpos_mgrMaterialCountDrawDistanceMaxDensityMaxFPSWindResImageCountBoundingBoxColorcolorstartColorposspritepointsflexTTFace_LoadTTFace_CreateVideoDriverAttachget_Antialiasset_Antialiasget_Transparentset_TransparentTTFont_CreateTTFont_AttachTTFont_SetAntialiasTTFont_SetTransparencyantialiastransparentAntialiasTransparentCreateWindGenerator_strengthget_Strengthset_Strength_regularityget_Regularityset_RegularityWindrndGeneratorfcosfsincosInterpolaterwindSmoothernoiseInterpolatenoiseStrengthRegularitygrad3grad4simplexpperm.cctorfastfloordotset_Materialget_Materialget_IgnoreGeometryset_IgnoreGeometrydraw_flareign_geombboxmaterialverticesindicesscreensizesmgrIgnoreGeometrym_rotationStartm_rotationEndm_startTimem_durationMsAnimateNodevertsvStartvEndBoxflScalebeamColordriverDrawQuadgetTargetAngleget_StartPointset_StartPointget_EndPointset_EndPointRecalculateBoundingBoxget_BeamScaleset_BeamScaleget_BeamColorset_BeamColorStartPointEndPointBeamScaleBeamColorTimerSetStartTimeDateToJulianJulianToDateround360get_Sunget_Speedset_Speedset_SkyTextureset_StarsTextureset_SunTextureset_LensTextureCreateLensflareprep_interpolationsaulegetInterpolated3dfUpdateColorfAmbientLightCreateSkyPaletteget_LensBillboardSceneNodesunskylenstimercurrentTimestartTimedTimedayspeedtime_int_stepcounter_timeJ1minuteJJ1sun_anglevietasun_interpolation_speedsun_pos_fromsun_pos_tosun_angle_fromsun_angle_tostarssuntexskyiduvXdangusradNdateSunSpeedSkyTextureStarsTextureSunTextureLensTextureLensget_UVset_UVboxvertfaceUV_numVertsPerRow_numVertsPerCol_cellSpacing_numCellsPerRow_numCellsPerCol_width_depthNumVertices_numIndices_numTriangles_heightScale_indices_driverget_VerticesMeshBuffer_buffer_heights_current_scene_waternode_rtCameraSceneNode_fixedcamget_WaterNodeClampShaderSystem.CollectionsArrayListclampListTerrainSceneNodeApplyClampingOnTerrainAddedColorMultiColorWaveHeightWaveLengthWaveSpeedWaveDisplacementWaveRepetitionRefractionFactorMaterialRendererServicesOnShaderSetIsUnderwaterWATER_VERTEX_GLSLWATER_FRAGMENT_GLSLWATER_HLSLCLAMP_VERTEX_GLSLCLAMP_FRAGMENT_GLSLCLAMP_HLSLWaterNodeSystem.ReflectionAssemblyKeyFileAttributeAssemblyDelaySignAttributeAssemblyVersionAttributeAssemblyCultureAttributeAssemblyTrademarkAttributeAssemblyCopyrightAttributeAssemblyProductAttributeAssemblyCompanyAttributeAssemblyConfigurationAttributeAssemblyDescriptionAttributeAssemblyTitleAttributeSystem.Runtime.CompilerServicesCompilationRelaxationsAttributeRuntimeCompatibilityAttributeIrrlicht.ExtensionsparentmgridcreateIfEmptygridPosfilepathheightMapcolourMapgrassMapterrainwindUInt16XSingleZStringFormatset_Positioniget_Visibleget_ActiveCameraget_Positionget_Centerop_AdditionDistanceFromSQNewMathSqrRegisterNodeForRenderingtimeMsDistanceFromget_VideoDriverMatrix4get_AbsoluteTransformationTransformationStateSetTransformSetMaterialDrawIndexedTriangleListget_AbsolutePositionViewFrustumget_ViewFrustumIsPointInsideHeightop_MultiplyYARGBset_ColorWidthset_TCoordsDebugSceneTypeget_DebugDataVisibleset_LightingFromDraw3DBoxMaxEdgeAddInternalPointICollectionAddRangeset_NormalAddTypeRuntimeTypeHandleGetTypeFromHandleArrayToArrayClearConcatConsoleWriteLinesaveRandomNextRetrieveget_ScaleMathFloorget_OriginalSizeAddressop_SubtractionvalueSystem.Runtime.InteropServicesStructLayoutAttributeLayoutKindrawnameNativeElement_rawDllImportAttributeIrrlichtWget_RawInitializesizefontaliastransstrengthregularitypositionxfFCosFSinabInt32{B71FDA95-08CF-44AC-8E0A-59DC3D12B874}CompilerGeneratedAttribute__StaticArrayInitTypeSize=16$$method0x6000034-1RuntimeHelpersRuntimeFieldHandleInitializeArray$$method0x6000034-2$$method0x6000034-3$$method0x6000034-4$$method0x6000034-5$$method0x6000034-6$$method0x6000034-7$$method0x6000034-8$$method0x6000034-9$$method0x6000034-10$$method0x6000034-11$$method0x6000034-12$$method0x6000034-13$$method0x6000034-14$$method0x6000034-15$$method0x6000034-16$$method0x6000034-17$$method0x6000034-18$$method0x6000034-19$$method0x6000034-20$$method0x6000034-21$$method0x6000034-22$$method0x6000034-23$$method0x6000034-24$$method0x6000034-25$$method0x6000034-26$$method0x6000034-27$$method0x6000034-28$$method0x6000034-29$$method0x6000034-30$$method0x6000034-31$$method0x6000034-32$$method0x6000034-33$$method0x6000034-34$$method0x6000034-35$$method0x6000034-36$$method0x6000034-37$$method0x6000034-38$$method0x6000034-39$$method0x6000034-40$$method0x6000034-41$$method0x6000034-42$$method0x6000034-43$$method0x6000034-44$$method0x6000034-45$$method0x6000034-46$$method0x6000034-47$$method0x6000034-48$$method0x6000034-49$$method0x6000034-50$$method0x6000034-51$$method0x6000034-52$$method0x6000034-53$$method0x6000034-54$$method0x6000034-55$$method0x6000034-56__StaticArrayInitTypeSize=1024$$method0x6000034-57gyzwxinyinzinSqrtWhiteMaterialTypeset_MaterialTypeset_ZBufferset_ZWriteEnableMinEdgeSceneCollisionManagerget_CollisionManagerPosition2DGetScreenCoordinatesFrom3DPositionGetSceneNodeFromScreenCoordinatesget_Parentget_ScreenSizeToUnmanagedFromUnmanagedRectSceneNodeRenderPassIntPtrZeroop_Equalityget_Texture1op_Divisionget_Targetget_UpVectorNormalizeCrossProductGetInterpolatedLine3DGetRayFromScreenCoordinatesEndp_RotationStartp_rotationEndp_durationMsp_nodep_currentTimeMsget_Rotationset_RotationNullquadvrAtan2szBeam__StaticArrayInitTypeSize=24$$method0x600004a-1set_WireframeGetTextureset_Texture1Setset_RotationDegreesTransformVect_timerget_RealTimeDoublemdhminTruncateangleSetMaterialTexturetexJdatetimeMpllwSinCosTanAsinfromtorealtimeset_VisibleRoundGetPixelset_AmbientLightAddSkyBoxSceneNodeget_RootSceneNodeset_MaterialTypeParamAddBillboardSceneNodefacesCullingTypeset_AutomaticCullingset_TranslationGetVertexvertsPerRowvertsPerColcellSpacingheightScaleVertexTypeBlackSetVertexSetIndexDrawMeshBuffertileSizetileCountprecisionAnimatedMeshAddHillPlaneMeshDriverTypeget_DriverTypeGPUProgrammingServicesget_GPUProgrammingServicesOnShaderConstantSetDelegateVertexShaderTypePixelShaderTypeAddHighLevelShaderMaterialMeshGetMeshMeshSceneNodeAddMeshSceneNodeSetMaterialTypeMaterialFlagSetMaterialFlagCreateRenderTargetTextureAddCameraSceneNodeset_ActiveCameraget_TransformedBoundingBoxIntersectsWithBoxIEnumeratorGetEnumeratorget_CurrentMoveNextIDisposableDisposeget_FarValueset_FarValueset_Targetset_UpVectorTransparentGraySetRenderTargetDrawAllGrayservicesuserDataGetTransformToShaderSetVertexShaderConstantSetPixelShaderConstantDateTimeget_NowTimeSpanget_TimeOfDayget_TotalMillisecondsnode#{0}/{1}.{2}.grassS could not be saved : not yet implementedwatermesh mainvertexMainpixelMainmWorldViewProjDiffuseMapDetailMapWaterPositionY TimeWaveHeightWaveLengthWaveSpeedAddedColorMultiColor!WaveDisplacementWaveRepetition!RefractionFactorUnderWateruniform float Time; uniform float WaveHeight, WaveLength, WaveSpeed; varying vec4 waterpos; varying float addition; void main() { waterpos = ftransform(); addition = (sin((gl_Vertex.x/WaveLength) + (Time * WaveSpeed / 10000.0))) + (cos((gl_Vertex.z/WaveLength) + (Time * WaveSpeed / 10000.0))); waterpos.y += addition * WaveHeight; gl_Position = waterpos; } uniform sampler2D ReflectionTexture; uniform vec4 AddedColor, MultiColor; uniform float UnderWater, WaveDisplacement, WaveRepetition, RefractionFactor; varying vec4 waterpos; varying float addition; void main() { vec4 projCoord = waterpos / waterpos.w; projCoord += vec4(1.0); projCoord *= 0.5; projCoord.x += sin(addition * WaveRepetition) * (WaveDisplacement / 1000.0); projCoord.y += cos(addition * WaveRepetition) * (WaveDisplacement / 1000.0); projCoord = clamp(projCoord, 0.001, 0.999); if(UnderWater == 0.0) projCoord.y = 1.0 - projCoord.y; vec4 refTex = texture2D(ReflectionTexture, vec2(projCoord)); refTex = (refTex + AddedColor) * MultiColor; gl_FragColor = refTex; if(UnderWater == 1.0) { gl_FragColor *= (MultiColor / 1.1); gl_FragColor.a = 0.7; } else gl_FragColor.a = RefractionFactor;} uniform float Time; float4x4 mWorldViewProj; float WaveHeight; float WaveLength; float WaveSpeed; float4 AddedColor; float4 MultiColor; float UnderWater; float WaveDisplacement; float WaveRepetition; float RefractionFactor; struct VS_OUTPUT { float4 Position : POSITION; float4 TexCoord : TEXCOORD0; float Addition : TEXCOORD1; }; VS_OUTPUT vertexMain( float4 vPosition : POSITION, float2 texCoord : TEXCOORD0 ) { VS_OUTPUT Output; Output.Position = mul( vPosition, mWorldViewProj ); Output.Addition = ( sin( ( vPosition.x / WaveLength ) + ( Time * WaveSpeed / 10000.0 ) ) ) + ( cos( ( vPosition.z / WaveLength ) + ( Time * WaveSpeed / 10000.0 ) ) ); Output.TexCoord = Output.Position; Output.TexCoord.y += Output.Addition * WaveHeight; return Output; } struct PS_OUTPUT { float4 RGBColor : COLOR0; }; texture ReflectionTexture; sampler MySampler = sampler_state { Texture = ReflectionTexture; AddressU = CLAMP; AddressV = CLAMP; }; PS_OUTPUT pixelMain( VS_OUTPUT In ) { PS_OUTPUT Output; float4 projCoord = In.TexCoord / In.TexCoord.w; projCoord += float4( 1.0, 1.0, 1.0, 1.0 ); projCoord *= 0.5; projCoord.x += sin( In.Addition * WaveRepetition ) * ( WaveDisplacement / 1000.0 ); projCoord.y += cos( In.Addition * WaveRepetition ) * ( WaveDisplacement / 1000.0 ); projCoord = clamp( projCoord, 0.001, 0.999 ); if( UnderWater == 1.0 ) projCoord.y = 1.0 - projCoord.y; float4 refTex = tex2D( MySampler, projCoord ); refTex = (refTex + AddedColor) * MultiColor; Output.RGBColor = refTex; if( UnderWater == 1.0 ) Output.RGBColor *= (MultiColor / 1.1); Output.RGBColor.a = RefractionFactor; return Output; }varying float cutoff; void main() { cutoff = gl_Vertex.y; gl_Position = ftransform(); gl_TexCoord[0] = gl_MultiTexCoord0; } uniform sampler2D DiffuseMap, DetailMap; uniform float WaterPositionY; varying float cutoff; void main() { vec4 color = texture2D(DiffuseMap, gl_TexCoord[0].st) * 2.0 * texture2D(DetailMap, vec2(gl_TexCoord[0].s * 20.0, gl_TexCoord[0].t * 20.0)); if(cutoff <= (WaterPositionY - 10.0)) color.a = 0.0; else color.a = 1.0; gl_FragColor = color; } uniform float Time; float4x4 mWorldViewProj; float WaterPositionY; struct VS_OUTPUT { float4 Position : POSITION; float4 Diffuse : COLOR0; float2 TexCoord : TEXCOORD0; float2 TexCoord1 : TEXCOORD1; }; VS_OUTPUT vertexMain( in float4 vPosition : POSITION, in float3 vNormal : NORMAL, float2 texCoord : TEXCOORD0, float2 texCoord1 : TEXCOORD1) { VS_OUTPUT Output; Output.Position = mul(vPosition, mWorldViewProj); Output.Diffuse = vPosition; Output.TexCoord = texCoord; Output.TexCoord1 = texCoord1; return Output; } struct PS_OUTPUT { float4 RGBColor : COLOR0; }; sampler2D DiffuseMap; sampler2D DetailMap; PS_OUTPUT pixelMain( float2 TexCoord : TEXCOORD0, float2 TexCoord1 : TEXCOORD1, float4 Position : POSITION, float4 Diffuse : COLOR0 ) { PS_OUTPUT Output; float4 color = tex2D(DiffuseMap, TexCoord) * 2.0f * tex2D(DetailMap, float2(TexCoord1.x * 20.0f, TexCoord1.y * 20.0f)); if(Diffuse.y <= WaterPositionY) color.a = 0.0; else color.a = 1.0; Output.RGBColor = color; return Output; }D Y=tz\V4 !%%%) )             -1 - -5 5 9= %!( ( ((-(5A!   E    (  =!                ! ) )() !!   E ( !!!  ! ! A A(!(A I          % %    !!! M  Q4 I  %(( (%( %   U( Y 1- 1-- 1--] a e      Y!!!  !  !5!  5! E   9  ! == ===    = A 5A!! 1EY!5!  !  =====!A)5   9 ]9  AA A 6AAA] !1! A !       D Ht8-+        =  !   !Y       % !! == Y-EY!-=== !!!!!!!!!! !! !9 ! L % !! !!A= !!( !!   % !   ! AM  M A!Y!! % Q1    EY 9    !!  9    9  U !1- 11 % )  15- 9 =9 A %- Y Y!Y 5 E  %A aY!!a5EI!!EI      M Q  MQIrrlicht .NET CP ExtIrrlicht .NET CP3.New features added on the Irrlicht .NET CP lib(#Irrlicht .NET CP Extensions libraryTWrapNonExceptionThrows> 0_CorDllMainmscoree.dll% @0HX4VS_VERSION_INFOo o ?DVarFileInfo$TranslationPStringFileInfo,000004b0x/CommentsNew features added on the Irrlicht .NET CP libDCompanyNameIrrlicht .NET CPp$FileDescriptionIrrlicht .NET CP Extensions library@FileVersion0.8.3253.28437PInternalNameIrrlicht.Extensions.dll(LegalCopyright XOriginalFilenameIrrlicht.Extensions.dllLProductNameIrrlicht .NET CP ExtDProductVersion0.8.3253.28437HAssembly Version0.8.3253.28437 P6