cbChipmunk 0.7.2 (Fysiikkakirjasto)

Jaa meneillään olevat projektisi tai valmiit pelit muun yhteisön kanssa täällä.
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: cbChipmunk 0.5 (Fysiikkakirjasto)

Post by Latexi95 »

MetalRain wrote: Eipähän ainakaan tuo uusi versio sitä korjannut. MAVittaa kun koittaa jotakin shapea tai bodyä poistaa.
Hm... Ai jaa... Minä luulin korjanneeni ongelman... Ainakin tuon minun esimerkkini auton voi poistaa ilman mavia. Ei kun niin unohdin testata MAVaako sitten sen jälkeen cpUpdate tai cpPullAll... Olen nyt mökillä... Korjaan ongelman ensiviikolla.
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: cbChipmunk 0.5 (Fysiikkakirjasto)

Post by MaGetzUb »

Kuten edellisellä sivulla edittasin, niin: Sain ongelman ratkaistua paketissasi oleva MSVCR100.dll oli epäkelpo tietokoneeni kanssa. Se voi aiheuttaa muillakin ongelmia. Joten etsikää jostain vanhempi MSVCR.dll tiedosto. :)
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
Sami345
Advanced Member
Posts: 349
Joined: Fri Aug 31, 2007 4:52 pm
Contact:

Re: cbChipmunk 0.5 (Fysiikkakirjasto)

Post by Sami345 »

MaGetzUb wrote:Kuten edellisellä sivulla edittasin, niin: Sain ongelman ratkaistua paketissasi oleva MSVCR100.dll oli epäkelpo tietokoneeni kanssa. Se voi aiheuttaa muillakin ongelmia. Joten etsikää jostain vanhempi MSVCR.dll tiedosto. :)
Minulle tulee ensimmäisenä mieleen, että DLL saattaa olla tarkoitettu 64-bittiselle Windowsille, jolloin se ei toimi, jos sinulla on 32-bittinen Windows.
Projektit: Fiperus - Jäädytetty pidemmäksi aikaa.
Voitot: Viikkokisa XIII, Pikapelikisa 3, Pikapelikisa 13
http://www.sami345.tk/
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: cbChipmunk 0.5 (Fysiikkakirjasto)

Post by MaGetzUb »

Sami345 wrote:
MaGetzUb wrote:Kuten edellisellä sivulla edittasin, niin: Sain ongelman ratkaistua paketissasi oleva MSVCR100.dll oli epäkelpo tietokoneeni kanssa. Se voi aiheuttaa muillakin ongelmia. Joten etsikää jostain vanhempi MSVCR.dll tiedosto. :)
Minulle tulee ensimmäisenä mieleen, että DLL saattaa olla tarkoitettu 64-bittiselle Windowsille, jolloin se ei toimi, jos sinulla on 32-bittinen Windows.
Pöytäkoneellani valitti ettei ole kelvollinen Windows NT vedos tai jotain sinnepäin, läppärilläni on Windows 7 64, ja tällä ohjelma ilmoitti vain että MemCopy failed.
EDIT:

Päivitetty aikaisempi esimerkkini, nyt voit grabata ja heitellä laatikoita (koodi oikeastaan kylmästi kopsattu Latexi:n esimerkistä, en jaksanut paneutua noihin funktioihin.) ja niitä voi myös poistaa. Mutta tämä "poistaminen" tuntuu vain poistavan loodilta törmäykset ja päästävän ne kentän laitojen lävitse. ;O

Code: Select all


Include "cbChipmunk.cb"

Const SW = 1024
Const SH = 768

Type Boxes
    Field Body
    Field Shape 
    Field BodyW
    Field BodyH
EndType 


DrawToWorld ON

SCREEN SW, SH

cpSetGravity(0,-230.0)


cpSetIterations(20)

borderGeometry = cpBoxGeometryNew(SW,SH)
cpBorderNew(borderGeometry,10)


mouseBody = cpBodyNewStatic()

Repeat 



    Text 10, 15, "Luo laatikko painamalla hiiren vasempaa nappia pohjassa, ja vetämällä hiirtä."
    Text 10, 30, "Vedä laatikoita hiiren oikealla näppäimellä."
    Text 10, 45, "Vie hiiri laatikon päälle ja paina D poistaaksesi sen."
    If MouseHit(2) Then
        shape = cpShapeUnderPoint(MouseWX(),MouseWY())
        If (shape) Then 
            body = PeekInt(shape,CP_INDEX_SHAPE_OWNER)
            cpBodyWorldToLocal(body,MouseWX(),MouseWY())
            spring = cpPivotJointNew(mouseBody,body,0,0,CP_GLOBAL_X,CP_GLOBAL_Y)
        EndIf    
    EndIf 
    cpBodySetPos(mouseBody,MouseWX(),MouseWY())
    cpPush(mouseBody)
    If MouseUp(2) Then
        If spring Then
            cpDelete(spring)
            spring = 0
        EndIf
    EndIf
    
    If KeyHit(cbkeyd) Then  
        shape = cpShapeUnderPoint(MouseWX(),MouseWY())
        If shape Then 
            cpDelete(shape)
        EndIf 
    EndIf 
    
    If MouseHit(1) Then 
        dnewbox = True   
        sx = MouseWX()
        sy = MouseWY()
    EndIf 

    If dnewbox Then 
        Box2(sx+(MouseWX()-sx)/2, sy+(MouseWY()-sy)/2, MouseWX()-sx, MouseWY()-sy, 0)
    EndIf 
    
    If MouseUp(1) And dnewbox = True Then 
        dnewbox = False 
        BoxW = Abs(MouseWX() - sx)
        BoxH = Abs(MouseWY() - sy)
        centx# = sx + (MouseWX()-sx)/2
        centy# = sy + (MouseWY()-sy)/2
        NewBox(centx#, centy#, boxW, boxH)
    EndIf 
    
    
    cpUpdate(1.0/60.0)
    
    Lock 
    For bx.Boxes = Each Boxes

        Box2(PeekFloat(bx\body,CP_INDEX_BODY_POS_X),PeekFloat(bx\body,CP_INDEX_BODY_POS_Y),bx\bodyW,bx\bodyh,PeekFloat(bx\body,CP_INDEX_BODY_ANGLE))
    Next bx
    Unlock 
    
    updateTime# = cpWaitForUpdate()//Odotetaan fysiikan päivittymistä...
    Text 10,60,"Updating physics took "+updateTime+"ms"    
    For bx.Boxes = Each Boxes
        cpPull(bx\body)
    Next bx

DrawScreen
Forever 

Function NewBox(x#, y#, w, h)
    weight# = (w+h)/2
    bx.Boxes = New(Boxes)
    bx\BodyW = w
    bx\BodyH = h
    geom = cpBoxGeometryNew(w,h)
    bx\body = cpBodyNew(weight#,cpMomentForGeometry(geom,weight#), x#, y#)
    bx\shape = cpShapeNew(bx\body,geom,-1,0,0,0,0.7,0.3)
EndFunction 

Function Box2(x#,y#,w#,h#,ang#)
    p1x# = x#+Cos(ang#)*w*0.5+Cos(ang#+90)*h*0.5
    p1y# = y#+Sin(ang#)*w*0.5+Sin(ang#+90)*h*0.5
    
    p2x# = p1x-Cos(ang#)*w
    p2y# = p1y-Sin(ang#)*w
    
    p3x# = p2x+Cos(ang#+270)*h
    p3y# = p2y+Sin(ang#+270)*h
    
    p4x# = p3x+Cos(ang#)*w
    p4y# = p3y+Sin(ang#)*w
    
    Line p1x,p1y,p2x,p2y
    Line p2x,p2y,p3x,p3y
    Line p3x,p3y,p4x,p4y
    Line p4x,p4y,p1x,p1y
EndFunction
[/edit]
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
Kumiankka
Member
Posts: 65
Joined: Wed May 18, 2011 5:17 pm
Location: Artjärvi

Re: cbChipmunk 0.5 (Fysiikkakirjasto)

Post by Kumiankka »

MaGetzUb wrote:
EDIT:

Päivitetty aikaisempi esimerkkini, nyt voit grabata ja heitellä laatikoita (koodi oikeastaan kylmästi kopsattu Latexi:n esimerkistä, en jaksanut paneutua noihin funktioihin.) ja niitä voi myös poistaa. Mutta tämä "poistaminen" tuntuu vain poistavan loodilta törmäykset ja päästävän ne kentän laitojen lävitse. ;O

Code: Select all

KOODIA...
[/edit]
Villi veikkaus... Johtuisiko tuo laatikoiden jääminen siitä että ainoastaan laatikoiden shape poistetaan, mutta kokoelman jäsen jää vielä kummittelemaan ja siksi piirretään?
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: cbChipmunk 0.5 (Fysiikkakirjasto)

Post by MaGetzUb »

Kumiankka wrote:
MaGetzUb wrote:
EDIT:

Päivitetty aikaisempi esimerkkini, nyt voit grabata ja heitellä laatikoita (koodi oikeastaan kylmästi kopsattu Latexi:n esimerkistä, en jaksanut paneutua noihin funktioihin.) ja niitä voi myös poistaa. Mutta tämä "poistaminen" tuntuu vain poistavan loodilta törmäykset ja päästävän ne kentän laitojen lävitse. ;O

Code: Select all

KOODIA...
[/edit]
Villi veikkaus... Johtuisiko tuo laatikoiden jääminen siitä että ainoastaan laatikoiden shape poistetaan, mutta kokoelman jäsen jää vielä kummittelemaan ja siksi piirretään?
Niinpä tietysti, mutta nyt en kyllä jaksa korjata koodia. Ja turha kenenkään muunkaan on tuota koodia lähteä korjaamaan puolestani, haluan sen korjata sitten kun huvittaa. :P
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: cbChipmunk 0.5 (Fysiikkakirjasto)

Post by JATothrim »

Wut. näin Projektit osiossa vain "cbChipmunk" ja ihmettelin mihin se Box2D oli jo syväjäätynyt. :D :D
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: cbChipmunk 0.5 (Fysiikkakirjasto)

Post by Latexi95 »

JATothrim wrote:Wut. näin Projektit osiossa vain "cbChipmunk" ja ihmettelin mihin se Box2D oli jo syväjäätynyt. :D :D
No vaihdoin sen Chipmunkiin... Kiitos vain ideasta. C:llä tehty kirjasto onkin paljon helpompi tehdä cb:llä toimivaksi kuin c++:lla. Ei vaadi niin suurta muokkausta.

MetalRain: Oletko varma, että virhe on cbChipmunkissa, kun kyllä muilla tuntuu cpDelete toimivan. Huomasithan, että ohjeissa mainitaan, että cpBodyn poistaminen poistaa kaikki siinä kiinni olevat shapet ja liitokset. Koitatko poistaa jo poistetun? Jos vika ei tunnu löytyvän niin laita vaikka yv:nä koodi minulle niin voin koittaa paikallistaa vian.
mkn
Member
Posts: 61
Joined: Wed Feb 17, 2010 3:12 pm

Re: cbChipmunk 0.5 (Fysiikkakirjasto)

Post by mkn »

Toimivan dll tiedoston saa täältä:
http://www.dll-files.com/pop.php?dll=msvcr100
"I'd love to change the world, but they won't give me the source code." - Anonymous
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: cbChipmunk 0.5 (Fysiikkakirjasto)

Post by JATothrim »

Itselläni cpDelete tuntui toimivan satunnaisesti, välillä ei ongelmia, välillä MAVaa. Esim. "Wait 1" cpDelete:n jälkeen saattoi korjata MAVin. DLL:n kanssa pitää muistaa, että muistin varauset/vapautukset eivät saa ylittää DLL:n rajapintaa. (jos varataan DLL:n puolella, myös vapautetaan DLL:n puolella)
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: cbChipmunk 0.5 (Fysiikkakirjasto)

Post by Latexi95 »

JATothrim wrote:Itselläni cpDelete tuntui toimivan satunnaisesti, välillä ei ongelmia, välillä MAVaa. Esim. "Wait 1" cpDelete:n jälkeen saattoi korjata MAVin. DLL:n kanssa pitää muistaa, että muistin varauset/vapautukset eivät saa ylittää DLL:n rajapintaa. (jos varataan DLL:n puolella, myös vapautetaan DLL:n puolella)
Juu. DLL poistaa kyllä kaiken itse minkä on varannutkin, ja cb hoitaa oman osuutensa. (en ole ainakaan itse löytänyt varsinaista vikaa koodissa) Minulla kyllä cpDelete tuntuu toimivan. Toiminta on tälläinen: cpDelete ilmoittaa dll:e mikä poistetaan. DLL tarkistaa mitkä asiat on sidottu siihen ja pitää poistaa sen kanssa (cpBodyn cpShapet ja cpConstraintit) ja tekee niistä listan. DLL poistaa kaikki listalla olevat ja laittaa sitten listan cb:n muistipalojen osoitteista joiden dll:n puoleiset osat on poistettu ja sitten cb poistaa kaikki muistipalat jotka dll sille ilmoitti.
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: cbChipmunk 0.5.1 (Fysiikkakirjasto)

Post by Latexi95 »

Uusi versio pitkästä aikaa. Tällä kertaa sen pitäisi pitää sisällää korjaus tuohon cpDeleten bugiin. Tauko teki hyvää ja luulen löytäneeni ongelman ja korjasin sen. Muuta uutta ei ole.
User avatar
Substance
Active Member
Posts: 234
Joined: Fri Mar 14, 2008 5:48 pm

Re: cbChipmunk 0.5.1 (Fysiikkakirjasto)

Post by Substance »

Runkoja poistettaessa yksi cpDelete ei vielä anna virheilmoitusta, mutta näyttäisi sotkevan tai poistavan jonkun sen jälkeen luodun rungon tietoja, muutaman kerran jälkeen cpDelete antaa MemCopy failedin(epäsuorasti varmaankin, koska itse funktiossa ei käytetä MemCopyä) :[. btw, mahtava projekti, toivottavasti saat tämän korjattua :D.
Substance aka LittleGreen
Red Encounter - shoot'em uppia - lataus
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: cbChipmunk 0.5.1 (Fysiikkakirjasto)

Post by Latexi95 »

Substance wrote:Runkoja poistettaessa yksi cpDelete ei vielä anna virheilmoitusta, mutta näyttäisi sotkevan tai poistavan jonkun sen jälkeen luodun rungon tietoja, muutaman kerran jälkeen cpDelete antaa MemCopy failedin(epäsuorasti varmaankin, koska itse funktiossa ei käytetä MemCopyä) :[. btw, mahtava projekti, toivottavasti saat tämän korjattua :D.
Kiitos. Juuri tätä tarvitsinkin, että jaksoin uhrata muutaman tunnin inhottavan virheen etsintään. Nyt luulen (monennenkohan kerran), että virhe on vihdoin saatu paikattua. Säädin muutamaa asiaa ja lisäsin puuttuneen CP_DYNAMIC_BODY_COUNTin vähennyksen ja alkoi taas toimia. Lisäksi keksin mistä johtui mysteerinen PeekByte failed joka esiintyi silloin tällöin. Se johtui siitä, että jollakin funktiolla (yleensä cpShapeUnderPointilla) saatiin muoto, joka on staattinen ja näin ollen lisätty vakio staattiseen runkoon, mitä ei cb:n puolella ole olemassa(siis muistipalaa ei ole). Joten tein siten, että tälläisten staattisten muotojen omistajan osoite (CP_INDEX_SHAPE_OWNER) on CP_MAIN_STATIC_BODY (eli -1) tällä voit tarkistaa, että et muokkaa olematonta muistipalaa. Testi jota käytin toiminnan testaamiseen löytyy aloitusviestissä olevasta uudesta paketista. Testissä on myös koodinpätkä, josta selviää mitä tuo edellinen selitykseni staattisista muodoista käytännössä tarkoittaa.

Edit:Niin se PeekByte failed oli sen takia mysteerinen, että koko koodi ei käyttänyt kertaakaan PeekByteä...

Edit2:Niin muuten... Kellään mitään tietoa, kuinka chipmunkin Bodyjen nukkuminen saadaan toimintaan? Maaginen koodin pätkä "cpSpaceSetSleepTimeThreshold(&mSpace,0.5f);" on kyllä laitettuna, mutta se ei tunnu auttavan. Kuten huomaattekin tuosta samaisesta testikoodinpätkästä (sinne pitäisi tulle teksti "body is sleeping..." jos runko "nukkuu").

Edit3:Tein esimerkin siitä, kuinka on mahdollista tehdä partikkelivettä:

Code: Select all

Include "cbChipmunk.cb"
Const particleMass = 0.3
Const PARTICLE_HALF_SIZE = 1
Const PARTICLE_FULL_SIZE = 2

Type particles
    Field body
    Field shape
    Field r
    Field g
    Field b
EndType

Global PCR As Float,PCG As Float,PCB As Float,particleGeometry,particleCount

particleGeometry = cpCircleGeometryNew(PARTICLE_HALF_SIZE,0)

SCREEN 800,600

cpSetGravity(0,-300)
borderGeometry = cpBoxGeometryNew(800,600)
cpBorderNew(borderGeometry,5)

segmentGeometry = cpSegmentGeometryNew(-200,-100,250,-50,5)
segmentShape = cpShapeNewStatic(segmentGeometry)




DrawToWorld ON

ClsColor cbWhite
lastUpdate = Timer()
Repeat
    Color 0,0,0
    updateTime# = cpWaitForUpdate()//Odotetaan fysiikan päivittymistä...
    Text 10,0,"Particles:"+particlecount
    Text 10,10,"FPS:"+FPS()
    Text 10,30,"Updating physics took "+updateTime#+"ms"
    cpPullAll()
    If MouseDown(1) Then
        AddParticle(MouseWX(),MouseWY())
    ElseIf MouseDown(2)
        RemoveParticlesInRadius(MouseWX(),MouseWY(),10)
    ElseIf MouseHit(3)
        Explosion(MouseWX(),MouseWY(),70)
    EndIf
    cpUpdate(Float(Timer()-lastUpdate)/1000.0) //Aloitetaan fysiikan päivitys. Päivitetään fysiikoita 1/60 sekuntia
    //Tämän jälkeen ei muokkauksia fysiikkaan¨
    lastUpdate = Timer()
    
    
    cpDrawSegmentGeometry(segmentGeometry)
    For particle.particles = Each particles
        Color particle\r,particle\g,particle\b
        Box PeekFloat(particle\body,CP_INDEX_BODY_POS_X)-PARTICLE_HALF_SIZE,PeekFloat(particle\body,CP_INDEX_BODY_POS_Y)-PARTICLE_HALF_SIZE,PARTICLE_FULL_SIZE,PARTICLE_FULL_SIZE
    Next particle
    
    DrawScreen
Forever

Function AddParticle(x,y)
    For i = 1 To 10
        particle.particles = New(particles)
        particle\body = cpBodyNew(particleMass,0.0001,x+Rand(-2,2),y+Rand(-2,2))
        particle\shape = cpShapeNew(particle\body,particleGeometry,-1,0,0,0,0.0000001,0.3)
        particle\r = PCR
        particle\g = PCG
        particle\b = PCB
        PCR + 0.3
        PCG + 0.2
        PCB + 0.1
        If PCR > 255 Then PCR = 30
        If PCG > 255 Then PCG = 30
        If PCB > 255 Then PCB = 30
        particleCount + 1
    Next i
EndFunction

Function RemoveParticlesInRadius(x,y,r#)
    For particle.particles = Each particles
        If Distance(PeekFloat(particle\body,CP_INDEX_BODY_POS_X),PeekFloat(particle\body,CP_INDEX_BODY_POS_Y),x,y) < r# Then
            cpDelete(particle\body)
            Delete particle
            particleCOunt - 1
        EndIf
    Next particle
EndFunction

Function Explosion(x#,y#,power#)
    
    For particle.particles = Each particles
        px# = PeekFloat(particle\body,CP_INDEX_BODY_POS_X)
        py# = PeekFloat(particle\body,CP_INDEX_BODY_POS_Y)
        dist# = Distance(px#,py#,x,y)
        If dist < power#*2 Then
            
            angle# = GetAngle(x#,-y#,px,-py)
            ip# = Min(power,(power/dist#)^2)
            cpApplyImpulse(particle\body,Cos(angle#)*ip#,Sin(angle#)*ip,0,0)
        EndIf
    Next particle
EndFunction
Partikkelit ovat pieniä palloja, joilla on erittäin pieni kitka. Ei tuo ihan aidolta vedeltä näytä, mutta käytös lievästi muistuttaa sitä. Varmasti käytös olisi vielä aidompaa, jos partikkeleita olisi enemmän ja ne olisivat pienempiä, mutta ainakaan minun koneeni ei jaksa pyörittää sujuvasti 3000 partikkelia enempää (FPS 25).
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: cbChipmunk 0.6 (Fysiikkakirjasto)

Post by Latexi95 »

Pahoittelen tuplapostia, mutta sain nyt tuo ongelman korjautumisesta sen verran intoa, että tein uuden ominaisuuden cpChipmunkiin. :D
Nyt kaikki törmäykset on mahdollista hakea. Eli siis nyt voit tarkistaa onko vaikka kuskin pää osunut mihinkään. Törmäysten rekisteröinnin saa päälle komennolla cpEnableContactGraph(True). Oletuksena se on poissa päältä. Listan rungon törmäyksistä voi hakea komennolla cpBodyGetArbiters. Päivitin autoesimerkkin näyttämään missä kohtaa auton kori törmää johonkin. Lisäsin myös aloitusviestiin tiedot uusista funktioista ja sieltä löytyy myös latauslinkki.

Kaikki ehdotukset uusista ominaisuuksista ja muutoksista otetaan vastaan.
User avatar
Substance
Active Member
Posts: 234
Joined: Fri Mar 14, 2008 5:48 pm

Re: cbChipmunk 0.6 (Fysiikkakirjasto)

Post by Substance »

Loistavaa työtä! Homma tuntuu toimivan ja pystyn taas jatkamaan pelintekoa : D
Substance aka LittleGreen
Red Encounter - shoot'em uppia - lataus
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: cbChipmunk 0.6 (Fysiikkakirjasto)

Post by MaGetzUb »

Mukavalta näyttää tuo vesi kyllä, ja yllättävän nopeasti pyöri... maksimissaan 30 FPS läppärilläni yli 2900 partikkelilla.. :)
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: cbChipmunk 0.6.2 (Fysiikkakirjasto)

Post by Latexi95 »

Uusi versio esillä. Havaitsin bugin cpBodyGetArbiters funktiossa mikä aiheutti kaatumisen mikäli runko sattuu koskemaan useampaan toiseen runkoon kerralla. Sain sen korjattua ja lisäksi tein raycastingiin soveltuvat funktiot. Lisätietoja niistä aloitusviestissä ja paketissa tulevassa esimerkissä. Runkojen nukkuminen toimii nyt. Joten mikäli runko on paikallaa hetken eikä siihen vaikuta mitään ulkoisia voimia, se vaipuu horrokseen ja kuluttaa vain hieman prosessori aikaa. Rungot heräävät unesta heti, kun niihin törmätään tai kun niihin muuten vaikuttaa voimia.
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: cbChipmunk 0.6.3 (Fysiikkakirjasto)

Post by Latexi95 »

Ja heti perään lisää päivitystä. Tällä kertaa tein pieniä korjauksia löytyneisiin bugeihin(en edes muista enää mihin...) ja yksi uusi funktio eli cpSetDamping jolla voidaan asettaa runkojen liikkeen hidastuminen.
Tein myös uuden esimerkin joka löytyy paketista. Se esittelee raycasting systeemin käyttömahdollisuuden räiskintäpelin laserina.
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: cbChipmunk 0.6.3 (Fysiikkakirjasto)

Post by Latexi95 »

Luulen, että cpChipmunk kaipaa cb:n editoriin integroituja ohjeita. Nyt ohjeita on todella hankala katsoa täältä ja eivätkä ne kuitenkaan kovin kummoiset ole. Pitänee tehdä jokin pieni ohjelma, jonka avulla saisi kätevästi tehtyä nuo html - ohjeet.

Edit: Keksin, että jonkinlaiset siiven (lue lentokoneen) fysiikat voisivat olla kiva lisä... ;)

Edit2: Jos saan koodia vähän siistimmäksi, niin voi olla, että siirrän kehityksen GitHubiin kaikkien näkyville ja muokattavaksi.
Post Reply