diff options
Diffstat (limited to 'js/lib/rdge/materials/flat-material.js')
-rwxr-xr-x | js/lib/rdge/materials/flat-material.js | 141 |
1 files changed, 52 insertions, 89 deletions
diff --git a/js/lib/rdge/materials/flat-material.js b/js/lib/rdge/materials/flat-material.js index 5030cc88..9442ae5b 100755 --- a/js/lib/rdge/materials/flat-material.js +++ b/js/lib/rdge/materials/flat-material.js | |||
@@ -14,129 +14,92 @@ var FlatMaterial = function FlatMaterial() { | |||
14 | /////////////////////////////////////////////////////////////////////// | 14 | /////////////////////////////////////////////////////////////////////// |
15 | // Instance variables | 15 | // Instance variables |
16 | /////////////////////////////////////////////////////////////////////// | 16 | /////////////////////////////////////////////////////////////////////// |
17 | this._name = "FlatMaterial"; | 17 | this._name = "FlatMaterial"; |
18 | this._shaderName = "flat"; | 18 | this._shaderName = "flat"; |
19 | 19 | ||
20 | this._color = [1,0,0,1]; | 20 | this._color = [1, 0, 0, 1]; |
21 | 21 | ||
22 | /////////////////////////////////////////////////////////////////////// | 22 | /////////////////////////////////////////////////////////////////////// |
23 | // Property Accessors | 23 | // Property Accessors |
24 | /////////////////////////////////////////////////////////////////////// | 24 | /////////////////////////////////////////////////////////////////////// |
25 | this.getColor = function() { return this._color; }; | 25 | this.getColor = function () { return this._color; }; |
26 | this.getShaderName = function() { return this._shaderName; }; | 26 | this.getShaderName = function () { return this._shaderName; }; |
27 | 27 | ||
28 | this.isAnimated = function() { return false; }; | 28 | this.isAnimated = function () { return false; }; |
29 | this.hasVertexDeformation = function() { return true; }; | 29 | this.hasVertexDeformation = function () { return true; }; |
30 | this._hasVertexDeformation = true; | 30 | this._hasVertexDeformation = true; |
31 | this._vertexDeformationTolerance = 0.2; | 31 | this._vertexDeformationTolerance = 0.2; |
32 | 32 | ||
33 | //////////////////////////////////s///////////////////////////////////// | 33 | //////////////////////////////////s///////////////////////////////////// |
34 | // Methods | 34 | // Methods |
35 | /////////////////////////////////////////////////////////////////////// | 35 | /////////////////////////////////////////////////////////////////////// |
36 | // duplcate method requirde | 36 | // duplcate method requirde |
37 | this.dup = function() { return new FlatMaterial(); } ; | 37 | this.dup = function () { return new FlatMaterial(); }; |
38 | 38 | ||
39 | this.init = function( world ) | 39 | this.init = function (world) { |
40 | { | 40 | // save the world |
41 | // save the world | 41 | if (world) { |
42 | if (world) | 42 | this.setWorld(world); |
43 | { | ||
44 | this.setWorld( world ); | ||
45 | 43 | ||
46 | // set up the shader | 44 | // set up the shader |
47 | this._shader = new jshader(); | 45 | this._shader = new RDGE.jshader(); |
48 | this._shader.def = flatShaderDef; | 46 | this._shader.def = flatShaderDef; |
49 | this._shader.init(); | 47 | this._shader.init(); |
50 | 48 | ||
51 | // set the defaults | 49 | // set the defaults |
52 | this._shader.colorMe.color.set( this.getColor() ); | 50 | this._shader.colorMe.color.set(this.getColor()); |
53 | 51 | ||
54 | // set up the material node | 52 | // set up the material node |
55 | this._materialNode = createMaterialNode("flatMaterial_" + world.generateUniqueNodeID() ); | 53 | this._materialNode = RDGE.createMaterialNode("flatMaterial_" + world.generateUniqueNodeID()); |
56 | this._materialNode.setShader(this._shader); | 54 | this._materialNode.setShader(this._shader); |
57 | } | 55 | } |
58 | else | 56 | else |
59 | throw new Error( "GLWorld not supplied to material initialization" ); | 57 | throw new Error("GLWorld not supplied to material initialization"); |
60 | }; | 58 | }; |
61 | 59 | ||
62 | 60 | ||
63 | /////////////////////////////////////////////////////////////////////// | 61 | /////////////////////////////////////////////////////////////////////// |
64 | // Material Property Accessors | 62 | // Material Property Accessors |
65 | /////////////////////////////////////////////////////////////////////// | 63 | /////////////////////////////////////////////////////////////////////// |
66 | this._propNames = ["color"]; | 64 | this._propNames = ["color"]; |
67 | this._propLabels = ["Color"]; | 65 | this._propLabels = ["Color"]; |
68 | this._propTypes = ["color"]; | 66 | this._propTypes = ["color"]; |
69 | this._propValues = []; | 67 | this._propValues = []; |
70 | 68 | ||
71 | this._propValues[ this._propNames[0] ] = this._color; | 69 | this._propValues[this._propNames[0]] = this._color; |
72 | 70 | ||
73 | this.setProperty = function( prop, value ) { | 71 | this.setProperty = function (prop, value) { |
74 | // make sure we have legitimate input | 72 | // make sure we have legitimate input |
75 | if (this.validateProperty( prop, value )) { | 73 | if (this.validateProperty(prop, value)) { |
76 | this._propValues[prop] = value; | 74 | this._propValues[prop] = value; |
77 | if (this._shader && this._shader.colorMe) { | 75 | if (this._shader && this._shader.colorMe) { |
78 | this._shader.colorMe[prop].set(value); | 76 | this._shader.colorMe[prop].set(value); |
79 | } | 77 | } |
80 | } | ||
81 | }; | ||
82 | /////////////////////////////////////////////////////////////////////// | ||
83 | |||
84 | this.export = function() | ||
85 | { | ||
86 | // this function should be overridden by subclasses | ||
87 | var exportStr = "material: " + this.getShaderName() + "\n"; | ||
88 | exportStr += "name: " + this.getName() + "\n"; | ||
89 | exportStr += "color: " + String(this._propValues["color"]) + "\n"; | ||
90 | exportStr += "endMaterial\n"; | ||
91 | |||
92 | return exportStr; | ||
93 | }; | ||
94 | |||
95 | this.import = function( importStr ) { | ||
96 | var pu = new MaterialParser( importStr ); | ||
97 | var material = pu.nextValue( "material: " ); | ||
98 | if (material != this.getShaderName()) throw new Error( "ill-formed material" ); | ||
99 | this.setName( pu.nextValue( "name: ") ); | ||
100 | |||
101 | var rtnStr; | ||
102 | try | ||
103 | { | ||
104 | var color = eval( "[" + pu.nextValue( "color: " ) + "]" ); | ||
105 | this.setProperty( "color", color); | ||
106 | } | ||
107 | catch (e) | ||
108 | { | ||
109 | throw new Error( "could not import material: " + importStr ); | ||
110 | } | 78 | } |
111 | |||
112 | return rtnStr; | ||
113 | }; | 79 | }; |
80 | /////////////////////////////////////////////////////////////////////// | ||
114 | 81 | ||
115 | this.exportJSON = function() | 82 | this.exportJSON = function () { |
116 | { | 83 | var jObj = |
117 | var jObj = | ||
118 | { | 84 | { |
119 | 'material' : this.getShaderName(), | 85 | 'material': this.getShaderName(), |
120 | 'name' : this.getName(), | 86 | 'name': this.getName(), |
121 | 'color' : this._propValues["color"] | 87 | 'color': this._propValues["color"] |
122 | }; | 88 | }; |
123 | 89 | ||
124 | return jObj; | 90 | return jObj; |
125 | } | 91 | }; |
126 | 92 | ||
127 | this.importJSON = function( jObj ) | 93 | this.importJSON = function (jObj) { |
128 | { | 94 | if (this.getShaderName() != jObj.material) throw new Error("ill-formed material"); |
129 | if (this.getShaderName() != jObj.material) throw new Error( "ill-formed material" ); | 95 | this.setName(jObj.name); |
130 | this.setName( jObj.name ); | ||
131 | |||
132 | var color = jObj.color; | ||
133 | this.setProperty( "color", color); | ||
134 | } | ||
135 | 96 | ||
136 | this.update = function( time ) | 97 | var color = jObj.color; |
137 | { | 98 | this.setProperty("color", color); |
138 | }; | 99 | }; |
139 | 100 | ||
101 | this.update = function (time) { | ||
102 | }; | ||
140 | }; | 103 | }; |
141 | 104 | ||
142 | /////////////////////////////////////////////////////////////////////////////////////// | 105 | /////////////////////////////////////////////////////////////////////////////////////// |