jax 0.0.0.5 → 0.0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +26 -1
- data/Rakefile +3 -1
- data/builtin/shaders/picking/common.ejs +2 -0
- data/builtin/shaders/picking/fragment.ejs +4 -0
- data/builtin/shaders/picking/material.js +14 -0
- data/builtin/shaders/picking/vertex.ejs +24 -0
- data/lib/jax/generators/app/templates/public/javascripts/jax.js +289 -681
- data/lib/jax/generators/app/templates/spec/javascripts/support/spec_layout.html.erb +55 -2
- data/lib/jax/generators/shader/templates/common.ejs.tt +2 -2
- data/lib/jax/packager/sprockets_template.rb +1 -4
- data/lib/jax/routes.rb +3 -0
- data/lib/jax/version.rb +1 -1
- data/spec/example_app/app/controllers/noise_controller.js +37 -5
- data/spec/example_app/app/controllers/picking_controller.js +32 -0
- data/spec/example_app/app/helpers/picking_helper.js +3 -0
- data/spec/example_app/app/models/blob.js +38 -0
- data/spec/example_app/app/resources/blobs/default.yml +2 -0
- data/spec/example_app/app/resources/materials/blob.yml +2 -2
- data/spec/example_app/app/shaders/blob/common.ejs +8 -13
- data/spec/example_app/app/shaders/blob/fragment.ejs +1 -1
- data/spec/example_app/app/shaders/blob/material.js +15 -12
- data/spec/example_app/app/shaders/blob/vertex.ejs +33 -8
- data/spec/example_app/app/views/picking/index.js +4 -0
- data/spec/example_app/config/routes.rb +1 -0
- data/spec/example_app/spec/javascripts/controllers/picking_controller_spec.js +11 -0
- data/spec/example_app/spec/javascripts/helpers/picking_helper_spec.js +12 -0
- data/spec/example_app/spec/javascripts/models/blob_spec.js +11 -0
- data/spec/example_app/spec/javascripts/support/spec_layout.html.erb +40 -2
- data/spec/javascripts/jax/model_spec.js +10 -0
- data/spec/javascripts/jax/world_spec.js +74 -1
- data/spec/javascripts/shaders/preprocessor_spec.js +35 -0
- data/src/constants.yml +1 -1
- data/src/jax.js +30 -8
- data/src/jax/anim_frame.js +6 -2
- data/src/jax/builtin/meshes/cube.js +22 -1
- data/src/jax/builtin/meshes/plane.js +27 -0
- data/src/jax/builtin/meshes/quad.js +7 -1
- data/src/jax/builtin/meshes/sphere.js +20 -1
- data/src/jax/builtin/meshes/teapot.js +10 -0
- data/src/jax/builtin/meshes/torus.js +18 -0
- data/src/jax/compatibility.js +165 -2
- data/src/jax/context.js +176 -9
- data/src/jax/core.js +6 -3
- data/src/jax/core/math.js +18 -3
- data/src/jax/core/matrix_stack.js +4 -3
- data/src/jax/core/util.js +15 -0
- data/src/jax/events.js +67 -12
- data/src/jax/geometry.js +5 -1
- data/src/jax/geometry/plane.js +59 -5
- data/src/jax/{controller.js → mvc/controller.js} +38 -0
- data/src/jax/mvc/helper.js +35 -0
- data/src/jax/mvc/model.js +301 -0
- data/src/jax/{route_set.js → mvc/route_set.js} +0 -0
- data/src/jax/{view.js → mvc/view.js} +6 -0
- data/src/jax/{view_manager.js → mvc/view_manager.js} +1 -0
- data/src/jax/noise.js +13 -0
- data/src/jax/prototype/class.js +3 -0
- data/src/jax/prototype/extensions.js +26 -8
- data/src/jax/webgl/camera.js +6 -6
- data/src/jax/webgl/core/framebuffer.js +4 -4
- data/src/jax/webgl/material.js +16 -0
- data/src/jax/webgl/mesh.js +19 -4
- data/src/jax/webgl/scene/light_manager.js +8 -0
- data/src/jax/webgl/scene/light_source.js +3 -3
- data/src/jax/webgl/shader.js +4 -2
- data/src/jax/webgl/shader_chain.js +1 -0
- data/src/jax/webgl/world.js +157 -6
- data/vendor/glmatrix/glMatrix.js +365 -408
- metadata +32 -10
- data/src/jax/helper.js +0 -8
- data/src/jax/model.js +0 -163
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: jax
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.0.
|
5
|
+
version: 0.0.0.6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Colin MacKenzie IV
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-05-
|
13
|
+
date: 2011-05-28 00:00:00 -04:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -216,6 +216,10 @@ files:
|
|
216
216
|
- builtin/shaders/paraboloid/manifest.yml
|
217
217
|
- builtin/shaders/paraboloid/material.js
|
218
218
|
- builtin/shaders/paraboloid/vertex.ejs
|
219
|
+
- builtin/shaders/picking/common.ejs
|
220
|
+
- builtin/shaders/picking/fragment.ejs
|
221
|
+
- builtin/shaders/picking/material.js
|
222
|
+
- builtin/shaders/picking/vertex.ejs
|
219
223
|
- builtin/shaders/shadow_map/common.ejs
|
220
224
|
- builtin/shaders/shadow_map/fragment.ejs
|
221
225
|
- builtin/shaders/shadow_map/manifest.yml
|
@@ -429,14 +433,18 @@ files:
|
|
429
433
|
- spec/example_app/app/controllers/courthouse_controller.js
|
430
434
|
- spec/example_app/app/controllers/lighting_controller.js
|
431
435
|
- spec/example_app/app/controllers/noise_controller.js
|
436
|
+
- spec/example_app/app/controllers/picking_controller.js
|
432
437
|
- spec/example_app/app/controllers/shadows_controller.js
|
433
438
|
- spec/example_app/app/controllers/textures_controller.js
|
434
439
|
- spec/example_app/app/helpers/application_helper.js
|
435
440
|
- spec/example_app/app/helpers/noise_helper.js
|
441
|
+
- spec/example_app/app/helpers/picking_helper.js
|
436
442
|
- spec/example_app/app/helpers/textures_helper.js
|
443
|
+
- spec/example_app/app/models/blob.js
|
437
444
|
- spec/example_app/app/models/character.js
|
438
445
|
- spec/example_app/app/models/door.js
|
439
446
|
- spec/example_app/app/models/scene.js
|
447
|
+
- spec/example_app/app/resources/blobs/default.yml
|
440
448
|
- spec/example_app/app/resources/characters/judge.yml
|
441
449
|
- spec/example_app/app/resources/doors/courthouse_door.yml
|
442
450
|
- spec/example_app/app/resources/light_sources/directional_light.yml
|
@@ -456,6 +464,7 @@ files:
|
|
456
464
|
- spec/example_app/app/views/courthouse/index.js
|
457
465
|
- spec/example_app/app/views/lighting/index.js
|
458
466
|
- spec/example_app/app/views/noise/index.js
|
467
|
+
- spec/example_app/app/views/picking/index.js
|
459
468
|
- spec/example_app/app/views/shadows/index.js
|
460
469
|
- spec/example_app/app/views/textures/index.js
|
461
470
|
- spec/example_app/config/application.rb
|
@@ -469,9 +478,12 @@ files:
|
|
469
478
|
- spec/example_app/public/webgl_not_supported.html
|
470
479
|
- spec/example_app/script/jax
|
471
480
|
- spec/example_app/spec/javascripts/controllers/noise_controller_spec.js
|
481
|
+
- spec/example_app/spec/javascripts/controllers/picking_controller_spec.js
|
472
482
|
- spec/example_app/spec/javascripts/controllers/textures_controller_spec.js
|
473
483
|
- spec/example_app/spec/javascripts/helpers/application_helper_spec.js
|
474
484
|
- spec/example_app/spec/javascripts/helpers/noise_helper_spec.js
|
485
|
+
- spec/example_app/spec/javascripts/helpers/picking_helper_spec.js
|
486
|
+
- spec/example_app/spec/javascripts/models/blob_spec.js
|
475
487
|
- spec/example_app/spec/javascripts/resources/directional_light_spec.js
|
476
488
|
- spec/example_app/spec/javascripts/resources/point_light_spec.js
|
477
489
|
- spec/example_app/spec/javascripts/resources/spot_light_spec.js
|
@@ -524,6 +536,7 @@ files:
|
|
524
536
|
- spec/javascripts/shaders/lighting_spec.js
|
525
537
|
- spec/javascripts/shaders/normal_map_spec.js
|
526
538
|
- spec/javascripts/shaders/paraboloid_spec.js
|
539
|
+
- spec/javascripts/shaders/preprocessor_spec.js
|
527
540
|
- spec/javascripts/shaders/shadow_map_spec.js
|
528
541
|
- spec/javascripts/shaders/texture_spec.js
|
529
542
|
- spec/javascripts/support/jasmine.yml
|
@@ -547,7 +560,6 @@ files:
|
|
547
560
|
- src/jax/builtin/meshes/torus.js
|
548
561
|
- src/jax/compatibility.js
|
549
562
|
- src/jax/context.js
|
550
|
-
- src/jax/controller.js
|
551
563
|
- src/jax/core.js
|
552
564
|
- src/jax/core/math.js
|
553
565
|
- src/jax/core/matrix_stack.js
|
@@ -555,17 +567,18 @@ files:
|
|
555
567
|
- src/jax/events.js
|
556
568
|
- src/jax/geometry.js
|
557
569
|
- src/jax/geometry/plane.js
|
558
|
-
- src/jax/
|
559
|
-
- src/jax/
|
570
|
+
- src/jax/mvc/controller.js
|
571
|
+
- src/jax/mvc/helper.js
|
572
|
+
- src/jax/mvc/model.js
|
573
|
+
- src/jax/mvc/route_set.js
|
574
|
+
- src/jax/mvc/view.js
|
575
|
+
- src/jax/mvc/view_manager.js
|
560
576
|
- src/jax/noise.js
|
561
577
|
- src/jax/prototype/class.js
|
562
578
|
- src/jax/prototype/core.js
|
563
579
|
- src/jax/prototype/extensions.js
|
564
|
-
- src/jax/route_set.js
|
565
580
|
- src/jax/vendor/ejs.js
|
566
581
|
- src/jax/vendor/glMatrix.js
|
567
|
-
- src/jax/view.js
|
568
|
-
- src/jax/view_manager.js
|
569
582
|
- src/jax/webgl.js
|
570
583
|
- src/jax/webgl/camera.js
|
571
584
|
- src/jax/webgl/core.js
|
@@ -676,7 +689,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
676
689
|
requirements:
|
677
690
|
- - ">="
|
678
691
|
- !ruby/object:Gem::Version
|
679
|
-
hash:
|
692
|
+
hash: 3001490309694748403
|
680
693
|
segments:
|
681
694
|
- 0
|
682
695
|
version: "0"
|
@@ -685,7 +698,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
685
698
|
requirements:
|
686
699
|
- - ">="
|
687
700
|
- !ruby/object:Gem::Version
|
688
|
-
hash:
|
701
|
+
hash: 3001490309694748403
|
689
702
|
segments:
|
690
703
|
- 0
|
691
704
|
version: "0"
|
@@ -703,14 +716,18 @@ test_files:
|
|
703
716
|
- spec/example_app/app/controllers/courthouse_controller.js
|
704
717
|
- spec/example_app/app/controllers/lighting_controller.js
|
705
718
|
- spec/example_app/app/controllers/noise_controller.js
|
719
|
+
- spec/example_app/app/controllers/picking_controller.js
|
706
720
|
- spec/example_app/app/controllers/shadows_controller.js
|
707
721
|
- spec/example_app/app/controllers/textures_controller.js
|
708
722
|
- spec/example_app/app/helpers/application_helper.js
|
709
723
|
- spec/example_app/app/helpers/noise_helper.js
|
724
|
+
- spec/example_app/app/helpers/picking_helper.js
|
710
725
|
- spec/example_app/app/helpers/textures_helper.js
|
726
|
+
- spec/example_app/app/models/blob.js
|
711
727
|
- spec/example_app/app/models/character.js
|
712
728
|
- spec/example_app/app/models/door.js
|
713
729
|
- spec/example_app/app/models/scene.js
|
730
|
+
- spec/example_app/app/resources/blobs/default.yml
|
714
731
|
- spec/example_app/app/resources/characters/judge.yml
|
715
732
|
- spec/example_app/app/resources/doors/courthouse_door.yml
|
716
733
|
- spec/example_app/app/resources/light_sources/directional_light.yml
|
@@ -730,6 +747,7 @@ test_files:
|
|
730
747
|
- spec/example_app/app/views/courthouse/index.js
|
731
748
|
- spec/example_app/app/views/lighting/index.js
|
732
749
|
- spec/example_app/app/views/noise/index.js
|
750
|
+
- spec/example_app/app/views/picking/index.js
|
733
751
|
- spec/example_app/app/views/shadows/index.js
|
734
752
|
- spec/example_app/app/views/textures/index.js
|
735
753
|
- spec/example_app/config/application.rb
|
@@ -743,9 +761,12 @@ test_files:
|
|
743
761
|
- spec/example_app/public/webgl_not_supported.html
|
744
762
|
- spec/example_app/script/jax
|
745
763
|
- spec/example_app/spec/javascripts/controllers/noise_controller_spec.js
|
764
|
+
- spec/example_app/spec/javascripts/controllers/picking_controller_spec.js
|
746
765
|
- spec/example_app/spec/javascripts/controllers/textures_controller_spec.js
|
747
766
|
- spec/example_app/spec/javascripts/helpers/application_helper_spec.js
|
748
767
|
- spec/example_app/spec/javascripts/helpers/noise_helper_spec.js
|
768
|
+
- spec/example_app/spec/javascripts/helpers/picking_helper_spec.js
|
769
|
+
- spec/example_app/spec/javascripts/models/blob_spec.js
|
749
770
|
- spec/example_app/spec/javascripts/resources/directional_light_spec.js
|
750
771
|
- spec/example_app/spec/javascripts/resources/point_light_spec.js
|
751
772
|
- spec/example_app/spec/javascripts/resources/spot_light_spec.js
|
@@ -798,6 +819,7 @@ test_files:
|
|
798
819
|
- spec/javascripts/shaders/lighting_spec.js
|
799
820
|
- spec/javascripts/shaders/normal_map_spec.js
|
800
821
|
- spec/javascripts/shaders/paraboloid_spec.js
|
822
|
+
- spec/javascripts/shaders/preprocessor_spec.js
|
801
823
|
- spec/javascripts/shaders/shadow_map_spec.js
|
802
824
|
- spec/javascripts/shaders/texture_spec.js
|
803
825
|
- spec/javascripts/support/jasmine.yml
|
data/src/jax/helper.js
DELETED
data/src/jax/model.js
DELETED
@@ -1,163 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* class Jax.Model
|
3
|
-
*
|
4
|
-
**/
|
5
|
-
(function() {
|
6
|
-
function initProperties(self, data) {
|
7
|
-
// to make sure sub-properties of data are standalone objects, so that the original data can't be tainted
|
8
|
-
data = Jax.Util.normalizeOptions(data, {});
|
9
|
-
|
10
|
-
var attribute;
|
11
|
-
|
12
|
-
if (data) {
|
13
|
-
for (attribute in data) {
|
14
|
-
switch(attribute) {
|
15
|
-
case 'position': self.camera.setPosition(Jax.Util.vectorize(data[attribute])); break;
|
16
|
-
case 'direction': self.camera.orient(Jax.Util.vectorize(data[attribute])); break;
|
17
|
-
case 'mesh':
|
18
|
-
if (data[attribute].isKindOf(Jax.Mesh)) self.mesh = data[attribute];
|
19
|
-
else throw new Error("Unexpected value for mesh:\n\n"+JSON.stringify(data[attribute]));
|
20
|
-
break;
|
21
|
-
default:
|
22
|
-
self[attribute] = data[attribute];
|
23
|
-
}
|
24
|
-
}
|
25
|
-
}
|
26
|
-
}
|
27
|
-
|
28
|
-
Jax.Model = (function() {
|
29
|
-
return Jax.Class.create({
|
30
|
-
initialize: function(data) {
|
31
|
-
this.camera = new Jax.Camera();
|
32
|
-
|
33
|
-
initProperties(this, Jax.Model.default_properties);
|
34
|
-
if (this._klass && this._klass.resources)
|
35
|
-
initProperties(this, this._klass.resources['default']);
|
36
|
-
initProperties(this, data);
|
37
|
-
|
38
|
-
if (this.after_initialize) this.after_initialize();
|
39
|
-
},
|
40
|
-
|
41
|
-
isShadowCaster: function() { return this.shadow_caster; },
|
42
|
-
|
43
|
-
/**
|
44
|
-
* Jax.Model#render(context) -> undefined
|
45
|
-
*
|
46
|
-
* Renders this model with the given context. If the model doesn't have a mesh,
|
47
|
-
* nothing is rendered.
|
48
|
-
**/
|
49
|
-
render: function(context, options) {
|
50
|
-
if (this.mesh)
|
51
|
-
{
|
52
|
-
var self = this;
|
53
|
-
context.pushMatrix(function() {
|
54
|
-
context.multModelMatrix(self.camera.getModelViewMatrix());
|
55
|
-
self.mesh.render(context, options);
|
56
|
-
});
|
57
|
-
}
|
58
|
-
},
|
59
|
-
|
60
|
-
getBoundingCube: function() {
|
61
|
-
if (!this.mesh.built) this.mesh.rebuild();
|
62
|
-
return this.mesh.bounds;
|
63
|
-
},
|
64
|
-
|
65
|
-
getBoundingSphereRadius: function() {
|
66
|
-
var b = this.getBoundingCube();
|
67
|
-
return Math.max(b.width, Math.max(b.height, b.depth));
|
68
|
-
},
|
69
|
-
|
70
|
-
dispose: function() {
|
71
|
-
if (this.mesh)
|
72
|
-
this.mesh.dispose();
|
73
|
-
},
|
74
|
-
|
75
|
-
isLit: function() {
|
76
|
-
return this.lit;
|
77
|
-
},
|
78
|
-
|
79
|
-
/**
|
80
|
-
* Jax.Model#inspect() -> String
|
81
|
-
*
|
82
|
-
* Returns the JSON representation of the attributes in this model.
|
83
|
-
* Function definitions are not included.
|
84
|
-
*
|
85
|
-
**/
|
86
|
-
inspect: function() {
|
87
|
-
result = {};
|
88
|
-
for (var i in this)
|
89
|
-
if (!Object.isFunction(this[i]) && i != "_klass")
|
90
|
-
result[i] = this[i];
|
91
|
-
return JSON.stringify(result);
|
92
|
-
}
|
93
|
-
});
|
94
|
-
})();
|
95
|
-
|
96
|
-
var model_class_methods = {
|
97
|
-
/**
|
98
|
-
* Jax.Model.find(id) -> Jax.Model
|
99
|
-
* - id (String): the unique identifier of the model to be found
|
100
|
-
*
|
101
|
-
* Finds the resource with the specified name, instantiates its model and returns it.
|
102
|
-
*
|
103
|
-
* Note that this is a class method of the model in question, and not of Jax.Model itself.
|
104
|
-
*
|
105
|
-
* For example, this would be correct:
|
106
|
-
*
|
107
|
-
* Character.find('bad_guy')
|
108
|
-
*
|
109
|
-
* while this would be *incorrect*:
|
110
|
-
*
|
111
|
-
* Jax.Model.find('bad_guy')
|
112
|
-
*
|
113
|
-
**/
|
114
|
-
find: function(id) {
|
115
|
-
for (var resource_id in this.resources) {
|
116
|
-
if (id == resource_id)
|
117
|
-
return new this(this.resources[id]);
|
118
|
-
}
|
119
|
-
throw new Error("Resource '"+id+"' not found!");
|
120
|
-
},
|
121
|
-
|
122
|
-
/**
|
123
|
-
* Jax.Model.addResources(resources) -> undefined
|
124
|
-
* - resources (Object): the resources to be added
|
125
|
-
*
|
126
|
-
* Adds the resources to the specified model. These resources can then be found using
|
127
|
-
* Jax.Model.find(id).
|
128
|
-
*
|
129
|
-
* Note that this is a class method of the model in question, and not of Jax.Model itself.
|
130
|
-
*
|
131
|
-
* For example, this would be correct:
|
132
|
-
*
|
133
|
-
* Character.addResources({'bad_guy': {...}})
|
134
|
-
*
|
135
|
-
* while this would be *incorrect*:
|
136
|
-
*
|
137
|
-
* Jax.Model.addResources({'bad_guy': {...}})
|
138
|
-
*
|
139
|
-
**/
|
140
|
-
addResources: function(resources) {
|
141
|
-
this.resources = this.resources || {};
|
142
|
-
for (var id in resources)
|
143
|
-
if (this.resources[id]) throw new Error("Duplicate resource ID: "+id);
|
144
|
-
else this.resources[id] = resources[id];
|
145
|
-
}
|
146
|
-
};
|
147
|
-
|
148
|
-
Jax.Model.default_properties = {
|
149
|
-
lit: true,
|
150
|
-
shadow_caster: true
|
151
|
-
};
|
152
|
-
|
153
|
-
Jax.Model.create = function(superclass, inner) {
|
154
|
-
var klass;
|
155
|
-
if (inner) klass = Jax.Class.create(superclass, inner);
|
156
|
-
else klass = Jax.Class.create(Jax.Model, superclass);
|
157
|
-
|
158
|
-
klass.addMethods({_klass:klass});
|
159
|
-
|
160
|
-
Object.extend(klass, model_class_methods);
|
161
|
-
return klass;
|
162
|
-
};
|
163
|
-
})();
|