LiXu.pbi : Animation & Particule 2D

Programmation avancée de jeux en PureBasic
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

LiXu.pbi : Animation & Particule 2D

Message par falsam »

Version 1.6 (17 Juillet 2015)

Presque tout est dans le titre. Lixu.pbi est un module qui vous permettra de :
-Ajouter des animations à vos sprites.
-Créer des émetteurs de particules type point ou box.
-Créer des SpriteScroll pour gérer vos scrolling paralax ou pas.

Téléchargement
:arrow: https://github.com/pbcodex/2D-LiXu/archive/master.zip
Dernière modification par falsam le mar. 03/nov./2015 1:50, modifié 12 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message par Ar-S »

ça parait pas mal du tout, merci !
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message par falsam »

Merci Ar-S. Puisque tu es sous linux, pourrais tu me dire si ça fonctionne ?
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: LiXu.pbi : Animation & Particule 2D

Message par blendman »

Excellent !
Je crois bien que je pourrais même m'en servir dans mon soft de dessin animatoon, car j'ai prévu d'ajouter des particules.


Un petit ajout tout simple (gérer la transparence avec le temps et aussi un système de particules ressemblant à des lucioles) :

L'exemple :

Code : Tout sélectionner

;Lixu - Create emitter (#Particle_AllDir)
; 06/2015

IncludeFile "lixu.pbi"

If InitSprite()
  InitKeyboard()
  InitMouse()
EndIf

UseModule lixu

OpenWindow(0, 0, 0, 800, 600, "Lixu Particle", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, 800, 600)

; ShowCursor_(1) ; pour voir le curseur ^^

;Create particles emitter
lixu::EmitterCreate("example", #Particle_AllDir)
lixu::ParticleRate("example", 150)
lixu::ParticleColorsRange("example", RGB(255, 0, 0), RGB(0, 0, 255), 10)
lixu::ParticleSizeRange("example", 10, 60)
lixu::ParticleSpeedRange("example", -2, -2, 2, 2)
lixu::ParticleTimeToLife("example", 300)

;Events Loop
Repeat  ;Window
  Repeat ;Screen
    Event = WindowEvent()
     
    Select Event    
      Case #PB_Event_CloseWindow
        End
    EndSelect  
  Until Event=0
    
  FlipBuffers()
  ClearScreen(RGB(255, 255, 255))
  ExamineKeyboard()
  ExamineMouse()
  
  ;Play emitter
  lixu::EmitterPlay("example", MouseX(), MouseY())
  
Until KeyboardPushed(#PB_Key_Escape)


Modifier dans ton module :

Code : Tout sélectionner

; ajouter ça :
#Particle_AllDir = 10 ; en dehors du module


  Procedure EmitterPlay(Emitter.s, x = 0, y = 0, Loop = #True)
    If FindMapElement(Emitters(), Emitter)
        
      ForEach Emitters()\Particle()
      
        With Emitters()\Particle()        
          If \LifeTime <= 0 
            \Actif = #False
            \LifeTime = Random(Emitters()\LifeTime) 
          
            If Emitters()\Type = #PB_Particle_Box
              \x = Random(Emitters()\Width) + x
              \y = y 
            ElseIf Emitters()\Type = #PB_Particle_Point
              \x = x
              \y = y              
            ElseIf Emitters()\Type = 10 ; #Particle_AllDir   ;< ------------------------------ modification ici
              \x = Random(Emitters()\Width) - Random(Emitters()\Width) ; ----------------- modification ici
              \y = Random(Emitters()\Height) - Random(Emitters()\Height);----------------- modification ici
            EndIf
          EndIf
        
          \x + \vx
          \y + \vy 
        
          If \LifeTime > 0
            ZoomSprite(\Sprite, \Size, \Size)
            RotateSprite(\Sprite, \Rotate, #PB_Relative)           
            DisplayTransparentSprite(\Sprite, \x , \y , \lifetime, \Color) ; <------------------ modification ici (changement dans l'alpha)
          EndIf 
        
          \LifeTime - 1
        
        EndWith
        
      Next
      
      Emitters()\Actif = #False
    EndIf
    
  EndProcedure
D'ailleurs, en testant le spriteBlendingMode(), on remarque que c'est bugué si on change la couleur d'un sprite :(

ps :Tu peux aussi le mettre dans trucs & astuces ;)
Micheao
Messages : 533
Inscription : dim. 07/déc./2014 10:12
Localisation : Sud-Est

Re: LiXu.pbi : Animation & Particule 2D

Message par Micheao »

Merci Falsam c'est de la bombe ton module je m'en vais étudier les exemples
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message par venom »

Salut

Il a l'air sympa ce petit module. J'ai hâte de pouvoir tester ça :P
Merci falsam







@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: LiXu.pbi : Animation & Particule 2D

Message par Kwai chang caine »

Marche nickel sur un portable W7
Super joli, il me plait le petit zebulon :mrgreen:
Chouettes les montagnes derrieres..
En un mot tout me plait :D

Merci du partage 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message par majikeyric »

WOW! 8O ça c'est de la belle ouvrage ! :)
Merci pour le partage falsou ! :mrgreen:
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message par falsam »

Merci tout le monde pour ces commentaires. :)
blendman a écrit :Un petit ajout tout simple (gérer la transparence avec le temps et aussi un système de particules ressemblant à des lucioles) :
la transparence est prévu. D'ailleurs tu as du voir la variable Opacity.i dans la structure d'une particule.
Quand au luciole tu peux faire un sprite qui remplacera celui par défaut.
blendman a écrit :#Particle_AllDir = 10 ; en dehors du module
Insolent que tu es :mrgreen:
Tu places ça dans la section déclarative du module lixu

Code : Tout sélectionner

DeclareModule Lixu  
  #Particle_AllDir = 10 
Je me suis servi des constantes de PureBasic pour définir le type de particules. Plutot que #Particle_AllDir, je vais plutôt modifier la procédure EmitterPlay() en ne rendant pas obligatoire la position x et y et utiliser la constante #pb_ignore pour définir le type de particule.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message par falsam »

majikeyric a écrit :falsou
<3 :mrgreen: héhé
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message par falsam »

@Blendman: Ton code aprés mise à jour de lixu.pb

Code : Tout sélectionner

;Lixu - Create emitter en ignorant le type de boite

IncludeFile "lixu.pbi"

InitSprite()
InitKeyboard()
InitMouse()

UseModule lixu

OpenWindow(0, 0, 0, 800, 600, "Lixu Particle", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, 800, 600)

;Create particles emitter
lixu::EmitterCreate("example", #PB_Ignore)

lixu::ParticleRate("example", 150)
lixu::ParticleColorsRange("example", RGB(255, 0, 0), RGB(0, 0, 255), 10)
lixu::ParticleSizeRange("example", 10, 60)
lixu::ParticleSpeedRange("example", -2, -2, 2, 2)
lixu::ParticleTimeToLife("example", 300)

;Events Loop
Repeat  ;Window
  Repeat ;Screen
    Event = WindowEvent()
     
    Select Event    
      Case #PB_Event_CloseWindow
        End
    EndSelect  
  Until Event=0
    
  ClearScreen(RGB(255, 255, 255))
  ExamineKeyboard()
  ExamineMouse()
  
  ;Play emitter (Inutile de préciser la position x y)
  lixu::EmitterPlay("example")

  FlipBuffers()
  
Until KeyboardPushed(#PB_Key_Escape)
Dernière modification par falsam le mar. 30/juin/2015 22:05, modifié 1 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: LiXu.pbi : Animation & Particule 2D

Message par blendman »

falsam a écrit :Insolent que tu es :mrgreen:
oui, j'insole (du verbe insoler : être insolent ^^, verbe que je viens d'inventer :mrgreen: ).
En fait, je ne connaissais pas les modules avant ton code, donc, je n'avais pas vu que je pouvais déclarer la constante dans DeclareModule ;).
J'ai juste modifier deux trois trucs un peu à l'arrache ^^

mais il est bien classe ton code en tout cas ;)
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message par falsam »

Tu n'as rien inventé du tout, insoler existe http://la-conjugaison.nouvelobs.com/du/ ... nsoler.php

A cause de toi j'ai eu un doute sur insolent ou insolant.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: LiXu.pbi : Animation & Particule 2D

Message par blendman »

falsam a écrit :Tu n'as rien inventé du tout, insoler existe http://la-conjugaison.nouvelobs.com/du/ ... nsoler.php
que nenni mon ami, je ne parle pas d'exposer à la lumière mais de faire son insolent :)

c'est comme le verbe retenir par exemple :
- se rappeler quelque chose
- empêcher de tomber.

Voilà, donc c'est décidé, on peut dire désormais "j'insole, oui, monsieur ! parfaitement."
:mrgreen:

(bon allez, j'arrête, il faut revenir à ton exemple de code ;) ^^)
Dernière modification par blendman le mar. 29/sept./2015 7:13, modifié 1 fois.
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message par Ar-S »

Lorsque je lance la demo, j'ai eau des soucis aux loadsprite
Il faut mettre le chemin complet avec du / et pas du \
Ce qui donne comme exemple :

Code : Tout sélectionner

/home/ldv/Documents/PB/Lixu/data/dude.png
Ensuite ça se lance mais le screen est tout moisi. Celà ne vient pas de ton code mais de Xserver. Le pilote video de base...
Le soucis est que si je mets le pilote Nvidia, nul doute que ça passerai mais là c'est mon PLAYONLINUX qui saute et j'en ai besoin pour faire marcher mon soft de compta (windows) "Winiser"
---- edit ----
J'ai reussi à mettre Playonlinux et mes pilotes Nvidia, du coup LiXu marche (avec les modifs des paths des loadsprites)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre