1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package net.jbeans.j3d.light;
24
25 /* ------------------ Import classes (packages) ------------------- *//package-summary/html">class="comment"> ------------------ Import classes (packages) ------------------- *//package-summary.html">class="comment">/* ------------------ Import classes (packages) ------------------- *//package-summary.html">class="comment"> ------------------ Import classes (packages) ------------------- */
26 import java.awt.*;
27 import java.io.*;
28 import javax.media.j3d.Light;
29 import javax.media.j3d.Node;
30 import javax.vecmath.*;
31
32 import net.jbeans.j3d.util.*;
33
34
35
36
37 /***
38 * net.jbeans.j3d.light.AmbientLight is a JavaBeanized
39 * javax.media.j3d.AmbientLight
40 *
41 * @version $Revision: 1.3 $
42 * @author Masahiro Takatsuka (masa@jbeans.net)
43 * @see javax.media.j3d.AmbientLight
44 * @see Serializable
45 */
46
47 public final class AmbientLight extends javax.media.j3d.AmbientLight implements Serializable {
48 transient private Color3f color;
49
50 public AmbientLight() {
51 this(true, LightUtil.WHITE);
52 }
53
54 public AmbientLight(Color3f color3f) {
55 this(true, color3f);
56 }
57
58 public AmbientLight(boolean lightOn, Color3f color3f) {
59 super(lightOn, color3f);
60 setEnable(true);
61 this.color = new Color3f();
62
63 initialize();
64 }
65
66 private final void initialize() {
67 setCapabilities();
68 }
69
70 private final void setCapabilities() {
71 setInfluencingBounds(J3DUtil.DEFAULT_BOUNDS);
72
73
74 setCapability(Light.ALLOW_COLOR_READ);
75 setCapability(Light.ALLOW_COLOR_WRITE);
76
77 setCapability(Light.ALLOW_INFLUENCING_BOUNDS_READ);
78 setCapability(Light.ALLOW_INFLUENCING_BOUNDS_WRITE);
79
80 setCapability(Light.ALLOW_INFLUENCING_BOUNDS_READ);
81 setCapability(Light.ALLOW_INFLUENCING_BOUNDS_WRITE);
82
83 setCapability(Light.ALLOW_SCOPE_READ);
84 setCapability(Light.ALLOW_SCOPE_WRITE);
85
86 setCapability(Light.ALLOW_STATE_READ);
87 setCapability(Light.ALLOW_STATE_WRITE);
88
89
90 setCapability(Node.ALLOW_AUTO_COMPUTE_BOUNDS_READ);
91 setCapability(Node.ALLOW_AUTO_COMPUTE_BOUNDS_WRITE);
92
93 setCapability(Node.ALLOW_BOUNDS_READ);
94 setCapability(Node.ALLOW_BOUNDS_WRITE);
95
96 setCapability(Node.ALLOW_COLLIDABLE_READ);
97 setCapability(Node.ALLOW_COLLIDABLE_WRITE);
98
99 setCapability(Node.ALLOW_LOCAL_TO_VWORLD_READ);
100
101 setCapability(Node.ALLOW_PICKABLE_READ);
102 setCapability(Node.ALLOW_PICKABLE_WRITE);
103 }
104
105 public void setColor(Color color) {
106 if (this.color == null) {
107 this.color = new Color3f(color);
108 } else {
109 this.color.set(color);
110 }
111 setColor(this.color);
112 }
113
114 public Color getColor() {
115 if (this.color == null) {
116 this.color = new Color3f();
117 }
118 getColor(this.color);
119
120 return new Color(this.color.x, this.color.y, this.color.z);
121 }
122
123 public Light getAmbientLight() {
124 return this;
125 }
126
127 /***
128 * Serialization methods
129 */
130 private void readObject(ObjectInputStream s) throws ClassNotFoundException, IOException {
131 boolean state = s.readBoolean();
132 setEnable(state);
133
134 Color3f color = (Color3f) s.readObject();
135 setColor(color);
136
137 initialize();
138 }
139
140 /***
141 * Serialization methods
142 */
143 private void writeObject(ObjectOutputStream s) throws IOException {
144 s.writeBoolean(getEnable());
145
146 getColor(this.color);
147 s.writeObject(this.color);
148 }
149 }