ogre.rb 0.1-i686-linux → 0.2-i686-linux
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/README +43 -5
- data/Rakefile +67 -165
- data/lib/application.rb +2 -1
- data/lib/application_frame_listener.rb +17 -17
- data/lib/ogre.so +0 -0
- data/lib/ruby_ois.so +0 -0
- data/ogre.rb +3 -0
- data/samples/Ogre.log +358 -257
- data/samples/cel_shading.rb +85 -0
- data/samples/grass.rb +1 -1
- data/samples/media/materials/programs/CelShading.cg +63 -0
- data/samples/media/materials/scripts/CelShading.material +68 -0
- data/samples/media/materials/textures/cel_shading_diffuse.png +0 -0
- data/samples/media/materials/textures/cel_shading_edge.png +0 -0
- data/samples/media/materials/textures/cel_shading_specular.png +0 -0
- data/samples/ogre.cfg +1 -2
- data/samples/plugins.cfg +3 -2
- data/test/ogre.cfg +10 -0
- data/{samples/navi → test}/plugins.cfg +2 -4
- data/test/test_helper.rb +67 -0
- data/test/unit/constants_test.rb +66 -0
- data/test/unit/frame_stats_proxy_test.rb +28 -0
- data/test/unit/math_test.rb +20 -0
- data/test/unit/mesh_test.rb +15 -0
- data/test/unit/methods_test.rb +98 -0
- data/test/unit/movable_object_test.rb +19 -0
- data/test/unit/name_value_pair_list_test.rb +12 -0
- data/test/unit/overlay_element_test.rb +20 -0
- data/test/unit/render_target_test.rb +11 -0
- data/test/unit/resource_test.rb +26 -0
- data/test/unit/scene_manager_test.rb +21 -0
- metadata +25 -356
- data/samples/navi/Media/NaviDemo.material +0 -60
- data/samples/navi/Media/OgreCore.zip +0 -0
- data/samples/navi/Media/cerulean.jpg +0 -0
- data/samples/navi/Media/clouds.jpg +0 -0
- data/samples/navi/Media/controlsNaviMask.png +0 -0
- data/samples/navi/Media/grass.jpg +0 -0
- data/samples/navi/Media/knot.mesh +0 -0
- data/samples/navi/Media/testNaviMask.png +0 -0
- data/samples/navi/NaviLocal/Navi.js +0 -136
- data/samples/navi/NaviLocal/buttonBg.jpg +0 -0
- data/samples/navi/NaviLocal/controls.html +0 -303
- data/samples/navi/NaviLocal/knobBg.jpg +0 -0
- data/samples/navi/NaviLocal/moo.dropdownmenu.js +0 -87
- data/samples/navi/NaviLocal/mootools.v1.1.js +0 -6964
- data/samples/navi/NaviLocal/naviLogo.html +0 -32
- data/samples/navi/NaviLocal/naviLogo.png +0 -0
- data/samples/navi/NaviLocal/pageBg.jpg +0 -0
- data/samples/navi/NaviLocal/sliderBg.jpg +0 -0
- data/samples/navi/NaviLocal/test.html +0 -5
- data/samples/navi/NaviLocal/welcome.html +0 -36
- data/samples/navi/NaviLocal/welcome.png +0 -0
- data/samples/navi/chrome/chromelist.txt +0 -597
- data/samples/navi/chrome/classic.jar +0 -0
- data/samples/navi/chrome/classic.manifest +0 -4
- data/samples/navi/chrome/comm.jar +0 -0
- data/samples/navi/chrome/comm.manifest +0 -2
- data/samples/navi/chrome/en-US.jar +0 -0
- data/samples/navi/chrome/en-US.manifest +0 -9
- data/samples/navi/chrome/toolkit.jar +0 -0
- data/samples/navi/chrome/toolkit.manifest +0 -6
- data/samples/navi/components/FeedProcessor.js +0 -1825
- data/samples/navi/components/alerts.xpt +0 -0
- data/samples/navi/components/appshell.xpt +0 -0
- data/samples/navi/components/appstartup.xpt +0 -0
- data/samples/navi/components/auth.dll +0 -0
- data/samples/navi/components/autocomplete.xpt +0 -0
- data/samples/navi/components/autoconfig.dll +0 -0
- data/samples/navi/components/autoconfig.xpt +0 -0
- data/samples/navi/components/caps.xpt +0 -0
- data/samples/navi/components/chardet.xpt +0 -0
- data/samples/navi/components/chrome.xpt +0 -0
- data/samples/navi/components/commandhandler.xpt +0 -0
- data/samples/navi/components/commandlines.xpt +0 -0
- data/samples/navi/components/composer.xpt +0 -0
- data/samples/navi/components/compreg.dat +0 -1474
- data/samples/navi/components/content_base.xpt +0 -0
- data/samples/navi/components/content_html.xpt +0 -0
- data/samples/navi/components/content_htmldoc.xpt +0 -0
- data/samples/navi/components/content_xmldoc.xpt +0 -0
- data/samples/navi/components/content_xslt.xpt +0 -0
- data/samples/navi/components/content_xtf.xpt +0 -0
- data/samples/navi/components/directory.xpt +0 -0
- data/samples/navi/components/docshell_base.xpt +0 -0
- data/samples/navi/components/dom.xpt +0 -0
- data/samples/navi/components/dom_base.xpt +0 -0
- data/samples/navi/components/dom_canvas.xpt +0 -0
- data/samples/navi/components/dom_core.xpt +0 -0
- data/samples/navi/components/dom_css.xpt +0 -0
- data/samples/navi/components/dom_events.xpt +0 -0
- data/samples/navi/components/dom_html.xpt +0 -0
- data/samples/navi/components/dom_loadsave.xpt +0 -0
- data/samples/navi/components/dom_range.xpt +0 -0
- data/samples/navi/components/dom_sidebar.xpt +0 -0
- data/samples/navi/components/dom_storage.xpt +0 -0
- data/samples/navi/components/dom_stylesheets.xpt +0 -0
- data/samples/navi/components/dom_svg.xpt +0 -0
- data/samples/navi/components/dom_traversal.xpt +0 -0
- data/samples/navi/components/dom_views.xpt +0 -0
- data/samples/navi/components/dom_xbl.xpt +0 -0
- data/samples/navi/components/dom_xpath.xpt +0 -0
- data/samples/navi/components/dom_xul.xpt +0 -0
- data/samples/navi/components/downloads.xpt +0 -0
- data/samples/navi/components/editor.xpt +0 -0
- data/samples/navi/components/embed_base.xpt +0 -0
- data/samples/navi/components/extensions.xpt +0 -0
- data/samples/navi/components/exthandler.xpt +0 -0
- data/samples/navi/components/fastfind.xpt +0 -0
- data/samples/navi/components/feeds.xpt +0 -0
- data/samples/navi/components/find.xpt +0 -0
- data/samples/navi/components/gfx.xpt +0 -0
- data/samples/navi/components/gksvgrenderer.xpt +0 -0
- data/samples/navi/components/history.xpt +0 -0
- data/samples/navi/components/htmlparser.xpt +0 -0
- data/samples/navi/components/imglib2.xpt +0 -0
- data/samples/navi/components/inspector.xpt +0 -0
- data/samples/navi/components/intl.xpt +0 -0
- data/samples/navi/components/intlcmpt.xpt +0 -0
- data/samples/navi/components/jar.xpt +0 -0
- data/samples/navi/components/jsconsole-clhandler.js +0 -170
- data/samples/navi/components/jsconsole.xpt +0 -0
- data/samples/navi/components/jsdservice.xpt +0 -0
- data/samples/navi/components/layout_base.xpt +0 -0
- data/samples/navi/components/layout_printing.xpt +0 -0
- data/samples/navi/components/layout_xul.xpt +0 -0
- data/samples/navi/components/layout_xul_tree.xpt +0 -0
- data/samples/navi/components/locale.xpt +0 -0
- data/samples/navi/components/lwbrk.xpt +0 -0
- data/samples/navi/components/mimetype.xpt +0 -0
- data/samples/navi/components/mozbrwsr.xpt +0 -0
- data/samples/navi/components/mozfind.xpt +0 -0
- data/samples/navi/components/necko.xpt +0 -0
- data/samples/navi/components/necko_about.xpt +0 -0
- data/samples/navi/components/necko_cache.xpt +0 -0
- data/samples/navi/components/necko_cookie.xpt +0 -0
- data/samples/navi/components/necko_data.xpt +0 -0
- data/samples/navi/components/necko_dns.xpt +0 -0
- data/samples/navi/components/necko_file.xpt +0 -0
- data/samples/navi/components/necko_ftp.xpt +0 -0
- data/samples/navi/components/necko_http.xpt +0 -0
- data/samples/navi/components/necko_res.xpt +0 -0
- data/samples/navi/components/necko_socket.xpt +0 -0
- data/samples/navi/components/necko_strconv.xpt +0 -0
- data/samples/navi/components/necko_viewsource.xpt +0 -0
- data/samples/navi/components/nsCloseAllWindows.js +0 -143
- data/samples/navi/components/nsDefaultCLH.js +0 -231
- data/samples/navi/components/nsDictionary.js +0 -148
- data/samples/navi/components/nsExtensionManager.js +0 -8497
- data/samples/navi/components/nsHelperAppDlg.js +0 -990
- data/samples/navi/components/nsInterfaceInfoToIDL.js +0 -590
- data/samples/navi/components/nsKillAll.js +0 -200
- data/samples/navi/components/nsPostUpdateWin.js +0 -711
- data/samples/navi/components/nsProgressDialog.js +0 -949
- data/samples/navi/components/nsProxyAutoConfig.js +0 -396
- data/samples/navi/components/nsResetPref.js +0 -175
- data/samples/navi/components/nsURLFormatter.js +0 -179
- data/samples/navi/components/nsUpdateService.js +0 -3074
- data/samples/navi/components/nsXULAppInstall.js +0 -301
- data/samples/navi/components/nsXmlRpcClient.js +0 -1038
- data/samples/navi/components/oji.xpt +0 -0
- data/samples/navi/components/passwordmgr.xpt +0 -0
- data/samples/navi/components/pipboot.xpt +0 -0
- data/samples/navi/components/pipnss.xpt +0 -0
- data/samples/navi/components/plugin.xpt +0 -0
- data/samples/navi/components/pref.xpt +0 -0
- data/samples/navi/components/prefetch.xpt +0 -0
- data/samples/navi/components/profile.xpt +0 -0
- data/samples/navi/components/progressDlg.xpt +0 -0
- data/samples/navi/components/proxyObject.xpt +0 -0
- data/samples/navi/components/rdf.xpt +0 -0
- data/samples/navi/components/satchel.xpt +0 -0
- data/samples/navi/components/saxparser.xpt +0 -0
- data/samples/navi/components/shistory.xpt +0 -0
- data/samples/navi/components/storage.xpt +0 -0
- data/samples/navi/components/toolkitprofile.xpt +0 -0
- data/samples/navi/components/transformiix.dll +0 -0
- data/samples/navi/components/txmgr.xpt +0 -0
- data/samples/navi/components/txtsvc.xpt +0 -0
- data/samples/navi/components/uconv.xpt +0 -0
- data/samples/navi/components/unicharutil.xpt +0 -0
- data/samples/navi/components/universalchardet.dll +0 -0
- data/samples/navi/components/update.xpt +0 -0
- data/samples/navi/components/uriloader.xpt +0 -0
- data/samples/navi/components/urlformatter.xpt +0 -0
- data/samples/navi/components/webBrowser_core.xpt +0 -0
- data/samples/navi/components/webbrowserpersist.xpt +0 -0
- data/samples/navi/components/webshell_idls.xpt +0 -0
- data/samples/navi/components/websrvcs.dll +0 -0
- data/samples/navi/components/websrvcs.xpt +0 -0
- data/samples/navi/components/widget.xpt +0 -0
- data/samples/navi/components/windowds.xpt +0 -0
- data/samples/navi/components/windowwatcher.xpt +0 -0
- data/samples/navi/components/xml-rpc.xpt +0 -0
- data/samples/navi/components/xmlextras.dll +0 -0
- data/samples/navi/components/xpcom_base.xpt +0 -0
- data/samples/navi/components/xpcom_components.xpt +0 -0
- data/samples/navi/components/xpcom_ds.xpt +0 -0
- data/samples/navi/components/xpcom_io.xpt +0 -0
- data/samples/navi/components/xpcom_obsolete.xpt +0 -0
- data/samples/navi/components/xpcom_thread.xpt +0 -0
- data/samples/navi/components/xpcom_xpti.xpt +0 -0
- data/samples/navi/components/xpconnect.xpt +0 -0
- data/samples/navi/components/xpinstall.xpt +0 -0
- data/samples/navi/components/xpti.dat +0 -1424
- data/samples/navi/components/xulapp.xpt +0 -0
- data/samples/navi/components/xulapp_setup.xpt +0 -0
- data/samples/navi/components/xuldoc.xpt +0 -0
- data/samples/navi/components/xulrunner.xpt +0 -0
- data/samples/navi/components/xultmpl.xpt +0 -0
- data/samples/navi/components/xulutil.dll +0 -0
- data/samples/navi/controlsNaviMask.png +0 -0
- data/samples/navi/greprefs/all.js +0 -1344
- data/samples/navi/greprefs/security-prefs.js +0 -69
- data/samples/navi/greprefs/xpinstall.js +0 -2
- data/samples/navi/navi_demo.rb +0 -207
- data/samples/navi/plugins/NPSWF32.dll +0 -0
- data/samples/navi/plugins/flashplayer.xpt +0 -0
- data/samples/navi/plugins/npnul32.dll +0 -0
- data/samples/navi/res/EditorOverride.css +0 -359
- data/samples/navi/res/Thumbs.db +0 -0
- data/samples/navi/res/arrow.gif +0 -0
- data/samples/navi/res/arrowd.gif +0 -0
- data/samples/navi/res/bloatcycle.html +0 -40
- data/samples/navi/res/broken-image.gif +0 -0
- data/samples/navi/res/charsetData.properties +0 -199
- data/samples/navi/res/charsetalias.properties +0 -517
- data/samples/navi/res/cmessage.txt +0 -1
- data/samples/navi/res/dtd/xhtml11.dtd +0 -300
- data/samples/navi/res/entityTables/html40Latin1.properties +0 -146
- data/samples/navi/res/entityTables/html40Special.properties +0 -69
- data/samples/navi/res/entityTables/html40Symbols.properties +0 -164
- data/samples/navi/res/entityTables/htmlEntityVersions.properties +0 -50
- data/samples/navi/res/entityTables/transliterate.properties +0 -2367
- data/samples/navi/res/fonts/fontEncoding.properties +0 -127
- data/samples/navi/res/fonts/fontNameMap.properties +0 -134
- data/samples/navi/res/forms.css +0 -531
- data/samples/navi/res/grabber.gif +0 -0
- data/samples/navi/res/hiddenWindow.html +0 -1
- data/samples/navi/res/html/Thumbs.db +0 -0
- data/samples/navi/res/html/gopher-audio.gif +0 -0
- data/samples/navi/res/html/gopher-binary.gif +0 -0
- data/samples/navi/res/html/gopher-find.gif +0 -0
- data/samples/navi/res/html/gopher-image.gif +0 -0
- data/samples/navi/res/html/gopher-menu.gif +0 -0
- data/samples/navi/res/html/gopher-movie.gif +0 -0
- data/samples/navi/res/html/gopher-sound.gif +0 -0
- data/samples/navi/res/html/gopher-telnet.gif +0 -0
- data/samples/navi/res/html/gopher-text.gif +0 -0
- data/samples/navi/res/html/gopher-unknown.gif +0 -0
- data/samples/navi/res/html.css +0 -478
- data/samples/navi/res/langGroups.properties +0 -236
- data/samples/navi/res/language.properties +0 -259
- data/samples/navi/res/loading-image.gif +0 -0
- data/samples/navi/res/quirk.css +0 -282
- data/samples/navi/res/samples/Anieyes.gif +0 -0
- data/samples/navi/res/samples/Thumbs.db +0 -0
- data/samples/navi/res/samples/aform.css +0 -69
- data/samples/navi/res/samples/beeptest.html +0 -18
- data/samples/navi/res/samples/bform.css +0 -45
- data/samples/navi/res/samples/bg.jpg +0 -0
- data/samples/navi/res/samples/cform.css +0 -40
- data/samples/navi/res/samples/checkboxTest.xul +0 -47
- data/samples/navi/res/samples/demoform.css +0 -97
- data/samples/navi/res/samples/find.html +0 -97
- data/samples/navi/res/samples/gear1.gif +0 -0
- data/samples/navi/res/samples/image_props.html +0 -58
- data/samples/navi/res/samples/mozform.css +0 -256
- data/samples/navi/res/samples/printsetup.html +0 -175
- data/samples/navi/res/samples/raptor.jpg +0 -0
- data/samples/navi/res/samples/rock_gra.gif +0 -0
- data/samples/navi/res/samples/scrollbarTest1.xul +0 -66
- data/samples/navi/res/samples/scrollbarTest2.xul +0 -19
- data/samples/navi/res/samples/sliderTest1.xul +0 -14
- data/samples/navi/res/samples/soundtest.html +0 -20
- data/samples/navi/res/samples/test.wav +0 -0
- data/samples/navi/res/samples/test0.html +0 -220
- data/samples/navi/res/samples/test1.html +0 -84
- data/samples/navi/res/samples/test10.html +0 -16
- data/samples/navi/res/samples/test11.html +0 -42
- data/samples/navi/res/samples/test12.html +0 -79
- data/samples/navi/res/samples/test13.html +0 -126
- data/samples/navi/res/samples/test14.html +0 -5
- data/samples/navi/res/samples/test15.html +0 -5
- data/samples/navi/res/samples/test16.html +0 -124
- data/samples/navi/res/samples/test2.html +0 -41
- data/samples/navi/res/samples/test3.html +0 -126
- data/samples/navi/res/samples/test4.html +0 -335
- data/samples/navi/res/samples/test5.html +0 -199
- data/samples/navi/res/samples/test6.html +0 -335
- data/samples/navi/res/samples/test7.html +0 -11
- data/samples/navi/res/samples/test8-1.html +0 -66
- data/samples/navi/res/samples/test8.html +0 -662
- data/samples/navi/res/samples/test8dom.html +0 -64
- data/samples/navi/res/samples/test8sca.html +0 -308
- data/samples/navi/res/samples/test8siz.html +0 -224
- data/samples/navi/res/samples/test8tab.html +0 -9
- data/samples/navi/res/samples/test9.html +0 -12
- data/samples/navi/res/samples/test9a.html +0 -39
- data/samples/navi/res/samples/test9b.html +0 -16
- data/samples/navi/res/samples/test_ed.html +0 -5
- data/samples/navi/res/samples/test_form.html +0 -34
- data/samples/navi/res/samples/test_gfx.html +0 -75
- data/samples/navi/res/samples/test_lbox.html +0 -100
- data/samples/navi/res/samples/test_pr.html +0 -87
- data/samples/navi/res/samples/test_weight.html +0 -45
- data/samples/navi/res/samples/toolbarTest1.xul +0 -51
- data/samples/navi/res/samples/treeTest1.css +0 -62
- data/samples/navi/res/samples/treeTest1.xul +0 -110
- data/samples/navi/res/samples/xulTest.css +0 -130
- data/samples/navi/res/svg.css +0 -64
- data/samples/navi/res/table-add-column-after-active.gif +0 -0
- data/samples/navi/res/table-add-column-after-hover.gif +0 -0
- data/samples/navi/res/table-add-column-after.gif +0 -0
- data/samples/navi/res/table-add-column-before-active.gif +0 -0
- data/samples/navi/res/table-add-column-before-hover.gif +0 -0
- data/samples/navi/res/table-add-column-before.gif +0 -0
- data/samples/navi/res/table-add-row-after-active.gif +0 -0
- data/samples/navi/res/table-add-row-after-hover.gif +0 -0
- data/samples/navi/res/table-add-row-after.gif +0 -0
- data/samples/navi/res/table-add-row-before-active.gif +0 -0
- data/samples/navi/res/table-add-row-before-hover.gif +0 -0
- data/samples/navi/res/table-add-row-before.gif +0 -0
- data/samples/navi/res/table-remove-column-active.gif +0 -0
- data/samples/navi/res/table-remove-column-hover.gif +0 -0
- data/samples/navi/res/table-remove-column.gif +0 -0
- data/samples/navi/res/table-remove-row-active.gif +0 -0
- data/samples/navi/res/table-remove-row-hover.gif +0 -0
- data/samples/navi/res/table-remove-row.gif +0 -0
- data/samples/navi/res/throbber/Thumbs.db +0 -0
- data/samples/navi/res/throbber/anim.gif +0 -0
- data/samples/navi/res/throbber/anims00.gif +0 -0
- data/samples/navi/res/throbber/anims01.gif +0 -0
- data/samples/navi/res/throbber/anims02.gif +0 -0
- data/samples/navi/res/throbber/anims03.gif +0 -0
- data/samples/navi/res/throbber/anims04.gif +0 -0
- data/samples/navi/res/throbber/anims05.gif +0 -0
- data/samples/navi/res/throbber/anims06.gif +0 -0
- data/samples/navi/res/throbber/anims07.gif +0 -0
- data/samples/navi/res/throbber/anims08.gif +0 -0
- data/samples/navi/res/throbber/anims09.gif +0 -0
- data/samples/navi/res/throbber/anims10.gif +0 -0
- data/samples/navi/res/throbber/anims11.gif +0 -0
- data/samples/navi/res/throbber/anims12.gif +0 -0
- data/samples/navi/res/throbber/anims13.gif +0 -0
- data/samples/navi/res/throbber/anims14.gif +0 -0
- data/samples/navi/res/throbber/anims15.gif +0 -0
- data/samples/navi/res/throbber/anims16.gif +0 -0
- data/samples/navi/res/throbber/anims17.gif +0 -0
- data/samples/navi/res/throbber/anims18.gif +0 -0
- data/samples/navi/res/throbber/anims19.gif +0 -0
- data/samples/navi/res/throbber/anims20.gif +0 -0
- data/samples/navi/res/throbber/anims21.gif +0 -0
- data/samples/navi/res/throbber/anims22.gif +0 -0
- data/samples/navi/res/throbber/anims23.gif +0 -0
- data/samples/navi/res/throbber/anims24.gif +0 -0
- data/samples/navi/res/throbber/anims25.gif +0 -0
- data/samples/navi/res/throbber/anims26.gif +0 -0
- data/samples/navi/res/throbber/anims27.gif +0 -0
- data/samples/navi/res/throbber/anims28.gif +0 -0
- data/samples/navi/res/throbber/anims29.gif +0 -0
- data/samples/navi/res/ua.css +0 -235
- data/samples/navi/res/viewer.properties +0 -1
- data/samples/navi/res/viewsource.css +0 -118
- data/samples/navi/res/wincharset.properties +0 -55
- data/samples/navi/resources.cfg +0 -14
- data/samples/navi/testNaviMask.png +0 -0
- data/samples/render_run_log.5796 +0 -891
@@ -0,0 +1,85 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
|
3
|
+
$: << File.dirname(__FILE__) + "/.."
|
4
|
+
require 'ogre'
|
5
|
+
require 'application'
|
6
|
+
include Ogre
|
7
|
+
|
8
|
+
CUSTOM_SHININESS = 1
|
9
|
+
CUSTOM_DIFFUSE = 2
|
10
|
+
CUSTOM_SPECULAR = 3
|
11
|
+
|
12
|
+
class CelShadingListener < ApplicationFrameListener
|
13
|
+
def initialize(root, window, camera, scene_manager)
|
14
|
+
super(root, window, camera)
|
15
|
+
@scene_manager = scene_manager
|
16
|
+
@curvature = 1
|
17
|
+
@tiling = 15
|
18
|
+
|
19
|
+
@time_delay = 0
|
20
|
+
end
|
21
|
+
|
22
|
+
def frame_started(event)
|
23
|
+
return false unless super(event)
|
24
|
+
|
25
|
+
$rot_node.yaw(Degree.new(event.time_since_last_frame * 30))
|
26
|
+
|
27
|
+
true
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class CelShadingApplication < Ogre::Application
|
32
|
+
|
33
|
+
def create_scene
|
34
|
+
caps = root.get_render_system.get_capabilities
|
35
|
+
if !caps.has_capability?(RSC_VERTEX_PROGRAM) || !caps.has_capability?(RSC_FRAGMENT_PROGRAM)
|
36
|
+
raise "Your card does not support vertex or fragmet programs, so we cannot run this demo. Sorry"
|
37
|
+
end
|
38
|
+
|
39
|
+
light = scene_manager.create_light("MainLight")
|
40
|
+
$rot_node = scene_manager.root_scene_node.create_child_scene_node
|
41
|
+
$rot_node.create_child_scene_node(Vector3.new(20, 40, 50)).attach_object(light)
|
42
|
+
|
43
|
+
ent = scene_manager.create_entity("head", "ogrehead.mesh")
|
44
|
+
|
45
|
+
camera.set_position(20, 0, 100)
|
46
|
+
camera.look_at(0,0,0)
|
47
|
+
|
48
|
+
# eyes
|
49
|
+
sub = ent.get_sub_entity(0)
|
50
|
+
sub.set_material_name("CelShading")
|
51
|
+
sub.set_custom_parameter(CUSTOM_SHININESS, Vector4.new(35.0, 0.0, 0.0, 0.0))
|
52
|
+
sub.set_custom_parameter(CUSTOM_DIFFUSE, Vector4.new(1.0, 0.3, 0.3, 1.0))
|
53
|
+
sub.set_custom_parameter(CUSTOM_SPECULAR, Vector4.new(1.0, 0.6, 0.6, 1.0))
|
54
|
+
# skin
|
55
|
+
sub = ent.get_sub_entity(1)
|
56
|
+
sub.set_material_name("CelShading")
|
57
|
+
sub.set_custom_parameter(CUSTOM_SHININESS, Vector4.new(10.0, 0.0, 0.0, 0.0))
|
58
|
+
sub.set_custom_parameter(CUSTOM_DIFFUSE, Vector4.new(0.0, 0.5, 0.0, 1.0))
|
59
|
+
sub.set_custom_parameter(CUSTOM_SPECULAR, Vector4.new(0.3, 0.5, 0.3, 1.0))
|
60
|
+
# earring
|
61
|
+
sub = ent.get_sub_entity(2)
|
62
|
+
sub.set_material_name("CelShading")
|
63
|
+
sub.set_custom_parameter(CUSTOM_SHININESS, Vector4.new(25.0, 0.0, 0.0, 0.0))
|
64
|
+
sub.set_custom_parameter(CUSTOM_DIFFUSE, Vector4.new(1.0, 1.0, 0.0, 1.0))
|
65
|
+
sub.set_custom_parameter(CUSTOM_SPECULAR, Vector4.new(1.0, 1.0, 0.7, 1.0))
|
66
|
+
# teeth
|
67
|
+
sub = ent.get_sub_entity(3)
|
68
|
+
sub.set_material_name("CelShading")
|
69
|
+
sub.set_custom_parameter(CUSTOM_SHININESS, Vector4.new(20.0, 0.0, 0.0, 0.0))
|
70
|
+
sub.set_custom_parameter(CUSTOM_DIFFUSE, Vector4.new(1.0, 1.0, 0.7, 1.0))
|
71
|
+
sub.set_custom_parameter(CUSTOM_SPECULAR, Vector4.new(1.0, 1.0, 1.0, 1.0))
|
72
|
+
|
73
|
+
# Add entity to the root scene node
|
74
|
+
scene_manager.root_scene_node.create_child_scene_node.attach_object(ent)
|
75
|
+
|
76
|
+
window.get_viewport(0).set_background_colour(ColourValue.White)
|
77
|
+
end
|
78
|
+
|
79
|
+
def create_frame_listener
|
80
|
+
self.frame_listener = CelShadingListener.new(root, window, camera, scene_manager)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
app = CelShadingApplication.new
|
85
|
+
app.go
|
data/samples/grass.rb
CHANGED
@@ -74,7 +74,7 @@ class GrassListener < ApplicationFrameListener
|
|
74
74
|
$anim_state.add_time(event.time_since_last_frame)
|
75
75
|
end
|
76
76
|
|
77
|
-
if keyboard.key_down?(OIS::KC_B) && time_delay <= 0
|
77
|
+
if keyboard.key_down?(OIS::KC_B) && @time_delay <= 0
|
78
78
|
@time_delay = 1
|
79
79
|
@show_bbs = !@show_bbs
|
80
80
|
@scene_manager.show_bounding_boxes(@show_bbs)
|
@@ -0,0 +1,63 @@
|
|
1
|
+
|
2
|
+
/* Cel shading vertex program for single-pass rendering
|
3
|
+
In this program, we want to calculate the diffuse and specular
|
4
|
+
ramp components, and the edge factor (for doing simple outlining)
|
5
|
+
For the outlining to look good, we need a pretty well curved model.
|
6
|
+
*/
|
7
|
+
void main_vp(float4 position : POSITION,
|
8
|
+
float3 normal : NORMAL,
|
9
|
+
// outputs
|
10
|
+
out float4 oPosition : POSITION,
|
11
|
+
out float diffuse : TEXCOORD0,
|
12
|
+
out float specular : TEXCOORD1,
|
13
|
+
out float edge : TEXCOORD2,
|
14
|
+
// parameters
|
15
|
+
uniform float3 lightPosition, // object space
|
16
|
+
uniform float3 eyePosition, // object space
|
17
|
+
uniform float4 shininess,
|
18
|
+
uniform float4x4 worldViewProj)
|
19
|
+
{
|
20
|
+
// calculate output position
|
21
|
+
oPosition = mul(worldViewProj, position);
|
22
|
+
|
23
|
+
// calculate light vector
|
24
|
+
float3 N = normalize(normal);
|
25
|
+
float3 L = normalize(lightPosition - position.xyz);
|
26
|
+
|
27
|
+
// Calculate diffuse component
|
28
|
+
diffuse = max(dot(N, L) , 0);
|
29
|
+
|
30
|
+
// Calculate specular component
|
31
|
+
float3 E = normalize(eyePosition - position.xyz);
|
32
|
+
float3 H = normalize(L + E);
|
33
|
+
specular = pow(max(dot(N, H), 0), shininess);
|
34
|
+
// Mask off specular if diffuse is 0
|
35
|
+
if (diffuse == 0) specular = 0;
|
36
|
+
|
37
|
+
// Edge detection, dot eye and normal vectors
|
38
|
+
edge = max(dot(N, E), 0);
|
39
|
+
}
|
40
|
+
|
41
|
+
void main_fp(float diffuseIn : TEXCOORD0,
|
42
|
+
float specularIn : TEXCOORD1,
|
43
|
+
float edge : TEXCOORD2,
|
44
|
+
|
45
|
+
out float4 colour : COLOR,
|
46
|
+
|
47
|
+
uniform float4 diffuse,
|
48
|
+
uniform float4 specular,
|
49
|
+
|
50
|
+
uniform sampler1D diffuseRamp,
|
51
|
+
uniform sampler1D specularRamp,
|
52
|
+
uniform sampler1D edgeRamp)
|
53
|
+
{
|
54
|
+
// Step functions from textures
|
55
|
+
diffuseIn = tex1D(diffuseRamp, diffuseIn).x;
|
56
|
+
specularIn = tex1D(specularRamp, specularIn).x;
|
57
|
+
edge = tex1D(edgeRamp, edge).x;
|
58
|
+
|
59
|
+
colour = edge * ((diffuse * diffuseIn) +
|
60
|
+
(specular * specularIn));
|
61
|
+
}
|
62
|
+
|
63
|
+
|
@@ -0,0 +1,68 @@
|
|
1
|
+
// -------------------------------
|
2
|
+
// Cel Shading Section
|
3
|
+
// -------------------------------
|
4
|
+
vertex_program Ogre/CelShadingVP cg
|
5
|
+
{
|
6
|
+
source CelShading.cg
|
7
|
+
entry_point main_vp
|
8
|
+
profiles vs_1_1 arbvp1
|
9
|
+
|
10
|
+
default_params
|
11
|
+
{
|
12
|
+
param_named_auto lightPosition light_position_object_space 0
|
13
|
+
param_named_auto eyePosition camera_position_object_space
|
14
|
+
param_named_auto worldViewProj worldviewproj_matrix
|
15
|
+
param_named shininess float 10
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
fragment_program Ogre/CelShadingFP cg
|
20
|
+
{
|
21
|
+
source CelShading.cg
|
22
|
+
entry_point main_fp
|
23
|
+
profiles ps_1_1 arbfp1 fp20
|
24
|
+
}
|
25
|
+
|
26
|
+
|
27
|
+
material CelShading
|
28
|
+
{
|
29
|
+
technique
|
30
|
+
{
|
31
|
+
pass
|
32
|
+
{
|
33
|
+
vertex_program_ref Ogre/CelShadingVP
|
34
|
+
{
|
35
|
+
// map shininess from custom renderable param 1
|
36
|
+
param_named_auto shininess custom 1
|
37
|
+
}
|
38
|
+
fragment_program_ref Ogre/CelShadingFP
|
39
|
+
{
|
40
|
+
// map diffuse from custom renderable param 2
|
41
|
+
param_named_auto diffuse custom 2
|
42
|
+
// map specular from custom renderable param 2
|
43
|
+
param_named_auto specular custom 3
|
44
|
+
}
|
45
|
+
texture_unit
|
46
|
+
{
|
47
|
+
texture cel_shading_diffuse.png 1d
|
48
|
+
tex_address_mode clamp
|
49
|
+
filtering none
|
50
|
+
}
|
51
|
+
texture_unit
|
52
|
+
{
|
53
|
+
texture cel_shading_specular.png 1d
|
54
|
+
tex_address_mode clamp
|
55
|
+
filtering none
|
56
|
+
tex_coord_set 1
|
57
|
+
}
|
58
|
+
texture_unit
|
59
|
+
{
|
60
|
+
texture cel_shading_edge.png 1d
|
61
|
+
tex_address_mode clamp
|
62
|
+
filtering none
|
63
|
+
tex_coord_set 2
|
64
|
+
}
|
65
|
+
}
|
66
|
+
}
|
67
|
+
|
68
|
+
}
|
Binary file
|
Binary file
|
Binary file
|
data/samples/ogre.cfg
CHANGED
data/samples/plugins.cfg
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
# Defines plugins to load
|
2
2
|
|
3
3
|
# Define plugin folder
|
4
|
-
#PluginFolder=D:\Programming\engines\Ogre1.4.
|
5
|
-
PluginFolder=/usr/local/lib/OGRE/
|
4
|
+
#PluginFolder=D:\Programming\engines\Ogre1.4.4SDK\bin\release
|
5
|
+
PluginFolder=/usr/local/ogre/lib/OGRE/
|
6
6
|
|
7
7
|
Plugin=RenderSystem_GL
|
8
|
+
#Plugin=RenderSystem_Direct3D9
|
8
9
|
Plugin=Plugin_OctreeSceneManager
|
9
10
|
Plugin=Plugin_ParticleFX
|
10
11
|
Plugin=Plugin_BSPSceneManager
|
data/test/ogre.cfg
ADDED
@@ -1,10 +1,8 @@
|
|
1
1
|
# Defines plugins to load
|
2
2
|
|
3
3
|
# Define plugin folder
|
4
|
-
PluginFolder
|
4
|
+
PluginFolder=D:\Programming\engines\Ogre1.4.4SDK\bin\release
|
5
5
|
#PluginFolder=/usr/local/lib/OGRE/
|
6
6
|
|
7
7
|
Plugin=RenderSystem_GL
|
8
|
-
Plugin=
|
9
|
-
Plugin=Plugin_OctreeSceneManager
|
10
|
-
Plugin=Plugin_ParticleFX
|
8
|
+
#Plugin=Plugin_ParticleFX
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
$: << File.expand_path( File.dirname(__FILE__) )
|
2
|
+
require File.dirname(__FILE__) + "/../ogre"
|
3
|
+
require "test/unit"
|
4
|
+
|
5
|
+
class Test::Unit::TestCase
|
6
|
+
include Ogre
|
7
|
+
|
8
|
+
# Run through Ogre setup routines so we have access to the system.
|
9
|
+
#
|
10
|
+
# Any test classes that override #setup will need to call super
|
11
|
+
#
|
12
|
+
# I use class variables to make sure only one window pops up instead
|
13
|
+
# of one per test case, which would make things really, really slow.
|
14
|
+
# In the else clause here, do any cleanup you need.
|
15
|
+
def setup
|
16
|
+
@@root ||= nil
|
17
|
+
unless @@root
|
18
|
+
@@log_manager = LogManager.new
|
19
|
+
@@log_manager.create_log("Test.log",true,false,false)
|
20
|
+
|
21
|
+
dir = File.expand_path( File.dirname(__FILE__) )
|
22
|
+
@@root = Root.new "#{dir}/plugins.cfg", "#{dir}/ogre.cfg", "Test.log"
|
23
|
+
@@scene_manager = @@root.create_scene_manager(ST_GENERIC, "test")
|
24
|
+
|
25
|
+
# If needed later
|
26
|
+
#media_path = File.expand_path(File.dirname(__FILE__)+"/media")
|
27
|
+
#ResourceGroupManager.instance.add_resource_location(media_path, "FileSystem", "General")
|
28
|
+
|
29
|
+
# Find a renderer to use
|
30
|
+
renderers = @@root.get_available_renderers
|
31
|
+
@@root.set_render_system(renderers[0])
|
32
|
+
|
33
|
+
@@root.initialise(false)
|
34
|
+
|
35
|
+
# I really, really don't want this!
|
36
|
+
# but I don't seem to have a choice right now.
|
37
|
+
@@window = @@root.create_render_window("Testing Ogre", 320, 240, false)
|
38
|
+
|
39
|
+
ResourceGroupManager.instance.initialise_all_resource_groups
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def teardown
|
44
|
+
@@scene_manager.clear_scene
|
45
|
+
end
|
46
|
+
|
47
|
+
def scene_manager
|
48
|
+
@@scene_manager
|
49
|
+
end
|
50
|
+
|
51
|
+
def window
|
52
|
+
@@window
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
# An interesting BDD function
|
57
|
+
def self.should(behave,&block)
|
58
|
+
mname = "test_should_#{behave}"
|
59
|
+
if block
|
60
|
+
define_method mname, &block
|
61
|
+
else
|
62
|
+
define_method mname do
|
63
|
+
flunk "#{self.class.name.sub(/Test$/,'')} should #{behave}"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
class ConstantsTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
should "have constantized methods for Vector3" do
|
6
|
+
{
|
7
|
+
:ZERO => [0, 0, 0],
|
8
|
+
:UNIT_X => [1, 0, 0],
|
9
|
+
:UNIT_Y => [0, 1, 0],
|
10
|
+
:UNIT_Z => [0, 0, 1],
|
11
|
+
:NEGATIVE_UNIT_X => [-1, 0, 0],
|
12
|
+
:NEGATIVE_UNIT_Y => [0, -1, 0],
|
13
|
+
:NEGATIVE_UNIT_Z => [0, 0, -1],
|
14
|
+
:UNIT_SCALE => [1, 1, 1]
|
15
|
+
}.each do |method, expected|
|
16
|
+
vec = Vector3.send(method)
|
17
|
+
assert_equal expected, [vec.x, vec.y, vec.z]
|
18
|
+
|
19
|
+
# And test that we don't destroy the initial data like
|
20
|
+
# Ruby constants like to do
|
21
|
+
vec.x = 10
|
22
|
+
vec.y = 20
|
23
|
+
vec.z = 30
|
24
|
+
vec2 = Vector3.send(method)
|
25
|
+
assert_not_equal [vec2.x, vec2.y, vec2.z], [vec.x, vec.y, vec.z]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
should "have constantized methods for Vector4" do
|
30
|
+
{
|
31
|
+
:ZERO => [0, 0, 0, 0],
|
32
|
+
}.each do |method, expected|
|
33
|
+
vec = Vector4.send(method)
|
34
|
+
assert_equal expected, [vec.x, vec.y, vec.z, vec.w]
|
35
|
+
|
36
|
+
# And test that we don't destroy the initial data like
|
37
|
+
# Ruby constants like to do
|
38
|
+
vec.x = 10
|
39
|
+
vec.y = 20
|
40
|
+
vec.z = 30
|
41
|
+
vec.w = 40
|
42
|
+
vec2 = Vector4.send(method)
|
43
|
+
assert_not_equal [vec2.x, vec2.y, vec2.z, vec2.w], [vec.x, vec.y, vec.z, vec.w]
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
should "have constantized methods for Quanternion" do
|
48
|
+
{
|
49
|
+
:ZERO => [0.0, 0.0, 0.0, 0.0],
|
50
|
+
:IDENTITY => [1.0, 0.0, 0.0, 0.0]
|
51
|
+
}.each do |method, expected|
|
52
|
+
quat = Quaternion.send(method)
|
53
|
+
assert_equal expected, [quat.w, quat.x, quat.y, quat.z]
|
54
|
+
|
55
|
+
# And test that we don't destroy the initial data like
|
56
|
+
# Ruby constants like to do
|
57
|
+
quat.x = 10
|
58
|
+
quat.y = 20
|
59
|
+
quat.z = 30
|
60
|
+
quat.w = 40
|
61
|
+
quat2 = Quaternion.send(method)
|
62
|
+
assert_not_equal [quat2.x, quat2.y, quat2.z, quat2.w], [quat.x, quat.y, quat.z, quat.w]
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
class FrameStatsProxyTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
should "wrap Ogre::FrameStats into our own FrameStatsProxy" do
|
6
|
+
stats = window.get_statistics
|
7
|
+
assert_not_nil stats
|
8
|
+
assert stats.is_a?(FrameStatsProxy)
|
9
|
+
end
|
10
|
+
|
11
|
+
should "have certain methods for accessing render stats" do
|
12
|
+
stats = FrameStatsProxy.new window
|
13
|
+
|
14
|
+
%w(
|
15
|
+
last_fps
|
16
|
+
avg_fps
|
17
|
+
best_fps
|
18
|
+
worst_fps
|
19
|
+
best_frame_time
|
20
|
+
worst_frame_time
|
21
|
+
triangle_count
|
22
|
+
batch_count
|
23
|
+
).each do |method|
|
24
|
+
assert stats.respond_to?(method)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
class MathTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
should "properly take in Degrees and Radians interchangably" do
|
6
|
+
light = scene_manager.create_light("Testing Light")
|
7
|
+
|
8
|
+
rad = Radian.new(::Math::PI)
|
9
|
+
deg = Degree.new(180)
|
10
|
+
|
11
|
+
# Radians in, Radians out
|
12
|
+
light.set_spotlight_inner_angle(rad)
|
13
|
+
assert_equal rad, light.get_spotlight_inner_angle
|
14
|
+
|
15
|
+
# Degrees in, Radians out
|
16
|
+
light.set_spotlight_inner_angle(deg)
|
17
|
+
assert_in_delta rad.value_radians,
|
18
|
+
light.get_spotlight_inner_angle.value_radians, 0.0001
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
class MeshTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
should "have a few new methods" do
|
6
|
+
assert Mesh.instance_methods.include?("shared_vertex_data=")
|
7
|
+
assert Mesh.instance_methods.include?("shared_vertex_data")
|
8
|
+
assert Mesh.instance_methods.include?("suggest_tangent_vector_build_params")
|
9
|
+
end
|
10
|
+
|
11
|
+
should "not have other methods" do
|
12
|
+
assert !Mesh.instance_methods.include?("get_pose_iterator")
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
class MethodsTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
should "be able to access Singletons through #instance" do
|
6
|
+
assert ResourceGroupManager.respond_to?(:instance)
|
7
|
+
assert MeshManager.respond_to?(:instance)
|
8
|
+
assert MaterialManager.respond_to?(:instance)
|
9
|
+
end
|
10
|
+
|
11
|
+
should "have numerous bang (!) or query (?) methods" do
|
12
|
+
assert Vector3.new.respond_to?(:normalise!)
|
13
|
+
assert RenderWindow.instance_methods.include?("closed?")
|
14
|
+
assert SubMesh.instance_methods.include?("is_mat_initialised?")
|
15
|
+
end
|
16
|
+
|
17
|
+
should "have certain methods" do
|
18
|
+
assert FrameEvent.instance_methods.include?("time_since_last_frame")
|
19
|
+
assert FrameEvent.instance_methods.include?("time_since_last_event")
|
20
|
+
end
|
21
|
+
|
22
|
+
should "be ignoring other methods for various reasons" do
|
23
|
+
assert !AxisAlignedBox.new.respond_to?(:get_corner)
|
24
|
+
|
25
|
+
assert !ResourceGroupManager.instance.respond_to?(:resource_exists)
|
26
|
+
|
27
|
+
assert !BillboardChain.instance_methods.include?(:add_chain_element)
|
28
|
+
assert !BillboardChain.instance_methods.include?(:update_chain_element)
|
29
|
+
assert !BillboardChain.instance_methods.include?(:get_chain_element)
|
30
|
+
|
31
|
+
assert !ConfigFile.instance_methods.include?(:load)
|
32
|
+
|
33
|
+
assert !KeyFrame.instance_methods.include?(:get_post_reference_iterator)
|
34
|
+
|
35
|
+
assert !Node.instance_methods.include?(:get_child_iterator)
|
36
|
+
assert !Node.instance_methods.include?(:set_listener)
|
37
|
+
assert !Node.instance_methods.include?(:get_listener)
|
38
|
+
|
39
|
+
assert !ParticleSystem.instance_methods.include?(:_get_iterator)
|
40
|
+
|
41
|
+
assert !Pass.instance_methods.include?(:set_hash_function)
|
42
|
+
assert !Pass.instance_methods.include?(:get_hash_function)
|
43
|
+
|
44
|
+
assert !PatchMesh.instance_methods.include?(:get_pose_iterator)
|
45
|
+
|
46
|
+
assert !RenderQueue.instance_methods.include?(:set_renderable_listener)
|
47
|
+
assert !RenderQueue.instance_methods.include?(:get_renderable_listener)
|
48
|
+
|
49
|
+
assert !RenderSystem.instance_methods.include?(:add_listener)
|
50
|
+
assert !RenderSystem.instance_methods.include?(:remove_listener)
|
51
|
+
assert !RenderSystem.instance_methods.include?(:register_thread)
|
52
|
+
assert !RenderSystem.instance_methods.include?(:unregister_thread)
|
53
|
+
|
54
|
+
assert !SceneNode.instance_methods.include?(:get_attached_object_iterator)
|
55
|
+
|
56
|
+
assert !TextureUnitState.instance_methods.include?(:add_effect)
|
57
|
+
assert !TextureUnitState.instance_methods.include?(:remove_effect)
|
58
|
+
|
59
|
+
assert !ManualObject.instance_methods.include?(:get_shadow_volume_renderable_iterator)
|
60
|
+
end
|
61
|
+
|
62
|
+
should "have fixed method names related to public instance variables of classes (method_fixes.rb)" do
|
63
|
+
%w(
|
64
|
+
use_shared_vertices?
|
65
|
+
use_shared_vertices=
|
66
|
+
vertex_data
|
67
|
+
vertex_data=
|
68
|
+
index_data
|
69
|
+
index_data=
|
70
|
+
).each do |method|
|
71
|
+
assert SubMesh.new.respond_to?(method)
|
72
|
+
end
|
73
|
+
|
74
|
+
%w(
|
75
|
+
vertex_declaration
|
76
|
+
vertex_declaration=
|
77
|
+
vertex_buffer_binding
|
78
|
+
vertex_buffer_binding=
|
79
|
+
vertex_start
|
80
|
+
vertex_start=
|
81
|
+
vertex_count
|
82
|
+
vertex_count=
|
83
|
+
).each do |method|
|
84
|
+
assert VertexData.new.respond_to?(method)
|
85
|
+
end
|
86
|
+
|
87
|
+
%w(
|
88
|
+
index_buffer
|
89
|
+
index_buffer=
|
90
|
+
index_start
|
91
|
+
index_start=
|
92
|
+
index_count
|
93
|
+
index_count=
|
94
|
+
).each do |method|
|
95
|
+
assert IndexData.new.respond_to?(method)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
class MovableObjectTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
should "be properly cast to their real subclasses on C++ -> Ruby" do
|
6
|
+
mo = scene_manager.create_movable_object("myThingy", "Light", {})
|
7
|
+
assert_equal "myThingy", mo.get_name
|
8
|
+
assert mo.is_a?(Light)
|
9
|
+
end
|
10
|
+
|
11
|
+
should "not have listener methods" do
|
12
|
+
mo = scene_manager.create_movable_object("myThingy", "Light", {})
|
13
|
+
|
14
|
+
assert !mo.respond_to?(:set_listener)
|
15
|
+
assert !mo.respond_to?(:get_listener)
|
16
|
+
assert !mo.respond_to?(:extract_movable_object)
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
class NameValuePairListTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
should "be able to pass in a Ruby hash into methods expecting NameValuePairList" do
|
6
|
+
trail = scene_manager.create_movable_object("RibbonTrail1", "RibbonTrail",
|
7
|
+
{"numberOfChains" => "2", "maxElements" => "80"})
|
8
|
+
assert_equal 80, trail.get_max_chain_elements
|
9
|
+
assert_equal 2, trail.get_number_of_chains
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
class OverlayElementTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
should "be properly cast to their real subclasses on C++ -> Ruby" do
|
6
|
+
element = OverlayManager.instance.create_overlay_element("Panel", "TestPanel")
|
7
|
+
assert_not_nil element
|
8
|
+
assert element.is_a?(PanelOverlayElement)
|
9
|
+
|
10
|
+
text_element = OverlayManager.instance.create_overlay_element("TextArea",
|
11
|
+
"Tester")
|
12
|
+
assert_not_nil text_element
|
13
|
+
assert text_element.is_a?(TextAreaOverlayElement)
|
14
|
+
|
15
|
+
element2 = OverlayManager.instance.get_overlay_element("TestPanel")
|
16
|
+
assert element2.is_a?(PanelOverlayElement)
|
17
|
+
assert_equal element.get_name, element2.get_name
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
class RenderTargetTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
should "have a specially wrapped getCustomAttribute method" do
|
6
|
+
assert window.respond_to?(:get_custom_attribute_unsigned_long)
|
7
|
+
assert !RenderTarget.instance_methods.include?("get_custom_attribute")
|
8
|
+
assert !RenderTarget.instance_methods.include?("_getImpl")
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
class ResourceTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def teardown
|
6
|
+
super
|
7
|
+
MeshManager.instance.remove_all
|
8
|
+
end
|
9
|
+
|
10
|
+
should "be properly cast to their real subclasses on C++ -> Ruby" do
|
11
|
+
mesh = MeshManager.instance.create("TestMesh", "General")
|
12
|
+
assert mesh.is_a?(MeshPtr)
|
13
|
+
|
14
|
+
material = MaterialManager.instance.create("TestMaterial", "General")
|
15
|
+
assert material.is_a?(MaterialPtr)
|
16
|
+
end
|
17
|
+
|
18
|
+
should "not have listener methods" do
|
19
|
+
mesh = MeshManager.instance.create("TestMesh", "General")
|
20
|
+
|
21
|
+
assert !mesh.respond_to?(:add_listener)
|
22
|
+
assert !mesh.respond_to?(:remove_listener)
|
23
|
+
assert !mesh.respond_to?(:extract_resource)
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|