Shooting Behavior
ShootingBehaviour
is a subclass of PickMouseBehavior, which controls the various shooting-related entities when the user clicks the mouse. The gun cone and laser beam are rotated to point at the placed clicked on the checkerboard. Then, a FireBeam thread is created to move (fire) the beam towards the location and display the explosion.
ShootingBehaviour's central role in the application means that it has passed references to the GunTurret, LaserBeam, and ExplosionsClip objects. In the first version of this class, the code was complex since it dealt directly with the TransformGroups and Shape3Ds of the shooting elements. Good OOD of the application entities (e.g., hiding subgraph details and computation) leads to a halving of ShootingBehaviour's code length, making it easier to understand, maintain, and modify.
The ShootingBehaviour constructor is similar to the constructor in ExamplePickBehavior:
public ShootingBehaviour(Canvas3D canvas, BranchGroup root,
Bounds bounds, Point3d sp, ExplosionsClip ec,
LaserBeam lb, GunTurret g)
{ super(canvas, root, bounds);
setSchedulingBounds(bounds);
pickCanvas.setMode(PickCanvas.GEOMETRY_INTERSECT_INFO);
// allows PickIntersection objects to be returned
startPt = sp; // location of the gun cone
explsClip = ec;
laser = lb;
gun = g;
// other initialization code...
}
updateScene() is similar to the one in ExamplePickBehavior since it requires intersection information. updateScene() rotates the gun cone and beam to point at the ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access