Показать сообщение отдельно
Старый 29.11.2007, 00:05   #15
BOPOH
AnyKey`щик
 
Регистрация: 17.01.2007
Сообщений: 6
Написано одно полезное сообщение
Re: Мало ресурсный огонь.

;a как вам мой вариант ???;BOPOH / red_kapcap icq 212602917;DEMO_Fire;Graphics3D 800,600,16,2Const SyncTime=30Global sync=CreateTimer(SyncTime)Global oldtime=0Global fps#=SyncTimeSeedRnd MilliSecs()AmbientLight 100,100,100Global light_amb=CreateLight():RotateEntity(light_amb,80,-20,0)plane=CreatePlane():EntityTexture plane,MakeTx_001()SetBuffer BackBuffer()Global GLTarget=CreatePivot()Global Camera=CreateCamera(GLTarget):CameraClsColor Camera,200,170,200MoveEntity Camera,0,2,-15:PointEntity camera,GLTarget;;=================iniGlobal GlobalFireTexture=FireTexture(1) ; 1 or 2For ix=0 To 50e=CreateNewFire(1,1,Rnd(1,2)):PositionEntity e,Rnd(-10,10),0,Rnd(-10,10)NexttExit=False;===================================================While Not tExitSoftFPS#()If KeyDown( 1 ) tExit=TrueTurnEntity GLTarget,0,0.2,0If fps>=SyncTime e=CreateNewFire(1,1,Rnd(1,2)):PositionEntity e,Rnd(-10,10),0,Rnd(-10,10)SetBuffer BackBuffer()UpdateWorld ()RenderWorldColor 255,10,10Text 0,0,"FPS="+RSet$(Str(FPS#),6) +" Triangles Rendered: "+RSet$(TrisRendered(),10)WaitTimer(Sync)Flip Wend ;-----------------------------------------\\\Function SoftFPS#()fps#=1000/(MilliSecs()-oldtime)oldtime=MilliSecs();Return fps#End Function ;-----------------------------------------///Function CreateNewFire(Size=1,wt=1,ht=2)ent0=CreatePivot()tx=GlobalFireTextureent=firemesh(wt,Ht,ent0)EntityTexture ent,txEntityBlend ent,3EntityFX ent,17;---------------animSetAnimKey ent,0,0,1SetAnimKey ent,1,0,1TurnEntity ent,0,90,0SetAnimKey ent,2,0,1SetAnimKey ent,3,0,1TurnEntity ent,0,90,0SetAnimKey ent,4,0,1SetAnimKey ent,5,0,1TurnEntity ent,0,90,0SetAnimKey ent,6,0,1SetAnimKey ent,7,0,1AddAnimSeq ent,8Animate ent;-----------------------ent1=firemesh(wt,Ht*0.6,ent0)EntityTexture ent1,txEntityBlend ent1,3EntityFX ent1,16RotateMesh ent1,0,45,0 SetAnimKey ent1,0,0,1SetAnimKey ent1,1,0,1TurnEntity ent1,0,-90,0SetAnimKey ent1,2,0,1SetAnimKey ent1,3,0,1TurnEntity ent1,0,-90,0SetAnimKey ent1,4,0,1SetAnimKey ent1,5,0,1TurnEntity ent1,0,-90,0SetAnimKey ent1,6,0,1SetAnimKey ent1,7,0,1AddAnimSeq ent1,8Animate ent1ScaleEntity ent0,0.01,0.01,0.01SetAnimKey ent0,0,0,0,1frames=160For ix=1 To frames Step 15k#=Rnd(-0.2,0.3)SetAnimKey ent0,ix,0,0,1ScaleEntity ent0,1+k*0.5,1+k#,1+k*0.5Nextframes=frames+10ScaleEntity ent0,0.01,0.01,0.01SetAnimKey ent0,frames,0,0,1AddAnimSeq ent0,frames+10Animate ent0Return ent0End Function Function FireTexture(Size=1)Local x#,y#,strn%,kadr%,col%Local w#,h#sz=16 Shl sizestrn=(sz*0.5)tx=CreateTexture(sz,sz,3)SetBuffer TextureBuffer(tx)LockBufferFor x=0 To sz-1For y=0 To sz-1WritePixelFast x,y,0;+$ff000000NextNextUnlockBuffer;--------------------generate pictureFor ix#=0 To strn-1 ;Step 2;5max#=strnkStep#=(0.0+ix)/max#kStepi#=1-kStep#k0#=((kStep*10) And 7)*0.11794k#=(ix And 3);----select colorClr=Rnd(10)Select True Case Clr9r=000:g=0:b=200*kStepi#Default r=155:g=100*kStep#:b=0End Select s#=0a#=0.590+Rnd(0.08)pos#=2Xsm#=0;-----loopWhile pos#3 kadr=0WendNextReturn TxEnd Function Function FireMesh(w#=1,h#=1,par)Mes=CreateMesh(par):CrSur=CreateSurface(Mes)AddVertex(CrSur,-w,0,0,1,0,0)AddVertex(CrSur,0,h,0,1,1,0)AddVertex(CrSur,w,0,0,0,1,0)AddVertex(CrSur,0,0,w#,0,1,0)AddVertex(CrSur,0,h,0,0,0,0)AddVertex(CrSur,0,0,-w#,1,0,0)AddTriangle(CrSur,0,1,2)AddTriangle(CrSur,3,4,5)Return mes End Function Function MakeTx_001(sz=32)tx=CreateTexture(sz,sz)SetBuffer TextureBuffer(tx) ClsColor 80,40,10:ClsFor i1=1 To 320b=Rnd(-20,20):Color 80+b,40+b,10x=Rnd(sz):y=Rnd(sz)For i=1 To 4Plot x+Rnd(-1,1),y+Rnd(-1,1)Next:NextReturn txEnd Function
(Offline)
 
Ответить с цитированием