GLBasic forum

Codesnippets => Code Snippets => Topic started by: Schranz0r on 2007-Apr-07

Title: "PARTICLE" oder auch nicht ^^
Post by: Schranz0r on 2007-Apr-07
(http://www.styleattax.de/game/images/particles.png)


Download:

http://www.styleattax.de/game/?download=Particles.rar


Naja ich find...... naja ;)

ein Befehl RND(-50,50) wär nett für sowas
Title: "PARTICLE" oder auch nicht ^^
Post by: D2O on 2007-Apr-07
Und das Dings, GLBasic ist auch noch verdammt schnell.
60fps bei über 20.000 Partikel. Hola
Title: "PARTICLE" oder auch nicht ^^
Post by: Schranz0r on 2007-Apr-07
Japp sau schnell, hab ich Gernot auch schon gesagt !
Ist mit Types VIEL schneller als Blitz Basic!!!!
Title: "PARTICLE" oder auch nicht ^^
Post by: Kitty Hello on 2007-Apr-09
FUNCTION RND2: mini, maxi
   RETURN RND(maxi+mini) - mini
ENDFUNCTION
Title: "PARTICLE" oder auch nicht ^^
Post by: Schranz0r on 2007-Apr-09
Dank dir gernot !


EDIT:

Geht so nicht!

Ich will das es Negativ wie auch Positiv sein kann vom wert her.

z.B so : RND( -50, 50 )

Ist in Blitz auch so!
Title: "PARTICLE" oder auch nicht ^^
Post by: Kitty Hello on 2007-Apr-10
Ach. Mein Fehler:
RND(maxi - mini) + mini
Title: "PARTICLE" oder auch nicht ^^
Post by: Schranz0r on 2007-Apr-10
Geht wohl auch nicht, ich glaube RND kann keinen Negativen Wert besitzen!
Title: "PARTICLE" oder auch nicht ^^
Post by: Kitty Hello on 2007-Apr-10
Geht doch!?
Code (glbasic) Select
FOR i=0 TO 100
PRINT R2(-50, 50), 0, i*16
NEXT
SHOWSCREEN
MOUSEWAIT



FUNCTION R2: mini, maxi
RETURN RND(maxi-mini)+mini
ENDFUNCTION
Title: "PARTICLE" oder auch nicht ^^
Post by: Schranz0r on 2007-Apr-10
ich bin ja auch ein depp o.O

Habs nur verdreht, deshalb ...
Title: Re: \
Post by: WPShadow on 2010-Sep-14
Kannst du das Beispiel nochmal hoch laden?
Title: Re: \
Post by: Schranz0r on 2010-Sep-14
Lass doch mal die Leichen im Keller :D
Habs nimmer...
Title: Re: \
Post by: WPShadow on 2010-Sep-14
Schade drum! Gibt's sowas noch irgendwo in 3D oder soll ich veruschen sowas selbst zu machen?
Title: Re: \
Post by: backslider on 2010-Sep-15
Na selbst machen und direkt nen Tutorial zu schreiben  :good:
Title: Re: \
Post by: WPShadow on 2010-Sep-15
hehehe

Wenn es so einfach wäre, dann wäre ich nicht hier im Forum und würde wie wild danach suchen!  :noggin:
Title: Re: \
Post by: backslider on 2010-Sep-15
Ach das kriegst du schon hin :)

brauchst doch nur ein Type und ein bisschen Code  =D
Title: Re: \
Post by: WPShadow on 2010-Sep-15
Ach, ich mache das Ganze jetzt mal so:

Ich warte mal ab, bis ich mit meinem Nachhilfe - Lehrer zu den Vektoren gekommen bin und versuche dann mal was Eigenes zu machen.

Falls es funktioniert, dann is' gut, falls nicht, is' auch gut!  :nana:

Hoffentlich wird das was...  :D
Title: Re: \
Post by: backslider on 2010-Sep-15
Und ich versuch gerad ne 2D-PE zu bauen... Wenns geklappt hat, geb ichs dir ;) also den Sourcecode xD
Title: Re: \
Post by: WPShadow on 2010-Sep-15
Cooool!

Ich bin gespannt...
Title: Re: \
Post by: backslider on 2010-Sep-15
Hmmm...
Also bis jetzt sieht der Source so aus^^

Code (glbasic) Select

TYPE Vec2
x;y;
ENDTYPE

TYPE Color
r;g;b;
ENDTYPE

TYPE Particle
sprite%
position AS Vec2
direction AS Vec2
rotation
rotation_speed
color AS Color
scale
timeToLive

FUNCTION init: sprite%, pos_x, pos_y, dir_x, dir_y, angle, rotation_speed, col_r%=255, col_g%=255, col_b%=255, scale=1, ttl=5
self.sprite=sprite
self.position.x=pos_x; self.position.y=pos_y
self.direction.x=dir_x; self.direction.y=dir_y
self.rotation=angle
self.rotation_speed=rotation_speed
self.color.r=col_r
self.color.g=col_g
self.color.b=col_b
self.scale=scale
self.timeToLive=ttl
ENDFUNCTION

FUNCTION update:
INLINE
self.timeToLive--;
ENDINLINE

INC self.position.x, self.direction.x; INC self.position.y, self.direction.y
INC self.rotation, self.rotation_speed
ENDFUNCTION

FUNCTION draw:
ROTOZOOMSPRITE self.sprite, self.position.x, self.position.y, self.rotation, self.scale
ENDFUNCTION
ENDTYPE

TYPE ParticleEngine
origin AS Vec2
particle AS Particle
particles[] AS Particle
textures[]

FUNCTION particleCount%:
RETURN LEN(self.particles[])
ENDFUNCTION

FUNCTION update:
FOR i=0 TO LEN(self.particles[])-1
self.particles[i].update()

IF(self.particles[i].timeToLive <= 0)
DIMDEL self.particles[], i
DEC i, 1
ENDIF
NEXT
ENDFUNCTION

FUNCTION add:
LOCAL p AS Particle
p.init(RND(LEN(self.textures[])), mrnd(-100, 100), mrnd(-100, 100), RND(360), RND(360), RND(360), RND(10)*0.1, 255, 255, 255, RND(20)*0.1, mrnd(30,60))
ENDFUNCTION

FUNCTION draw:
FOR i=0 TO LEN(self.particles[])-1
PRINT "blub",self.particles[i].position.x,self.particles[i].position.y
NEXT
ENDFUNCTION
ENDTYPE

FUNCTION mrnd: mini, maxi
LOCAL rand
rand=RND(maxi - mini) + mini
RETURN rand
ENDFUNCTION


Aber ich krieg beim Aufruf der PE-Functions (update, draw) nen "Type is not declared"... (ist in einer Extra .gbas-Datei)
Weiß jemand woran das liegen kann?
Title: Re: \
Post by: WPShadow on 2010-Sep-15
Also in einer extra *.gbas funktioniert es noch nicht.

Wenn du das Ganze aber in der Hauptdatei drin hast, dann geht es problemlos!

Versuch's so mal!
Title: Re: \
Post by: BumbleBee on 2010-Sep-15
Quote from: backslider
Aber ich krieg beim Aufruf der PE-Functions (update, draw) nen "Type is not declared"... (ist in einer Extra .gbas-Datei)
Weiß jemand woran das liegen kann?

Ja, das ist glaube ich einer der Bugs die ich erwähnte. 

Cheers
Title: Re: \
Post by: backslider on 2010-Sep-16
Hm, also bei mir kommt dann die Fehlermeldung:

Quote"ParticleSystem.gbas"(92) error : command not inside function or sub
Title: Re: \
Post by: backslider on 2010-Sep-17
So WPShadow...

Ich habs jetzt zumindest schonmal hinbekommen ne einfache 2D-ParticleEngine zu bauen :)

Hier der Source...

[attachment deleted by admin]
Title: Re: \
Post by: WPShadow on 2010-Sep-19
hehehe

Das sieht klasse aus!!!

Ich muß mir mal den Code durch sehen, wer weiß, was ich daraus bauen kann, falls ich den Code verstehe...
Title: Re: \
Post by: backslider on 2010-Sep-20
Also ganz grob erklärt hast du einfach einen Partikel mit seinen Eigenschaften (TYPE PARTICLE), wie z.B. Position, Lebensdauer UND eine "Partikelengine", welche den Partikel beliebig oft erstellt und sagt, was mit diesem passieren soll... Ich denke, das kann man auch noch einfacher schreiben, aber das war halt mal so auf die schnelle^^

Wenn ich mal Zeit habe, dann bau ich dir das auch nochmal in 3D, dann kannst du ja gucken, wo Unterschiede liegen ;)
Aber dank GLBasic wird der Partikel wohl einfach eine Position mehr bekommen (statt Vector2 (x,y) nen Vector3 (x,y,z))
und ein paar Wörter mehr im update der Partikelengine...
Kannst ja auch selbst mal probieren und erzählen, was du hinbekommen hast  :)

Gruß
Title: Re: \
Post by: Schranz0r on 2010-Sep-20
Und die Zeichenroutine muss geändert werden ;)
Title: Re: \
Post by: WPShadow on 2010-Sep-20
Du meinst die Draw (2D) muß in Draw (3D) geändert werden? --> Soweit wäre es mir klar gewesen...  :booze:
Title: Re: \
Post by: backslider on 2010-Sep-20
Jo, das wird Schranz0r wohl meinen  :good:
Das habe ich schon als selbstverständlich gesehen^^