Code for "Creating new croquet objects" pages 81-93

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Code for "Creating new croquet objects" pages 81-93

Carlos Crosetti
Hi, I found this section of the SDK doc very nice, but as I had to add
some code, I guess someone else will try reusing from TCube, but I
took the path of adding TMyCube to isolate the tutorial from the
build.

1. Find the checker.bmp bitmap and copy it into rchecker.bmp, edit
using mspaint or equivalent to change black squares into red.
2. File-in the class TMyCube (icluded below)
3. Add the local object myCube to SimpleWorld>>initialize

Simpleworld>>initialize
initialize
 | space portal sky win p3 pic myCube |
"added instVar myCube"

"ommited some code"

"this code at the end of the method"
 myCube := TMyCube new.
 myCube translation: 1@2@3.
 space addChild: myCube.


4. Start Croquet(Master)

Clicking on the box makes the box move with circular trajectory
Clicking on the moving object stops the animation

The codo for TMyCube (transcript from SDK)

'From Croquet1.0beta of 11 April 2006 [latest update: #2] on 6 May
2008 at 11:33:51 pm'!
TFrame subclass: #TMyCube
        instanceVariableNames: 'txtr boundSphere move'
        classVariableNames: ''
        poolDictionaries: ''
        category: 'Croquet-Practice'!
!TMyCube commentStamp: '<historical>' prior: 0!
Added by Carlos!


!TMyCube methodsFor: 'as yet unclassified' stamp: 'cc 5/6/2008 22:15'!
boundSphere
        ^boundSphere! !

!TMyCube methodsFor: 'as yet unclassified' stamp: 'cc 5/6/2008 22:17'!
eventMask
        ^EventPointerDown! !

!TMyCube methodsFor: 'as yet unclassified' stamp: 'cc 5/6/2008 23:22'!
initialize
        super initialize.
        txtr := TTexture new initializeWithFileName: 'rchecker.bmp'
                mipmap: true shrinkFit: false.
        boundSphere := TBoundSphere localPosition: (0@0@0)
                radius: (3 sqrt).
        boundSphere frame: self.
        move := false
       
! !

!TMyCube methodsFor: 'as yet unclassified' stamp: 'cc 5/6/2008 22:17'!
pick: atRay
        ^true! !

!TMyCube methodsFor: 'as yet unclassified' stamp: 'cc 5/6/2008 23:23'!
pointerDown: aCroquetEvent
        move := move not.
        self update.! !

!TMyCube methodsFor: 'as yet unclassified' stamp: 'cc 5/6/2008 20:45'!
render: ogl

        | dx dy dz |

        dx := 1.0.
        dy := 1.0.
        dz := 1.0.

      txtr ifNotNil: [txtr enable: ogl].

        ogl glBegin( GLQuads).
        ogl glNormal3f( 0.0, 0.0, 1.0).

        ogl glTexCoord2f(0.0, 0.0). "1"
        ogl glVertex3f( dx negated, dy, dz).
        ogl glTexCoord2f(0.0, 1.0). "2"
        ogl glVertex3f( dx negated, dy negated, dz).
        ogl glTexCoord2f(1.0, 1.0). "3"
        ogl glVertex3f( dx, dy negated, dz).
        ogl glTexCoord2f(1.0, 0.0). "4"
        ogl glVertex3f( dx, dy, dz).

        ogl glTexCoord2f(0.0, 0.0). "1"
        ogl glVertex3f( dx, dy, dz negated).
        ogl glTexCoord2f(0.0, 1.0). "2"
        ogl glVertex3f( dx, dy negated, dz negated).
        ogl glTexCoord2f(1.0, 1.0). "3"
        ogl glVertex3f( dx negated, dy negated, dz negated).
        ogl glTexCoord2f(1.0, 0.0). "4"
        ogl glVertex3f( dx negated, dy, dz negated).

        ogl glTexCoord2f(0.0, 0.0). "1"
        ogl glVertex3f( dx, dy, dz ).
        ogl glTexCoord2f(0.0, 1.0). "2"
        ogl glVertex3f( dx, dy negated, dz).
        ogl glTexCoord2f(1.0, 1.0). "3"
        ogl glVertex3f( dx, dy negated, dz negated).
        ogl glTexCoord2f(1.0, 0.0). "4"
        ogl glVertex3f( dx, dy, dz negated).

        ogl glTexCoord2f(0.0, 0.0). "1"
        ogl glVertex3f( dx negated, dy, dz negated).
        ogl glTexCoord2f(0.0, 1.0). "2"
        ogl glVertex3f( dx negated, dy negated, dz negated).
        ogl glTexCoord2f(1.0, 1.0). "3"
        ogl glVertex3f( dx negated, dy negated, dz).
        ogl glTexCoord2f(1.0, 0.0). "4"
        ogl glVertex3f( dx negated, dy, dz).

        ogl glTexCoord2f(0.0, 0.0). "1"
        ogl glVertex3f( dx, dy, dz).
        ogl glTexCoord2f(0.0, 1.0). "2"
        ogl glVertex3f( dx, dy, dz negated).
        ogl glTexCoord2f(1.0, 1.0). "3"
        ogl glVertex3f( dx negated, dy, dz negated).
        ogl glTexCoord2f(1.0, 0.0). "4"
        ogl glVertex3f( dx negated, dy, dz).

        ogl glTexCoord2f(0.0, 0.0). "1"
        ogl glVertex3f( dx negated, dy negated, dz negated).
        ogl glTexCoord2f(0.0, 1.0). "2"
        ogl glVertex3f( dx, dy negated, dz negated).
        ogl glTexCoord2f(1.0, 1.0). "3"
        ogl glVertex3f( dx, dy negated, dz).
        ogl glTexCoord2f(1.0, 0.0). "4"
        ogl glVertex3f( dx negated, dy negated, dz).

        ogl glEnd.
        txtr ifNotNil: [txtr disable: ogl].
! !

!TMyCube methodsFor: 'as yet unclassified' stamp: 'cc 5/6/2008 23:24'!
update
        | t delta |
        move ifFalse: [^self].
        t := self island time.
        delta := 3 * (t sin @ t cos @ (t sin * t cos)).
        self translation: delta.
        (self future: 50) update.! !


--
Carlos Crosetti