[P]articleSky 1.5 Modul Release
Übersicht

![]() |
Suco-XBetreff: [P]articleSky 1.5 Modul Release |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi.
Ich habe auch schon lange ein PartikelModul in Planung und wollte es eigentlich schon längst Released haben. Naja, Zeitpunkt ist zwar nicht der beste, aber Konkurenz bringt Ideen und spornt etwas an ![]() Habe es jetzt noch nicht in ein modul gepackt da ich es noch nicht als richtig fertig sehe. Desweiteren habe ich mich zuvor noch nie mit einer Partikel Engine beschäftigt und bin mir deshalb auch nicht sicher ob ich da was hätte besser machen können. Beschreibungen der Methoden werden noch folgen. Eine Liste der Methoden liegt jedenfalls bei und die Beispiele sind auch beschrieben. http://www.blitz-pasting.net/i...amp;id=149 und noch ein Screen: ![]() Die Lib und 3 erklärte Beispiele sind dabei. Zu mehr bin ich noch nicht gekommen. Falls noch jemand Ideen hat, raus damit. Dokumentation im Modul vorhanden. Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
- Zuletzt bearbeitet von Suco-X am Sa, Aug 13, 2005 22:37, insgesamt 13-mal bearbeitet
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sieht nett aus .
Ich finde aber das es schon zu viele Funktionen sind . Init z.B. könnte von selbst gehen wenn man ein Partikel hinzu fügt 8) Parameter würde ich statt den vielen Funk. direkt in einer Struktur übergeben . Und dann nur eine Update Funktion . |
||
![]() |
Suco-XBetreff: ....... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi.
Ja, mit dem Init kann ich weglassen. Aber Parameter direkt an die Struktur übergeben halte ich für zu Benutzerfeindlich. Ich habe ja schon auf Methoden verzichtet die Werte zurückgeben. Aber die Set Methoden halte ich für nötig. Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
![]() |
Suco-XBetreff: ....... |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, Version 1.1 ist fertig.
http://www.blitz-pasting.net/i...amp;id=149 Changes : - Einige Kleinigkeiten an der Lib wurden geändert(Init Funktion fällt weg) und paar fiese Bugs wurden entfernt. - Beispiele wurden verbessert und es sind neue dazu gekommen. ToDo : - Speicherverteilung bei Parents und Groups muss überdacht werden - Mehr Einstellungsmöglichkeiten - Api Dokumentation Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
- Zuletzt bearbeitet von Suco-X am Sa, Aug 13, 2005 22:37, insgesamt einmal bearbeitet
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab so n bissel rumgespielt mit der Lib, rausgekommen ist dabei das hier:
Code: [AUSKLAPPEN] Strict 'ParticleSky Lib wird Importiert Import "../ParticleSky.bmx" Import "../miscfunctions.bmx" Graphics 800,600,0,-1 Local particle1_img = TEmitter.LoadParticleImage("../media/particle1.png",False) Local particle2_img = TEmitter.LoadParticleImage("../media/schild.png",True) TEmitter.AutoEmitterImage(particle2_img) ' Das Schutzschild Local Schild:TEmitter Schild=TEmitter.GetInstance(1) Schild.SetAlphaGradient(0.2,0.0) Schild.SetScale(1,1) Schild.SetLifetime(400) Schild.SetBlend(LIGHTBLEND) 'Schild.SetRandomGravitation(0.0,0.00,0.04,0.00) Schild.SetColorGradient(100,255,100, 100,100,255) 'Schild.SetPosition(400,400) TEmitter.AutoEmitterImage(particle1_img) ' Soul war früher so ne Seele halt :D, kein Bock umzuschreiben ' Stellt jetzt einen LaserSchuss dar (oder so) :) Local Soul:TEmitter = TEmitter.GetInstance(5) Soul.SetAlphaGradient(1.0,0.0) Soul.SetScale(0.3, 0.1) Soul.SetLifetime(1000) Soul.SetBlend(LIGHTBLEND) Soul.SetRandomGravitation(0.05,0.00,0.05,0.00) Soul.SetTimeOut(100) Soul.SetColorGradient(100,100,255, 100,100,100) Soul.SetPosition(60,275) Soul.SetEndingEmitter(Schild) Soul.SetOrigin(60.0,0) ' Der untere Strahl Local Soul2:TEmitter=Soul.Copy() Soul2.SetPosition(60,325) Soul2.SetOrigin(60,0) Const UpdateHz = 85 Global GameSpeed:Float ' Die Schiffe Local schiff1:TImage=LoadImage("../media/raumschiff1.png") Local schiff2:TImage=LoadImage("../media/raumschiff1.png") Local timer:Int=MilliSecs() Local schutzschild:Int=200 SetClsColor 128,128,128 Local particle3_img = TEmitter.LoadParticleImage("../media/kreis1.png") 'Explosionswolke 1 TEmitter.AutoEmitterImage(particle2_img) Local Explosion1:TEmitter = TEmitter.GetInstance(50) Explosion1.SetAlphaGradient(1.0,0.0) Explosion1.SetBlend(LIGHTBLEND) Explosion1.SetRandomSpeed(-2.0, -2.0, 2.0, 2.0) Explosion1.SetScaleGradient(0.2, 0.2, 0.8, 0.8) Explosion1.SetRandomLifetime(500,1000) Explosion1.SetColorGradient(255,255,0, 255,0,0) Explosion1.SetPosition(300,290) 'Explosionswolke 2 Local Explosion2:TEmitter = TEmitter.GetInstance(50) Explosion2.SetAlphaGradient(1.0,0.0) Explosion2.SetRandomSpeed(-1.0, -1.0, 1.0, 1.0) Explosion2.SetScaleGradient(0.2, 0.2, 0.5, 0.5) Explosion2.SetRandomLifetime(500,1500) Explosion2.SetColorGradient(255,255,255,128,128,128) Explosion2.AddToGroup(Explosion1) Explosion2.SetBlend(LIGHTBLEND) bglSetSwapInterval(0) Repeat Cls GameSpeed = GetGameSpeed(UpdateHz) SetRotation 90 DrawImage schiff1,100,275 If schutzschild>0 SetRotation 270 DrawImage schiff2,300,330 SetRotation 0 SetColor 200,200,200 DrawRect 300,120,200,10 SetColor 255,0,0 DrawRect 300,120,schutzschild,10 SetColor 255,255,255 SetColor 0,0,0 DrawText Schutzschild+"/"+200,300,100 EndIf If MilliSecs()-timer>200 And schutzschild>0 schutzschild:-5 timer=MilliSecs() If schutzschild<=0 explosion1.play() EndIf EndIf TEmitter.Idle(GameSpeed) If schutzschild>0 Soul.Play() Soul2.Play() EndIf 'Schild.Play() ResetStates() DrawText "Press Escape",10,10 DrawText "Partikel Anzahl: "+TEmitter.CountParticles(),10,40 DrawText "FPS : "+GetFPS(),10,60 Flip FlushMem() Until KeyHit(KEY_ESCAPE) Allerdings bedarf es einer Modifikation an der Lib: TParticle.Remove: Code: [AUSKLAPPEN] Method Remove() If Self.EndingEmitter<>Null Self.EndingEmitter.SetPosition(.. Self.x+EndingEmitter.X_Origin,.. Self.y+EndingEmitter.Y_Origin) Self.EndingEmitter.Play() EndIf Self.ListLink.Remove() End Method etwas weiter oben 2 neue Felder erzeugen: Code: [AUSKLAPPEN] Field X_Origin:Float, Y_Origin:Float Das selbe nochmal für TEmitter: Code: [AUSKLAPPEN] Field X_Origin:Float, Y_Origin:Float Und den Setter: Code: [AUSKLAPPEN] Method SetOrigin(_X:Float, _Y:Float) Self.X_Origin=_X Self.Y_Origin=_Y End Method Das self ist nur da wegen Sucos Schreibweise ![]() ![]() ![]() Ganz nett der Code, fehlen aber noch einige Einstellungsmöglichkeiten, vom Speed her kann ich es nicht beurteilen. Das ist die erste Partikellibrary die ich ausprobiert hab. |
||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
- Zuletzt bearbeitet von regaa am Fr, Mai 27, 2005 17:19, insgesamt 2-mal bearbeitet
![]() |
Suco-XBetreff: ....... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
Schaut schick aus. Mal schauen ob ich heute dazu komme die Doku zu machen und das Modul zu veröffentlichen. Jedenfalls danke fürs testen. Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
![]() |
Suco-XBetreff: ....... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Abend
Da ich soweit keine Bugs mehr feststellen konnte, hier die erste Modul Version. Einfach ins Modul Verzeichniss von BlitzMax und dann die Samples austesten und selbst ausprobieren. Hier der Link http://www.blitz-pasting.net/i...amp;id=149 Also testet mal bitte mehr und gebt mehr Anregungen. Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
- Zuletzt bearbeitet von Suco-X am Sa, Aug 13, 2005 22:37, insgesamt 2-mal bearbeitet
![]() |
Suco-XBetreff: ........ |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, die version 1.5 ist fertig und es haben sich einige Sachen geändert.
- Objektorientierte und Prozedurale Benutzung möglich - Verwendung der BB Docs für Beschreibung und Befehlseinfärbung - Diverse Kleinigkeiten abgeändert Ich schätze diese Version ist eine der Finalen und soweit Fertig und Bugfrei. Fehlt nurnoch ein Emitter Editor und ein Renderer für die Explosionen in ein Animiertes Bild. Das aber erst wenn sich ein vernünftiges GUI Modul für BMax findet. Hier die Neue Version http://www.blitz-pasting.net/i...amp;id=149 Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
Dogg0Betreff: Explosionsemitter in Liste |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
zunächst mal finde ich diese partikel engine absolut genial, nur hab ich jetzt ein Problem viele gleiche Explosionen ungefähr zeitgleich darzustellen. In einer Raumschlacht können ja mehrere Raumschiffe gleichzeitig explodieren. Um das zu realisieren ist mir nur eingefallen die Emitter noch mal in einem Type abzubilden und die einzelnen Objekte in einer Liste zu speichern. Diese Liste geh ich dann im Gameloop durch und update alle Emitter. Leider funktioniert das nicht. Code: [AUSKLAPPEN] type TExplosion field x field y field lifetime field gamespeed field Explosion1:TEmitter field Explosion2:TEmitter field raumschiff:TEmitter field implusion1:TEmitter field particle2_img:TImage = LoadParticleImage("N:/blitzmax_zeug/CMLibrary/Library/partikel/partikel1/media/particle1.png") field particle3_img:TImage = LoadParticleImage("N:/blitzmax_zeug/CMLibrary/Library/partikel/partikel1/media/kreis1.png") 'field particle2_img:TImage = LoadParticleImage("partikel/partikel1/media/particle1.png") 'field particle3_img:TImage = LoadParticleImage("partikel/partikel1/media/kreis1.png") function create:TExplosion(ax,ay:Int) local ex:TExplosion = new TExplosion ex.x = ax ex.y = ay ex.lifetime = 40 'Explosionswolke 1 ex.Explosion1 = CreateEmitter(50) ex.explosion1.EmitterImage = ex.particle2_img SetEmitterAlphaGradient(ex.Explosion1, 1.0, 0.0) SetEmitterBlend(ex.Explosion1, LIGHTBLEND) SetEmitterRandomSpeed(ex.Explosion1, -2.0, -2.0, 2.0, 2.0) SetEmitterScaleGradient(ex.Explosion1, 0.2, 0.2, 1.4, 1.4) SetEmitterRandomLifetime(ex.Explosion1, 500, 1000) SetEmitterColorGradient(ex.Explosion1, 255, 255, 0, 255, 0, 0) 'Explosionswolke 2 ex.Explosion2 = CreateEmitter(50) ex.explosion2.EmitterImage = ex.particle2_img SetEmitterAlphaGradient(ex.Explosion2, 1.0, 0.0) SetEmitterRandomSpeed(ex.Explosion2, -1.0, -1.0, 1.0, 1.0) SetEmitterScaleGradient(ex.Explosion2, 0.2, 0.2, 1, 1) SetEmitterRandomLifetime(ex.Explosion2, 500,1500) SetEmitterColorGradient(ex.Explosion2, 255, 255, 255, 128, 128, 128) AddEmitterToGroup(ex.Explosion2, ex.Explosion1) SetEmitterBlend(ex.Explosion2, LIGHTBLEND) 'AutoEmitterImage(particle3_img) ex.Implusion1 = CreateEmitter(5) ex.implusion1.EmitterImage = ex.particle3_img SetEmitterAlphaGradient(ex.Implusion1, 1.0, 0.0) SetEmitterScaleGradient(ex.Implusion1, 0.1, 0.1, 4.0, 4.0) SetEmitterRandomLifetime(ex.Implusion1, 800, 1000) SetEmitterBlend(ex.Implusion1, LIGHTBLEND) 'AddEmitterToGroup(ex.Implusion1, ex.Explosion1) SetEmitterColorGradient(ex.Implusion1, 100, 100, 255, 100, 100, 100) 'Raumschiff ex.Raumschiff = CreateEmitter(1) ex.raumschiff.EmitterImage = ex.particle2_img SetEmitterLifetime(ex.Raumschiff, 1) SetEmitterScale(ex.Raumschiff, 1.0, 1.0) SetEmitterTimeout(ex.Raumschiff, 800) SetEmitterEndingEmitter(ex.Raumschiff, ex.Explosion2) return ex End Function method getlife:Int() return lifetime End Method method update() GameSpeed = GetGameSpeed(60) SetEmitterPosition(raumschiff,x-viewx,y-viewy) playemitter(raumschiff) IdleEmitters(gamespeed) lifetime = lifetime - 1 ResetStates() End Method End type type TExplosions field exp_list:TList function create:TExplosions() local s:TExplosions = new TExplosions s.exp_list = CreateList() return s End Function method AddExplosion(Explosion:TExplosion) ListAddLast exp_list, explosion End Method method update() local ex:TExplosion For ex:TExplosion = EachIn exp_list 'ex.checkCollision(ships.sh_list) ex.update() 'ex.draw() If ex.getlife() < 0 Then ListRemove(exp_list, ex) FlushMem() End If Next End Method End type Ich habe versucht eine beispielexplosion implusion abzubilden, jedoch wird so garnichts dargestellt. Ich denke es hapert an: SetEmitterEndingEmitter(ex.Raumschiff, ex.Explosion2) Denn den raumschiff-emitter funktionierts Hat vielleicht schonmal jemand versucht das ganze in dieser Richtung abzubilden, oder hat jemand ne andere Idee, wie man viele Explosionen gleichzeitig darstellen kann? |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group