View Javadoc

1   /* -------------------------------------------------------------------
2    * Java source file for the class AmbientLight
3    * 
4    * Copyright (c), 2003, Masahiro Takatsuka.
5    * All Rights Researved.
6    * 
7    * Original Author: Masahiro Takatsuka (masa@jbeans.net)
8    * $Author: takatsukam $
9    * 
10   * $Date: 2004/03/03 11:53:05 $
11   * 
12   * $Id: AmbientLight.java,v 1.3 2004/03/03 11:53:05 takatsukam Exp $
13   * 
14   * Reference:		Document no:
15   * ___				___
16   * 
17   * To Do:
18   * ___
19   * 
20  ------------------------------------------------------------------- */
21  
22  /* --------------------------- Package ---------------------------- */
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                   Implementation of class AmbientLight                 
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);		// turn it on as default.
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  		/* ----------------------- from Light.class ----------------------- */
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  		/* ----------------------- from Node.class ------------------------ */
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 }// AmbientLight