Chipmunk 4.1.0 : moteur physique pour la 2D

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Anonyme

Message par Anonyme »

Tu as changer le code source de chipmunk ? cpBodyNew() ?
car je ne pouvais pas compiler a partir de tes sources il me semble.
eddy
Messages : 67
Inscription : mer. 09/avr./2008 2:08

Message par eddy »

c'est la dernière version 4.1.0

Code : Tout sélectionner

// chipmunk.h
typedef float cpFloat
Anonyme

Message par Anonyme »

voila maintenant j'ai
Chipmunk-4.1.0-win32/Purebasic$ ./demo1
Erreur de segmentation

Dans le wrapp , j'ai fait cela pour la classe Cpjoint:

Code : Tout sélectionner

	  CompilerIf #PB_Compiler_OS = #PB_OS_Windows
	  *klass.cpJointClass
	  CompilerEndIf
	  CompilerIf  #PB_Compiler_OS = #PB_OS_Linux
	  *klass.i
	  CompilerEndIf
j'ai virer aussi tout les appels a la macro CONST qui visiblement ne sert a rien.
Anonyme

Message par Anonyme »

Pourquoi as tu récris les fonctions :

Code : Tout sélectionner

CompilerIf 0
	Procedure cpInitChipmunk ()
	EndProcedure
	Procedure.f cpMomentForCircle (m.f, r1.f, r2.f, offset.cpVect)
	EndProcedure
etc...
sans sa marche aussi.


L'erreur de segmentation viens de la fonction de dessin.
je cherche pourquoi maintenant.
Anonyme

Message par Anonyme »

j'avance j'avance :D

le coupable :

Code : Tout sélectionner

cpSpaceHashEach(*space\activeShapes, @DrawShape(), *datas)
Anonyme

Message par Anonyme »

J'ai torturé , la dernière fonction , elle ne savait pas grand chose , elle m'a balancer un nom :

Code : Tout sélectionner

DrawShape()
Ce nouveau coupable a vite craché le nom du complice , DrawPolyShape()
et ce dernier sous la torture nous dit que :

Code : Tout sélectionner

   Circle(*poly\shape\body\p\x, *poly\shape\body\p\y, 2, RGB(0, 0, 255))
Invalid access memory
Anonyme

Message par Anonyme »

Ca tourne , par contre , j'ai des problèmes avec les circles :/
eddy
Messages : 67
Inscription : mer. 09/avr./2008 2:08

Message par eddy »

tu as changé le typedef dans ton code pour le type cpFloat ?
Mon wrap correspond à des structures utilisant des floats
Anonyme

Message par Anonyme »

oui
Stefou
Messages : 234
Inscription : jeu. 18/janv./2007 14:08

Message par Stefou »

Salut à tous et merci pour ce lien ! :D

Je trouve cela formidable et j'aimerais bien l'exploiter un peu mais j'avoue ne rien avoir compris.
Existe t-il un tuto ?

Merci d'avance et bon courage pour la version Linux.
eddy
Messages : 67
Inscription : mer. 09/avr./2008 2:08

Message par eddy »

A tous les coups ton compilateur optimise les structures, les offsets sont donc décalés.

C'est pour ça que j'ai choisi de garder les floats dans ma version.
J'avais pas trouver comment désactiver cette optimisation
eddy
Messages : 67
Inscription : mer. 09/avr./2008 2:08

Message par eddy »

J'ai mis à jour ma version.

J'ai finalement plus besoin de modifié le typedef, je le laisse à DOUBLE.
J'ai trouvé ce qui manquait dans le chipmunk.H pour la compatibilité avec PB :

Code : Tout sélectionner

/// compatibility with PB structure alignment (1 byte) 
#pragma pack(1)    
/// conversion to PB type (enum => long)          
#pragma enum(4)
eddy
Messages : 67
Inscription : mer. 09/avr./2008 2:08

Message par eddy »

Pour les tutoriaux, je vais faire un petit éditeur qui génère du code. Comme ça tu vois tout de suite l'effet des paramètres
Stefou
Messages : 234
Inscription : jeu. 18/janv./2007 14:08

Message par Stefou »

Merci eddy, j'attends cela :D
Répondre