Chapter 29. Networking Basics


Displaying Leaves

An ImagesCsSeries object is a quadrilateral (quad), centered at (0, 0, 0), that can display an image from a series passed to it in an ImageComponent2D array. Only the opaque parts of the image are shown, and the quad is invisible. The quad is a subclass of OrientedShape3D, configured to rotate around the point (0, 0, zCoord) relative to its origin.

The first image in the array is automatically displayed, but then methods must be called to change the picture; there is no default animation.

A version of ImageCsSeries with animation can be found in FPShooter3D in Chapter 24.


The constructor sets up the rotation point:

     public ImageCsSeries(float zCoord, float screenSize, ImageComponent2D[] ims)     { this.ims = ims;       imIndex = 0;       numImages = ims.length;       // set the orientation mode      setAlignmentMode(OrientedShape3D.ROTATE_ABOUT_POINT);       setRotationPoint(0.0f, 0.0f, zCoord);       createGeometry(screenSize);       createAppearance( );     }

A look back at the makeLeaves( ) method, used by the leaf creation rule, shows that two ImageCsSeries screens are created with different rotation points: one 0.5 units in front of its location and the other 0.5 units behind. This means that the two screens will rotate differently as the user's viewpoint moves around a tree. This creates a much larger mass of leaves that always seems to surround the tree limb, as illustrated by Figure 28-5.

Figure 28-5. Leaves around each limb


The createGeometry( ) and createAppearance( ) methods are unchanged from the version of the class in FPShooter3D in Chapter 24. The geometry is a mix of coordinates and texture information. The appearance employs a blended form of transparency so transparent parts of the image won't be rendered.

The ImageCsSeries class in FPShooter3D uses a time-delayed loop triggered by a call to showSeries( ). The trees3D version has several methods for replacing the currently displayed image with another one. Here is one example:

     public void showNext( )     // show the next image in the sequence     { if (imIndex < numImages-1) {         imIndex++;         texture.setImage(0, ims[imIndex]);       }     }



Killer Game Programming in Java
Killer Game Programming in Java
ISBN: 0596007302
EAN: 2147483647
Year: 2006
Pages: 340

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net