The Animated 3D Sprite

Figure 19-5 shows the visible methods of AnimSprite3D.

The interface of this class is almost identical to Sprite3D (from the Tour3D application in Chapter 18). The setPosition(), moveBy(), and doRotateY() operations adjust the position and orientation of the sprite, isActive() and setActive() relate to the sprite's activity (i.e., whether it is visible on the screen or not), getCurrLoc() returns the sprite's position, and getTG() returns its top-level TransformGroup.

The only new method is setPose(), which takes a pose name as an argument and changes the displayed model accordingly. Its implementation is explained later in this section.

Scene graph for the application

Figure 19-4. Scene graph for the application

The public methods of AnimSprite3D

Figure 19-5. The public methods of AnimSprite3D

Loading the Poses

The choice of models is hardwired into AnimSprite3D, which makes things simpler than having to deal with arbitrary input. The names of the models are predefined in the poses[] array:

    private final static String poses[] =
           {"stand", "walk1", "walk2", "rev1", "rev2", "rotClock",
            "rotCC", "mleft", "mright", "punch1", "punch2"};

The names in poses[] are used by loadPoses() to load the same-named 3D Studio Max files using PropManager. The loaded models (the different sprite poses) are attached to the scene using a Java 3D Switch

Get Killer Game Programming in Java now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.