jax 0.0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +12 -0
- data/.gitmodules +3 -0
- data/.rvmrc +7 -0
- data/Gemfile +4 -0
- data/README.rdoc +32 -0
- data/Rakefile +144 -0
- data/bin/jax +11 -0
- data/builtin/shaders/basic/common.ejs +11 -0
- data/builtin/shaders/basic/fragment.ejs +5 -0
- data/builtin/shaders/basic/vertex.ejs +13 -0
- data/builtin/shaders/depthmap/common.ejs +1 -0
- data/builtin/shaders/depthmap/fragment.ejs +5 -0
- data/builtin/shaders/depthmap/vertex.ejs +7 -0
- data/builtin/shaders/fog/common.ejs +7 -0
- data/builtin/shaders/fog/fragment.ejs +23 -0
- data/builtin/shaders/fog/manifest.yml +12 -0
- data/builtin/shaders/fog/material.js +34 -0
- data/builtin/shaders/fog/vertex.ejs +10 -0
- data/builtin/shaders/functions/depth_map.ejs +24 -0
- data/builtin/shaders/functions/lights.ejs +155 -0
- data/builtin/shaders/lighting/common.ejs +5 -0
- data/builtin/shaders/lighting/fragment.ejs +34 -0
- data/builtin/shaders/lighting/manifest.yml +4 -0
- data/builtin/shaders/lighting/material.js +26 -0
- data/builtin/shaders/lighting/vertex.ejs +7 -0
- data/builtin/shaders/normal_map/common.ejs +12 -0
- data/builtin/shaders/normal_map/fragment.ejs +26 -0
- data/builtin/shaders/normal_map/manifest.yml +17 -0
- data/builtin/shaders/normal_map/material.js +16 -0
- data/builtin/shaders/normal_map/vertex.ejs +57 -0
- data/builtin/shaders/paraboloid-depthmap/common.ejs +6 -0
- data/builtin/shaders/paraboloid-depthmap/fragment.ejs +8 -0
- data/builtin/shaders/paraboloid-depthmap/material.js +15 -0
- data/builtin/shaders/paraboloid-depthmap/vertex.ejs +26 -0
- data/builtin/shaders/shadow_map/common.ejs +14 -0
- data/builtin/shaders/shadow_map/fragment.ejs +66 -0
- data/builtin/shaders/shadow_map/manifest.yml +1 -0
- data/builtin/shaders/shadow_map/material.js +26 -0
- data/builtin/shaders/shadow_map/vertex.ejs +46 -0
- data/builtin/shaders/texture/common.ejs +4 -0
- data/builtin/shaders/texture/fragment.ejs +11 -0
- data/builtin/shaders/texture/manifest.yml +17 -0
- data/builtin/shaders/texture/material.js +18 -0
- data/builtin/shaders/texture/vertex.ejs +9 -0
- data/guides/assets/images/book_icon.gif +0 -0
- data/guides/assets/images/bullet.gif +0 -0
- data/guides/assets/images/chapters_icon.gif +0 -0
- data/guides/assets/images/check_bullet.gif +0 -0
- data/guides/assets/images/credits_pic_blank.gif +0 -0
- data/guides/assets/images/edge_badge.png +0 -0
- data/guides/assets/images/feature_tile.gif +0 -0
- data/guides/assets/images/footer_tile.gif +0 -0
- data/guides/assets/images/getting_started/clean_passing_jasmine_suite.png +0 -0
- data/guides/assets/images/getting_started/rock.png +0 -0
- data/guides/assets/images/getting_started/rock_normal.png +0 -0
- data/guides/assets/images/grey_bullet.gif +0 -0
- data/guides/assets/images/header_backdrop.png +0 -0
- data/guides/assets/images/header_tile.gif +0 -0
- data/guides/assets/images/icons/README +5 -0
- data/guides/assets/images/icons/callouts/1.png +0 -0
- data/guides/assets/images/icons/callouts/10.png +0 -0
- data/guides/assets/images/icons/callouts/11.png +0 -0
- data/guides/assets/images/icons/callouts/12.png +0 -0
- data/guides/assets/images/icons/callouts/13.png +0 -0
- data/guides/assets/images/icons/callouts/14.png +0 -0
- data/guides/assets/images/icons/callouts/15.png +0 -0
- data/guides/assets/images/icons/callouts/2.png +0 -0
- data/guides/assets/images/icons/callouts/3.png +0 -0
- data/guides/assets/images/icons/callouts/4.png +0 -0
- data/guides/assets/images/icons/callouts/5.png +0 -0
- data/guides/assets/images/icons/callouts/6.png +0 -0
- data/guides/assets/images/icons/callouts/7.png +0 -0
- data/guides/assets/images/icons/callouts/8.png +0 -0
- data/guides/assets/images/icons/callouts/9.png +0 -0
- data/guides/assets/images/icons/caution.png +0 -0
- data/guides/assets/images/icons/example.png +0 -0
- data/guides/assets/images/icons/home.png +0 -0
- data/guides/assets/images/icons/important.png +0 -0
- data/guides/assets/images/icons/next.png +0 -0
- data/guides/assets/images/icons/note.png +0 -0
- data/guides/assets/images/icons/prev.png +0 -0
- data/guides/assets/images/icons/tip.png +0 -0
- data/guides/assets/images/icons/up.png +0 -0
- data/guides/assets/images/icons/warning.png +0 -0
- data/guides/assets/images/nav_arrow.gif +0 -0
- data/guides/assets/images/tab_grey.gif +0 -0
- data/guides/assets/images/tab_info.gif +0 -0
- data/guides/assets/images/tab_note.gif +0 -0
- data/guides/assets/images/tab_red.gif +0 -0
- data/guides/assets/images/tab_yellow.gif +0 -0
- data/guides/assets/images/tab_yellow.png +0 -0
- data/guides/assets/javascripts/guides.js +7 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushAS3.js +59 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushAppleScript.js +75 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushBash.js +59 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushCSharp.js +65 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushColdFusion.js +100 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushCpp.js +97 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushCss.js +91 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushDelphi.js +55 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushDiff.js +41 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushErlang.js +52 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushGroovy.js +67 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushJScript.js +52 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushJava.js +57 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushJavaFX.js +58 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushPerl.js +72 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushPhp.js +88 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushPlain.js +33 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushPowerShell.js +74 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushPython.js +64 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushRuby.js +55 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushSass.js +94 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushScala.js +51 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushSql.js +66 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushVb.js +56 -0
- data/guides/assets/javascripts/syntaxhighlighter/shBrushXml.js +69 -0
- data/guides/assets/javascripts/syntaxhighlighter/shCore.js +17 -0
- data/guides/assets/stylesheets/fixes.css +16 -0
- data/guides/assets/stylesheets/main.css +445 -0
- data/guides/assets/stylesheets/print.css +52 -0
- data/guides/assets/stylesheets/reset.css +43 -0
- data/guides/assets/stylesheets/style.css +13 -0
- data/guides/assets/stylesheets/syntaxhighlighter/shCore.css +226 -0
- data/guides/assets/stylesheets/syntaxhighlighter/shCoreDefault.css +328 -0
- data/guides/assets/stylesheets/syntaxhighlighter/shCoreDjango.css +331 -0
- data/guides/assets/stylesheets/syntaxhighlighter/shCoreEclipse.css +339 -0
- data/guides/assets/stylesheets/syntaxhighlighter/shCoreEmacs.css +324 -0
- data/guides/assets/stylesheets/syntaxhighlighter/shCoreFadeToGrey.css +328 -0
- data/guides/assets/stylesheets/syntaxhighlighter/shCoreMDUltra.css +324 -0
- data/guides/assets/stylesheets/syntaxhighlighter/shCoreMidnight.css +324 -0
- data/guides/assets/stylesheets/syntaxhighlighter/shCoreRDark.css +324 -0
- data/guides/assets/stylesheets/syntaxhighlighter/shThemeDefault.css +117 -0
- data/guides/assets/stylesheets/syntaxhighlighter/shThemeDjango.css +120 -0
- data/guides/assets/stylesheets/syntaxhighlighter/shThemeEclipse.css +128 -0
- data/guides/assets/stylesheets/syntaxhighlighter/shThemeEmacs.css +113 -0
- data/guides/assets/stylesheets/syntaxhighlighter/shThemeFadeToGrey.css +117 -0
- data/guides/assets/stylesheets/syntaxhighlighter/shThemeJaxGuides.css +116 -0
- data/guides/assets/stylesheets/syntaxhighlighter/shThemeMDUltra.css +113 -0
- data/guides/assets/stylesheets/syntaxhighlighter/shThemeMidnight.css +113 -0
- data/guides/assets/stylesheets/syntaxhighlighter/shThemeRDark.css +113 -0
- data/guides/jax_guides.rb +41 -0
- data/guides/jax_guides/common.rb +7 -0
- data/guides/jax_guides/generator.rb +287 -0
- data/guides/jax_guides/helpers.rb +29 -0
- data/guides/jax_guides/indexer.rb +69 -0
- data/guides/jax_guides/levenshtein.rb +31 -0
- data/guides/jax_guides/textile_extensions.rb +61 -0
- data/guides/source/getting_started.textile +1171 -0
- data/guides/source/index.html.erb +50 -0
- data/guides/source/layout.html.erb +158 -0
- data/guides/source/lighting.textile +5 -0
- data/guides/source/materials.textile +5 -0
- data/guides/source/shaders.textile +5 -0
- data/guides/source/testing.textile +5 -0
- data/guides/w3c_validator.rb +91 -0
- data/jax.gems +1 -0
- data/jax.gemspec +40 -0
- data/lib/jax.rb +28 -0
- data/lib/jax/application.rb +92 -0
- data/lib/jax/application/configuration.rb +27 -0
- data/lib/jax/generators/app.rb +17 -0
- data/lib/jax/generators/app/app_generator.rb +78 -0
- data/lib/jax/generators/app/templates/Gemfile.tt +3 -0
- data/lib/jax/generators/app/templates/Rakefile +6 -0
- data/lib/jax/generators/app/templates/app/controllers/application_controller.js.tt +5 -0
- data/lib/jax/generators/app/templates/app/helpers/application_helper.js.tt +3 -0
- data/lib/jax/generators/app/templates/app/models/.empty_directory +0 -0
- data/lib/jax/generators/app/templates/app/resources/.empty_directory +0 -0
- data/lib/jax/generators/app/templates/app/views/.empty_directory +0 -0
- data/lib/jax/generators/app/templates/config/application.rb.tt +6 -0
- data/lib/jax/generators/app/templates/config/boot.rb +13 -0
- data/lib/jax/generators/app/templates/config/routes.rb.tt +5 -0
- data/lib/jax/generators/app/templates/public/javascripts/jax.js +7561 -0
- data/lib/jax/generators/app/templates/public/webgl_not_supported.html +26 -0
- data/lib/jax/generators/app/templates/script/jax +7 -0
- data/lib/jax/generators/app/templates/spec/javascripts/controllers/application_controller_spec.js +11 -0
- data/lib/jax/generators/app/templates/spec/javascripts/helpers/application_helper_spec.js +12 -0
- data/lib/jax/generators/app/templates/spec/javascripts/support/jasmine.yml +90 -0
- data/lib/jax/generators/app/templates/spec/javascripts/support/jasmine_config.rb +23 -0
- data/lib/jax/generators/app/templates/spec/javascripts/support/jasmine_runner.rb +32 -0
- data/lib/jax/generators/app/templates/spec/javascripts/support/spec_helpers/jax_spec_helper.js +216 -0
- data/lib/jax/generators/app/templates/spec/javascripts/support/spec_layout.html.erb +63 -0
- data/lib/jax/generators/commands.rb +81 -0
- data/lib/jax/generators/controller/USAGE +9 -0
- data/lib/jax/generators/controller/controller_generator.rb +59 -0
- data/lib/jax/generators/controller/templates/controller_source.js.tt +16 -0
- data/lib/jax/generators/controller/templates/controller_test.js.tt +11 -0
- data/lib/jax/generators/controller/templates/helper.js.tt +3 -0
- data/lib/jax/generators/controller/templates/helper_test.js.tt +12 -0
- data/lib/jax/generators/controller/templates/view.js.tt +4 -0
- data/lib/jax/generators/light_source/USAGE +14 -0
- data/lib/jax/generators/light_source/light_source_generator.rb +47 -0
- data/lib/jax/generators/light_source/templates/light.yml.tt +39 -0
- data/lib/jax/generators/material/USAGE +29 -0
- data/lib/jax/generators/material/material_generator.rb +81 -0
- data/lib/jax/generators/material/templates/append.yml.tt +7 -0
- data/lib/jax/generators/material/templates/material.yml.tt +33 -0
- data/lib/jax/generators/model/USAGE +5 -0
- data/lib/jax/generators/model/model_generator.rb +42 -0
- data/lib/jax/generators/model/templates/model.js.tt +11 -0
- data/lib/jax/generators/model/templates/test.js.tt +11 -0
- data/lib/jax/generators/script_jax_loader.rb +32 -0
- data/lib/jax/monkeypatch/jasmine.rb +3 -0
- data/lib/jax/monkeypatch/jasmine/config.rb +21 -0
- data/lib/jax/monkeypatch/jasmine/server.rb +50 -0
- data/lib/jax/packager.rb +58 -0
- data/lib/jax/packager/sprockets_template.rb +49 -0
- data/lib/jax/resource_compiler.rb +50 -0
- data/lib/jax/routes.rb +61 -0
- data/lib/jax/shader.rb +158 -0
- data/lib/jax/tasks/rake.rb +34 -0
- data/lib/jax/version.rb +12 -0
- data/public/images/brickwall.jpg +0 -0
- data/public/images/jacks.jpg +0 -0
- data/public/images/normal_map.jpg +0 -0
- data/public/images/rock.png +0 -0
- data/public/images/rockNormal.png +0 -0
- data/public/images/rss.png +0 -0
- data/public/webgl_not_supported.html +26 -0
- data/spec/example_app/Gemfile +1 -0
- data/spec/example_app/Rakefile +15 -0
- data/spec/example_app/app/controllers/application_controller.js +5 -0
- data/spec/example_app/app/controllers/courthouse_controller.js +24 -0
- data/spec/example_app/app/controllers/lighting_controller.js +69 -0
- data/spec/example_app/app/controllers/shadows_controller.js +130 -0
- data/spec/example_app/app/controllers/textures_controller.js +52 -0
- data/spec/example_app/app/helpers/application_helper.js +3 -0
- data/spec/example_app/app/helpers/textures_helper.js +3 -0
- data/spec/example_app/app/models/character.js +23 -0
- data/spec/example_app/app/models/door.js +10 -0
- data/spec/example_app/app/models/scene.js +19 -0
- data/spec/example_app/app/resources/characters/judge.yml +3 -0
- data/spec/example_app/app/resources/doors/courthouse_door.yml +5 -0
- data/spec/example_app/app/resources/light_sources/directional_light.yml +13 -0
- data/spec/example_app/app/resources/light_sources/point_light.yml +31 -0
- data/spec/example_app/app/resources/light_sources/spot_light.yml +15 -0
- data/spec/example_app/app/resources/light_sources/sun.yml +7 -0
- data/spec/example_app/app/resources/light_sources/textures_point.yml +34 -0
- data/spec/example_app/app/resources/materials/bricks.yml +36 -0
- data/spec/example_app/app/resources/materials/lighting_with_shadows.yml +27 -0
- data/spec/example_app/app/resources/scenes/courthouse.yml +4 -0
- data/spec/example_app/app/views/courthouse/index.js +4 -0
- data/spec/example_app/app/views/lighting/index.js +4 -0
- data/spec/example_app/app/views/shadows/index.js +6 -0
- data/spec/example_app/app/views/textures/index.js +4 -0
- data/spec/example_app/config/application.rb +6 -0
- data/spec/example_app/config/boot.rb +13 -0
- data/spec/example_app/config/routes.rb +6 -0
- data/spec/example_app/public/images/185__normalmap.png +0 -0
- data/spec/example_app/public/images/face_norm.jpg +0 -0
- data/spec/example_app/public/images/rock.png +0 -0
- data/spec/example_app/public/images/rockNormal.png +0 -0
- data/spec/example_app/public/images/rss.png +0 -0
- data/spec/example_app/public/webgl_not_supported.html +26 -0
- data/spec/example_app/script/jax +7 -0
- data/spec/example_app/spec/javascripts/controllers/textures_controller_spec.js +11 -0
- data/spec/example_app/spec/javascripts/helpers/application_helper_spec.js +12 -0
- data/spec/example_app/spec/javascripts/resources/directional_light_spec.js +16 -0
- data/spec/example_app/spec/javascripts/resources/point_light_spec.js +17 -0
- data/spec/example_app/spec/javascripts/resources/spot_light_spec.js +18 -0
- data/spec/example_app/spec/javascripts/support/jasmine.yml +89 -0
- data/spec/example_app/spec/javascripts/support/jasmine_runner.rb +32 -0
- data/spec/example_app/spec/javascripts/support/spec_helpers/jax_spec_helper.js +93 -0
- data/spec/example_app/spec/javascripts/support/spec_layout.html.erb +84 -0
- data/spec/generators/app_generator_spec.rb +46 -0
- data/spec/generators/controller_generator_spec.rb +68 -0
- data/spec/generators/light_generator_spec.rb +51 -0
- data/spec/generators/material_generator_spec.rb +35 -0
- data/spec/generators/model_generator_spec.rb +43 -0
- data/spec/javascripts/Player.js +58 -0
- data/spec/javascripts/helpers/SpecHelper.js +216 -0
- data/spec/javascripts/jax/builtin/materials/core_materials_spec.js +41 -0
- data/spec/javascripts/jax/builtin/materials/dual_paraboloid_spec.js +37 -0
- data/spec/javascripts/jax/builtin/materials/fog_spec.js +19 -0
- data/spec/javascripts/jax/builtin/materials/lighting_spec.js +19 -0
- data/spec/javascripts/jax/builtin/materials/normal_map_spec.js +19 -0
- data/spec/javascripts/jax/builtin/materials/shadow_map_spec.js +19 -0
- data/spec/javascripts/jax/builtin/materials/texture_spec.js +19 -0
- data/spec/javascripts/jax/builtin/meshes/cube_spec.js +10 -0
- data/spec/javascripts/jax/builtin/meshes/plane_spec.js +8 -0
- data/spec/javascripts/jax/builtin/meshes/quad_spec.js +8 -0
- data/spec/javascripts/jax/builtin/meshes/sphere_spec.js +8 -0
- data/spec/javascripts/jax/builtin/meshes/teapot_spec.js +8 -0
- data/spec/javascripts/jax/builtin/meshes/torus_spec.js +8 -0
- data/spec/javascripts/jax/compatibility_spec.js +50 -0
- data/spec/javascripts/jax/context_spec.js +82 -0
- data/spec/javascripts/jax/controller_spec.js +145 -0
- data/spec/javascripts/jax/core/delegation_spec.js +48 -0
- data/spec/javascripts/jax/core/events_spec.js +17 -0
- data/spec/javascripts/jax/core/matrix_stack_spec.js +28 -0
- data/spec/javascripts/jax/core/utils_spec.js +256 -0
- data/spec/javascripts/jax/helper_spec.js +33 -0
- data/spec/javascripts/jax/model_spec.js +87 -0
- data/spec/javascripts/jax/optimizations/material_limitations_spec.js +87 -0
- data/spec/javascripts/jax/optimizations/shaders/basic_spec.js +68 -0
- data/spec/javascripts/jax/prototype/extensions_spec.js +34 -0
- data/spec/javascripts/jax/route_set_spec.js +67 -0
- data/spec/javascripts/jax/view_manager_spec.js +17 -0
- data/spec/javascripts/jax/webgl/camera_spec.js +159 -0
- data/spec/javascripts/jax/webgl/framebuffer_spec.js +46 -0
- data/spec/javascripts/jax/webgl/lighting_spec.js +61 -0
- data/spec/javascripts/jax/webgl/material_spec.js +118 -0
- data/spec/javascripts/jax/webgl/mesh_spec.js +86 -0
- data/spec/javascripts/jax/webgl/shader/manifest_spec.js +60 -0
- data/spec/javascripts/jax/webgl/shader_chain_spec.js +192 -0
- data/spec/javascripts/jax/webgl/shader_spec.js +276 -0
- data/spec/javascripts/jax/webgl/tangent_space_spec.js +142 -0
- data/spec/javascripts/jax/webgl/texture_spec.js +162 -0
- data/spec/javascripts/jax/webgl_spec.js +5 -0
- data/spec/javascripts/jax/world_spec.js +88 -0
- data/spec/javascripts/jax_spec.js +27 -0
- data/spec/javascripts/support/jasmine.yml +85 -0
- data/spec/javascripts/support/jasmine_runner.rb +32 -0
- data/spec/lib/jax/routes_spec.rb +24 -0
- data/spec/lib/jax/shader_spec.rb +57 -0
- data/spec/lib/jax/tasks/jax_rake_spec.rb +79 -0
- data/spec/spec_helper.rb +11 -0
- data/spec/support/file_exist_matcher.rb +23 -0
- data/spec/support/spec_shell.rb +97 -0
- data/src/jax.js +84 -0
- data/src/jax/anim_frame.js +47 -0
- data/src/jax/builtin/all.js +7 -0
- data/src/jax/builtin/meshes/cube.js +62 -0
- data/src/jax/builtin/meshes/plane.js +36 -0
- data/src/jax/builtin/meshes/quad.js +80 -0
- data/src/jax/builtin/meshes/sphere.js +46 -0
- data/src/jax/builtin/meshes/teapot.js +38 -0
- data/src/jax/builtin/meshes/torus.js +46 -0
- data/src/jax/compatibility.js +140 -0
- data/src/jax/context.js +253 -0
- data/src/jax/controller.js +157 -0
- data/src/jax/core.js +39 -0
- data/src/jax/core/math.js +40 -0
- data/src/jax/core/matrix_stack.js +306 -0
- data/src/jax/core/util.js +226 -0
- data/src/jax/events.js +179 -0
- data/src/jax/geometry.js +3 -0
- data/src/jax/geometry/plane.js +59 -0
- data/src/jax/helper.js +8 -0
- data/src/jax/model.js +163 -0
- data/src/jax/prototype/class.js +78 -0
- data/src/jax/prototype/core.js +112 -0
- data/src/jax/prototype/extensions.js +124 -0
- data/src/jax/route_set.js +125 -0
- data/src/jax/vendor/ejs.js +4 -0
- data/src/jax/vendor/glMatrix.js +3 -0
- data/src/jax/view.js +37 -0
- data/src/jax/view_manager.js +46 -0
- data/src/jax/webgl.js +98 -0
- data/src/jax/webgl/camera.js +526 -0
- data/src/jax/webgl/core.js +6 -0
- data/src/jax/webgl/core/buffer.js +161 -0
- data/src/jax/webgl/core/edge.js +6 -0
- data/src/jax/webgl/core/events.js +25 -0
- data/src/jax/webgl/core/face.js +8 -0
- data/src/jax/webgl/core/framebuffer.js +206 -0
- data/src/jax/webgl/material.js +375 -0
- data/src/jax/webgl/mesh.js +412 -0
- data/src/jax/webgl/scene.js +11 -0
- data/src/jax/webgl/scene/frustum.js +260 -0
- data/src/jax/webgl/scene/light_manager.js +112 -0
- data/src/jax/webgl/scene/light_source.js +248 -0
- data/src/jax/webgl/shader.js +282 -0
- data/src/jax/webgl/shader/delegator.js +13 -0
- data/src/jax/webgl/shader/delegator/attribute.js +53 -0
- data/src/jax/webgl/shader/delegator/uniform.js +71 -0
- data/src/jax/webgl/shader/manifest.js +64 -0
- data/src/jax/webgl/shader/program.js +140 -0
- data/src/jax/webgl/shader_chain.js +256 -0
- data/src/jax/webgl/texture.js +312 -0
- data/src/jax/webgl/world.js +119 -0
- data/vendor/ejs/.svn/all-wcprops +17 -0
- data/vendor/ejs/.svn/entries +114 -0
- data/vendor/ejs/.svn/text-base/Eratta.txt.svn-base +3 -0
- data/vendor/ejs/.svn/text-base/license.txt.svn-base +21 -0
- data/vendor/ejs/Eratta.txt +3 -0
- data/vendor/ejs/example/.svn/all-wcprops +29 -0
- data/vendor/ejs/example/.svn/entries +164 -0
- data/vendor/ejs/example/.svn/prop-base/ejs.gif.svn-base +5 -0
- data/vendor/ejs/example/.svn/text-base/demo.html.svn-base +54 -0
- data/vendor/ejs/example/.svn/text-base/ejs.gif.svn-base +0 -0
- data/vendor/ejs/example/.svn/text-base/example.css.svn-base +31 -0
- data/vendor/ejs/example/.svn/text-base/example.js.svn-base +88 -0
- data/vendor/ejs/example/demo.html +54 -0
- data/vendor/ejs/example/ejs.gif +0 -0
- data/vendor/ejs/example/example.css +31 -0
- data/vendor/ejs/example/example.js +88 -0
- data/vendor/ejs/lib/.svn/all-wcprops +11 -0
- data/vendor/ejs/lib/.svn/entries +62 -0
- data/vendor/ejs/lib/.svn/text-base/ejs_fulljslint.js.svn-base +3774 -0
- data/vendor/ejs/lib/ejs_fulljslint.js +3774 -0
- data/vendor/ejs/license.txt +21 -0
- data/vendor/ejs/script/.svn/all-wcprops +17 -0
- data/vendor/ejs/script/.svn/entries +96 -0
- data/vendor/ejs/script/.svn/prop-base/yuicompressor-2.2.4.jar.svn-base +5 -0
- data/vendor/ejs/script/.svn/text-base/production.bat.svn-base +4 -0
- data/vendor/ejs/script/.svn/text-base/yuicompressor-2.2.4.jar.svn-base +0 -0
- data/vendor/ejs/script/production.bat +4 -0
- data/vendor/ejs/script/yuicompressor-2.2.4.jar +0 -0
- data/vendor/ejs/src/.svn/all-wcprops +17 -0
- data/vendor/ejs/src/.svn/entries +96 -0
- data/vendor/ejs/src/.svn/text-base/ejs.js.svn-base +505 -0
- data/vendor/ejs/src/.svn/text-base/view.js.svn-base +200 -0
- data/vendor/ejs/src/ejs.js +505 -0
- data/vendor/ejs/src/view.js +200 -0
- data/vendor/ejs/test/.svn/all-wcprops +23 -0
- data/vendor/ejs/test/.svn/entries +139 -0
- data/vendor/ejs/test/.svn/text-base/index.html.svn-base +18 -0
- data/vendor/ejs/test/.svn/text-base/setup_test.html.svn-base +44 -0
- data/vendor/ejs/test/.svn/text-base/sidebar.html.svn-base +28 -0
- data/vendor/ejs/test/included/.svn/all-wcprops +23 -0
- data/vendor/ejs/test/included/.svn/entries +130 -0
- data/vendor/ejs/test/included/.svn/text-base/prototype.js.svn-base +4184 -0
- data/vendor/ejs/test/included/.svn/text-base/test.css.svn-base +44 -0
- data/vendor/ejs/test/included/.svn/text-base/unittest.js.svn-base +564 -0
- data/vendor/ejs/test/included/prototype.js +4184 -0
- data/vendor/ejs/test/included/test.css +44 -0
- data/vendor/ejs/test/included/unittest.js +564 -0
- data/vendor/ejs/test/index.html +18 -0
- data/vendor/ejs/test/setup_test.html +44 -0
- data/vendor/ejs/test/sidebar.html +28 -0
- data/vendor/ejs/test/templates/.svn/all-wcprops +11 -0
- data/vendor/ejs/test/templates/.svn/entries +62 -0
- data/vendor/ejs/test/templates/.svn/text-base/test.ejs.svn-base +3 -0
- data/vendor/ejs/test/templates/test.ejs +3 -0
- data/vendor/ejs/test/tests/.svn/all-wcprops +23 -0
- data/vendor/ejs/test/tests/.svn/entries +130 -0
- data/vendor/ejs/test/tests/.svn/text-base/rendering.js.svn-base +94 -0
- data/vendor/ejs/test/tests/.svn/text-base/templating.js.svn-base +43 -0
- data/vendor/ejs/test/tests/.svn/text-base/views.js.svn-base +100 -0
- data/vendor/ejs/test/tests/rendering.js +94 -0
- data/vendor/ejs/test/tests/templating.js +43 -0
- data/vendor/ejs/test/tests/views.js +100 -0
- data/vendor/glmatrix/benchmark/js/CanvasMatrix.js +722 -0
- data/vendor/glmatrix/benchmark/js/EWGL_math.js +742 -0
- data/vendor/glmatrix/benchmark/js/mjs.js +1230 -0
- data/vendor/glmatrix/benchmark/matrix_benchmark.html +419 -0
- data/vendor/glmatrix/glMatrix-min.js +32 -0
- data/vendor/glmatrix/glMatrix.js +1815 -0
- data/vendor/glmatrix/unit tests/glMatrix-test.js +74 -0
- data/vendor/glmatrix/unit tests/qunit.css +119 -0
- data/vendor/glmatrix/unit tests/qunit.js +1069 -0
- data/vendor/glmatrix/unit tests/test_glMatrix.html +21 -0
- data/vendor/yuicompressor-2.4.2.jar +0 -0
- metadata +748 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Core functions borrowed from Prototype. I don't think these are stepping on anyone's (e.g. jQuery's) toes,
|
|
3
|
+
but if I find out otherwise I'll have to tweak it. The goal here is to be totally compatible with other libraries
|
|
4
|
+
wherever possible.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
Jax.$A = function(iterable) {
|
|
8
|
+
if (!iterable) return [];
|
|
9
|
+
if ('toArray' in Object(iterable)) return iterable.toArray();
|
|
10
|
+
var length = iterable.length || 0, results = new Array(length);
|
|
11
|
+
while (length--) results[length] = iterable[length];
|
|
12
|
+
return results;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
/* TODO find a way to avoid polluting Object. */
|
|
16
|
+
Object.isFunction = function(arg) { return Object.prototype.toString.call(arg) === '[object Function]'; };
|
|
17
|
+
Object.isUndefined = function(object) { return typeof object === "undefined"; };
|
|
18
|
+
Object.isArray = function(object) { return Object.prototype.toString.call(object) === '[object Array]'; };
|
|
19
|
+
Object.extend = function(destination, source) {
|
|
20
|
+
for (var property in source)
|
|
21
|
+
destination[property] = source[property];
|
|
22
|
+
return destination;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
Object.extend(Function.prototype, (function() {
|
|
26
|
+
var slice = Array.prototype.slice;
|
|
27
|
+
|
|
28
|
+
function update(array, args) {
|
|
29
|
+
var arrayLength = array.length, length = args.length;
|
|
30
|
+
while (length--) array[arrayLength + length] = args[length];
|
|
31
|
+
return array;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function merge(array, args) {
|
|
35
|
+
array = slice.call(array, 0);
|
|
36
|
+
return update(array, args);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function argumentNames() {
|
|
40
|
+
var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1]
|
|
41
|
+
.replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '')
|
|
42
|
+
.replace(/\s+/g, '').split(',');
|
|
43
|
+
return names.length == 1 && !names[0] ? [] : names;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function bind(context) {
|
|
47
|
+
if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this;
|
|
48
|
+
var __method = this, args = slice.call(arguments, 1);
|
|
49
|
+
return function() {
|
|
50
|
+
var a = merge(args, arguments);
|
|
51
|
+
return __method.apply(context, a);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function bindAsEventListener(context) {
|
|
56
|
+
var __method = this, args = slice.call(arguments, 1);
|
|
57
|
+
return function(event) {
|
|
58
|
+
var a = update([event || window.event], args);
|
|
59
|
+
return __method.apply(context, a);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function curry() {
|
|
64
|
+
if (!arguments.length) return this;
|
|
65
|
+
var __method = this, args = slice.call(arguments, 0);
|
|
66
|
+
return function() {
|
|
67
|
+
var a = merge(args, arguments);
|
|
68
|
+
return __method.apply(this, a);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function delay(timeout) {
|
|
73
|
+
var __method = this, args = slice.call(arguments, 1);
|
|
74
|
+
timeout = timeout * 1000;
|
|
75
|
+
return window.setTimeout(function() {
|
|
76
|
+
return __method.apply(__method, args);
|
|
77
|
+
}, timeout);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function defer() {
|
|
81
|
+
var args = update([0.01], arguments);
|
|
82
|
+
return this.delay.apply(this, args);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function wrap(wrapper) {
|
|
86
|
+
var __method = this;
|
|
87
|
+
return function() {
|
|
88
|
+
var a = update([__method.bind(this)], arguments);
|
|
89
|
+
return wrapper.apply(this, a);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function methodize() {
|
|
94
|
+
if (this._methodized) return this._methodized;
|
|
95
|
+
var __method = this;
|
|
96
|
+
return this._methodized = function() {
|
|
97
|
+
var a = update([this], arguments);
|
|
98
|
+
return __method.apply(null, a);
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return {
|
|
103
|
+
argumentNames: argumentNames,
|
|
104
|
+
bind: bind,
|
|
105
|
+
bindAsEventListener: bindAsEventListener,
|
|
106
|
+
curry: curry,
|
|
107
|
+
delay: delay,
|
|
108
|
+
defer: defer,
|
|
109
|
+
wrap: wrap,
|
|
110
|
+
methodize: methodize
|
|
111
|
+
};
|
|
112
|
+
})());
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/* My own custom extensions to Prototype */
|
|
2
|
+
|
|
3
|
+
//= require "class"
|
|
4
|
+
|
|
5
|
+
(function() {
|
|
6
|
+
/*
|
|
7
|
+
Delegator is instantiated by the class method #delegate with _this_ and _arguments_ as arguments.
|
|
8
|
+
It is effectively responsible for copying a set of methods into the destination object.
|
|
9
|
+
|
|
10
|
+
@see Jax.Class.Methods#delegate
|
|
11
|
+
*/
|
|
12
|
+
var Delegator = Jax.Class.create({
|
|
13
|
+
initialize: function(target, methods) {
|
|
14
|
+
this.methods = methods;
|
|
15
|
+
this.target = target;
|
|
16
|
+
},
|
|
17
|
+
|
|
18
|
+
into: function(destination, dest_klass) {
|
|
19
|
+
/*
|
|
20
|
+
yes, we're using eval in here. But as this method is only called during setup, it's probably OK for the most
|
|
21
|
+
part. Note the caveat that if dest_klass is omitted and the dev is using regular expressions to match method
|
|
22
|
+
names, we have no choice but to put an eval into the alias chain for this.target#initialize. Not ideal but I
|
|
23
|
+
couldn't think of a better way to make it work.
|
|
24
|
+
*/
|
|
25
|
+
var methods = {};
|
|
26
|
+
var method_name;
|
|
27
|
+
var alias_chain_regexps = [];
|
|
28
|
+
|
|
29
|
+
for (var i = 0; i < this.methods.length; i++) {
|
|
30
|
+
if (typeof(this.methods[i]) == "string") {
|
|
31
|
+
/* it's not a regexp so this case is pretty straightforward */
|
|
32
|
+
method_name = this.methods[i];
|
|
33
|
+
methods[method_name] =
|
|
34
|
+
eval("(function() { return this."+destination+"."+method_name+".apply(this."+destination+", arguments); })");
|
|
35
|
+
} else if (this.methods[i].test) {
|
|
36
|
+
var method_regexp = this.methods[i];
|
|
37
|
+
/*
|
|
38
|
+
regexp -- this is harder because we don't know what klass _destination_ points to.
|
|
39
|
+
we have two choices: require an explicit klass argument, or assume the dev is prepared
|
|
40
|
+
to pay the overhead price of testing regexps and calling #eval within #initialize.
|
|
41
|
+
|
|
42
|
+
let's do both: if explicit klass was given, use it. Else, set up an alias chain for #initialize.
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
if (dest_klass) {
|
|
46
|
+
for (method_name in dest_klass.prototype) {
|
|
47
|
+
if (method_regexp.test(method_name)) {
|
|
48
|
+
methods[method_name] =
|
|
49
|
+
eval("(function() { return this."+destination+"."+method_name+".apply(this."+destination+", arguments); })");
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
} else {
|
|
53
|
+
alias_chain_regexps.push(method_regexp);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/* add known methods */
|
|
59
|
+
this.target.addMethods(methods);
|
|
60
|
+
|
|
61
|
+
if (alias_chain_regexps.length > 0) {
|
|
62
|
+
if (!this.target.alias_chain_regexps)
|
|
63
|
+
{
|
|
64
|
+
/* alias chain doesn't yet exist -- create it */
|
|
65
|
+
this.target.alias_chain_regexps = {};
|
|
66
|
+
var original_initialize_method = this.target.prototype.initialize;
|
|
67
|
+
var fn = "(function(){" +
|
|
68
|
+
"if (original_initialize_method) original_initialize_method.apply(this, arguments);" +
|
|
69
|
+
"var i, j, method_name, destination, method_regexp, self = this;" +
|
|
70
|
+
|
|
71
|
+
"destination = this."+destination+";" +
|
|
72
|
+
"for (i = 0; i < this.klass.alias_chain_regexps['"+destination+"'].length; i++) {" +
|
|
73
|
+
"method_regexp = this.klass.alias_chain_regexps['"+destination+"'][i];" +
|
|
74
|
+
"for (j in destination) {" +
|
|
75
|
+
"method_name = j;" +
|
|
76
|
+
"if (method_regexp.test(method_name)) " +
|
|
77
|
+
"this[method_name] = eval('(function(){return self."+destination+".'+method_name+" +
|
|
78
|
+
"'.apply(self."+destination+", arguments);})');" +
|
|
79
|
+
"}" +
|
|
80
|
+
"}" +
|
|
81
|
+
"})";
|
|
82
|
+
|
|
83
|
+
this.target.prototype.initialize = eval(fn);
|
|
84
|
+
}
|
|
85
|
+
/* else, alias chain exists; we only have to add method regexps */
|
|
86
|
+
|
|
87
|
+
this.target.alias_chain_regexps[destination] = this.target.alias_chain_regexps[destination] || [];
|
|
88
|
+
for (i = 0; i < alias_chain_regexps.length; i++) {
|
|
89
|
+
this.target.alias_chain_regexps[destination].push(alias_chain_regexps[i]);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
/*
|
|
96
|
+
Prototype doesn't seem to have a way to add instance methods to all classes (a generic base object would have
|
|
97
|
+
been nice) so we have to hack it in by aliasing ::create and then replacing it.
|
|
98
|
+
*/
|
|
99
|
+
Jax.Class.InstanceMethods = {
|
|
100
|
+
isKindOf: function(klass) {
|
|
101
|
+
return(this instanceof klass);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
var original_create = Jax.Class.create;
|
|
106
|
+
Jax.Class.create = function() {
|
|
107
|
+
var klass = original_create.apply(Jax.Class, arguments);
|
|
108
|
+
klass.prototype.klass = klass;
|
|
109
|
+
klass.addMethods(Jax.Class.InstanceMethods);
|
|
110
|
+
Jax.Util.addRequestedHelpers(klass);
|
|
111
|
+
|
|
112
|
+
return klass;
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
/*
|
|
116
|
+
class method #delegate
|
|
117
|
+
usages:
|
|
118
|
+
klass.delegate(/^(get|load|mult)(.*)Matrix$/).into("matrix_stack");
|
|
119
|
+
klass.delegate("getProjectionMatrix", "loadModelMatrix").into("matrix_stack");
|
|
120
|
+
*/
|
|
121
|
+
Jax.Class.Methods.delegate = function() {
|
|
122
|
+
return new Delegator(this, arguments);
|
|
123
|
+
};
|
|
124
|
+
})();
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* class Jax.RouteSet
|
|
3
|
+
*
|
|
4
|
+
* Manages routing for Jax. All routes are mapped through the route set, and
|
|
5
|
+
* the route set is responsible for recognizing routes and dispatching them
|
|
6
|
+
* to the appropriate destination.
|
|
7
|
+
*
|
|
8
|
+
* A route is generally represented as a string of the form
|
|
9
|
+
* "controller_name/action_name", where controller_name is the short name of
|
|
10
|
+
* the controller and the action name is the action to be triggered. For
|
|
11
|
+
* example, a route matching the #index action of the WelcomeController
|
|
12
|
+
* would look like:
|
|
13
|
+
*
|
|
14
|
+
* "welcome/index"
|
|
15
|
+
*
|
|
16
|
+
* A special case is the root route, which is always mapped to "/". This is
|
|
17
|
+
* used to give Jax applications a default starting point. If omitted, it
|
|
18
|
+
* will be necessary to invoke the appropriate controller manually. You
|
|
19
|
+
* can do this by calling Jax.RouteSet#dispatch.
|
|
20
|
+
**/
|
|
21
|
+
Jax.RouteSet = (function() {
|
|
22
|
+
function set_route(self, path, route_descriptor) {
|
|
23
|
+
return self._map[path] = route_descriptor;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function find_route(self, path) {
|
|
27
|
+
return self._map[path] || null;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return Jax.Class.create({
|
|
31
|
+
initialize: function() {
|
|
32
|
+
this.clear();
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
clear: function() {
|
|
36
|
+
this._map = {};
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Jax.RouteSet#root(controller, actionName) -> undefined
|
|
41
|
+
* - controller (Jax.Controller): the controller that will be routed to
|
|
42
|
+
* - actionName (String): the name of the action to be invoked by this route
|
|
43
|
+
*
|
|
44
|
+
* Note that the controller is expected to be a subclass of Jax.Controller.
|
|
45
|
+
*
|
|
46
|
+
* Example:
|
|
47
|
+
*
|
|
48
|
+
* Jax.routes.root(WelcomeController, "index");
|
|
49
|
+
*
|
|
50
|
+
**/
|
|
51
|
+
root: function() {
|
|
52
|
+
var args = [];
|
|
53
|
+
for (var i = 0; i < arguments.length; i++) args.push(arguments[i]);
|
|
54
|
+
set_route(this, "/", this.getRouteDescriptor.apply(this, args));
|
|
55
|
+
},
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Jax.RouteSet#map(path, controller, actionName) -> undefined
|
|
59
|
+
**/
|
|
60
|
+
map: function(path) {
|
|
61
|
+
var args = [];
|
|
62
|
+
for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);
|
|
63
|
+
set_route(this, path, this.getRouteDescriptor.apply(this, args));
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
getRouteDescriptor: function() {
|
|
67
|
+
var route_descriptor;
|
|
68
|
+
switch(arguments.length) {
|
|
69
|
+
case 1:
|
|
70
|
+
if (typeof(arguments[0]) == "object")
|
|
71
|
+
{
|
|
72
|
+
route_descriptor = arguments[0];
|
|
73
|
+
if (!route_descriptor.action) route_descriptor.action = "index";
|
|
74
|
+
return arguments[0];
|
|
75
|
+
}
|
|
76
|
+
else return { controller: arguments[0], action: "index" };
|
|
77
|
+
case 2: return { controller: arguments[0], action: arguments[1] };
|
|
78
|
+
case 3:
|
|
79
|
+
route_descriptor = arguments[3];
|
|
80
|
+
route_descriptor.controller = arguments[0];
|
|
81
|
+
route_descriptor.action = arguments[1];
|
|
82
|
+
return route_descriptor;
|
|
83
|
+
default: throw new Error("Invalid arguments");
|
|
84
|
+
};
|
|
85
|
+
},
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Jax.RouteSet#recognize_route(path) -> Object
|
|
89
|
+
* - path (String): the route path to be recognized
|
|
90
|
+
*
|
|
91
|
+
* Recognizes the specified path, returning an object with properties
|
|
92
|
+
* 'controller' and 'action'. If the route cannot be recognized, an
|
|
93
|
+
* error is thrown.
|
|
94
|
+
**/
|
|
95
|
+
recognize_route: function(path) {
|
|
96
|
+
var route = find_route(this, path) || find_route(this, path+"/index");
|
|
97
|
+
if (!route) throw new Error("Route not recognized: '"+path+"'");
|
|
98
|
+
return route;
|
|
99
|
+
},
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Jax.RouteSet#isRouted(path) -> Boolean
|
|
103
|
+
* - path (String): the route path to be recognized
|
|
104
|
+
*
|
|
105
|
+
* Returns true if the specified path can be routed, false otherwise.
|
|
106
|
+
**/
|
|
107
|
+
isRouted: function(path) {
|
|
108
|
+
return !!find_route(this, path);
|
|
109
|
+
},
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Jax.RouteSet#dispatch(path) -> Jax.Controller
|
|
113
|
+
* - path (String): the route path to be recognized
|
|
114
|
+
*
|
|
115
|
+
* Recognizes the given path as a route and invokes its controller and action.
|
|
116
|
+
* After the controller has been invoked, the controller instance itself is
|
|
117
|
+
* returned.
|
|
118
|
+
**/
|
|
119
|
+
dispatch: function(path, context) {
|
|
120
|
+
var route = this.recognize_route(path);
|
|
121
|
+
|
|
122
|
+
return route.controller.invoke(route.action, context);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
})();
|
data/src/jax/view.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* class Jax.View
|
|
3
|
+
*
|
|
4
|
+
* Provides a container class around which View functions can be stored.
|
|
5
|
+
*
|
|
6
|
+
* This is useful because other parts of Jax will set up helper methods and
|
|
7
|
+
* delegation methods for a View to make use of.
|
|
8
|
+
*
|
|
9
|
+
* For example, one of the most common tasks for a View is to clear the
|
|
10
|
+
* rendering canvas:
|
|
11
|
+
*
|
|
12
|
+
* this.glClear(GL_COLOR_BIT | GL_DEPTH_BUFFER_BIT);
|
|
13
|
+
*
|
|
14
|
+
* The _glClear_ method is delegated into the Jax.Context associated with
|
|
15
|
+
* this view.
|
|
16
|
+
*
|
|
17
|
+
* By default, in addition to all WebGL methods, the following delegates and
|
|
18
|
+
* properties are created by Jax:
|
|
19
|
+
*
|
|
20
|
+
* * *world* - the instance of Jax.World that houses all of the objects in
|
|
21
|
+
* the scene
|
|
22
|
+
* * *player* - the instance of Jax.Player for this context containing information
|
|
23
|
+
* about the human user.
|
|
24
|
+
* * *context* - the instance of Jax.Context that this view is associated with.
|
|
25
|
+
*
|
|
26
|
+
**/
|
|
27
|
+
Jax.View = (function() {
|
|
28
|
+
return Jax.Class.create({
|
|
29
|
+
initialize: function(view_func) {
|
|
30
|
+
this.view_func = view_func;
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
render: function() {
|
|
34
|
+
this.view_func();
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
})();
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* class Jax.ViewManager
|
|
3
|
+
*
|
|
4
|
+
**/
|
|
5
|
+
Jax.ViewManager = (function() {
|
|
6
|
+
return Jax.Class.create({
|
|
7
|
+
initialize: function() {
|
|
8
|
+
this.views = {};
|
|
9
|
+
},
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Jax.ViewManager#push(path, view) -> undefined
|
|
13
|
+
* - path (String): the view path to be stored
|
|
14
|
+
* - view (Function): a function to be called when rendering the view
|
|
15
|
+
*
|
|
16
|
+
* If the path is already stored, the current one will be replaced.
|
|
17
|
+
**/
|
|
18
|
+
push: function(path, view) {
|
|
19
|
+
this.views[path] = view;
|
|
20
|
+
},
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Jax.ViewManager#get(path) -> Object
|
|
24
|
+
* - path (String): the view path to be returned.
|
|
25
|
+
*
|
|
26
|
+
* Note that every call to this method produces a new instance of Jax.View,
|
|
27
|
+
* so be aware that this can cause efficiency problems and memory leaks
|
|
28
|
+
* if not handled appropriately.
|
|
29
|
+
**/
|
|
30
|
+
get: function(path) {
|
|
31
|
+
if (this.views[path])
|
|
32
|
+
return new Jax.View(this.views[path]);
|
|
33
|
+
else throw new Error("Could not find view at '"+path+"'!");
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
/** alias of: Jax.ViewManager#get
|
|
37
|
+
* Jax.ViewManager#find(path) -> Object
|
|
38
|
+
* - path (String): the view path to be returned.
|
|
39
|
+
*
|
|
40
|
+
* Note that every call to this method produces a new instance of Jax.View,
|
|
41
|
+
* so be aware that this can cause efficiency problems and memory leaks
|
|
42
|
+
* if not handled appropriately.
|
|
43
|
+
**/
|
|
44
|
+
find: function(path) { return this.get(path); }
|
|
45
|
+
});
|
|
46
|
+
})();
|