01: /*
02: * Copyright (c) 2002 Silvere Martin-Michiellot All Rights Reserved.
03: *
04: * Silvere Martin-Michiellot grants you ("Licensee") a non-exclusive,
05: * royalty free, license to use, modify and redistribute this
06: * software in source and binary code form,
07: * provided that i) this copyright notice and license appear on all copies of
08: * the software; and ii) Licensee does not utilize the software in a manner
09: * which is disparaging to Silvere Martin-Michiellot.
10: *
11: * This software is provided "AS IS," without a warranty of any kind. ALL
12: * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
13: * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
14: * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. Silvere Martin-Michiellot
15: * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES
16: * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
17: * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
18: * Silvere Martin-Michiellot OR ITS LICENSORS BE LIABLE
19: * FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
20: * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
21: * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
22: * OR INABILITY TO USE SOFTWARE, EVEN IF Silvere Martin-Michiellot HAS BEEN
23: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
24: *
25: * This software is not designed or intended for use in on-line control of
26: * aircraft, air traffic, aircraft navigation or aircraft communications; or in
27: * the design, construction, operation or maintenance of any nuclear
28: * facility. Licensee represents and warrants that it will not use or
29: * redistribute the Software for such purposes.
30: *
31: */
32:
33: // This code is reimplemented after the package edu.columbia.cs.cgui.j3d from Blaine Bell and is Copyright 2001 Columbia University, All Rights Reserved.
34: // Site ?
35: // Email blaine@cs.columbia.edu
36:
37: package com.db.layers.overlay;
38:
39: import javax.media.j3d.*;
40: import javax.vecmath.*;
41:
42: /**
43: * OverlayBehavior should be added to ensure proper functionning of the Overlay system.
44: * Basically it updates the ViewModel after after the scheduler has started thus providing the appropriate values for the Overlay transform.
45: */
46: public class OverlayBehavior extends Behavior {
47:
48: OverlayGroup overlayGroup;
49: WakeupOnElapsedFrames w;
50: boolean first;
51:
52: public OverlayBehavior(OverlayGroup overlayGroup) {
53:
54: super ();
55:
56: this .overlayGroup = overlayGroup;
57: w = new WakeupOnElapsedFrames(0);
58: first = true;
59:
60: }
61:
62: public void initialize() {
63:
64: this .wakeupOn(w);
65:
66: }
67:
68: public void processStimulus(java.util.Enumeration criteria) {
69:
70: if (first) {
71: overlayGroup.updatePlacement();
72: first = false;
73: }
74:
75: }
76:
77: /**
78: * Returns the OverlayGroup given as an argument in the constructor.
79: */
80: public OverlayGroup getOverlayGroup() {
81:
82: return this .overlayGroup;
83:
84: }
85:
86: /**
87: * This method must be called if any parameters of the View Model Changes or the Z value is changed.
88: * Call this method instead of using OverlayGroup.updatePlacement() if you are using this behavior.
89: */
90: public void updatePlacement() {
91:
92: first = false;
93: this.wakeupOn(w);
94:
95: }
96:
97: }
|