ogre.rb 0.1-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 +79 -0
- data/Rakefile +288 -0
- data/doc_src/ogre.rb +246 -0
- data/doc_src/ois.rb +67 -0
- data/lib/application.rb +146 -0
- data/lib/application_frame_listener.rb +302 -0
- data/lib/application_loading_bar.rb +115 -0
- data/lib/constants.rb +51 -0
- data/lib/method_fixes.rb +42 -0
- data/lib/ogre.so +0 -0
- data/lib/ruby_ois.so +0 -0
- data/ogre.rb +25 -0
- data/platform.rb +23 -0
- data/samples/Ogre.log +261 -0
- data/samples/bsp.rb +76 -0
- data/samples/cg.dll +0 -0
- data/samples/grass.rb +325 -0
- data/samples/js3250.dll +0 -0
- data/samples/lighting.rb +138 -0
- data/samples/media/materials/programs/Grass.cg +30 -0
- data/samples/media/materials/programs/OffsetMapping.cg +97 -0
- data/samples/media/materials/programs/OffsetMapping.hlsl +135 -0
- data/samples/media/materials/programs/OffsetMappingFp.glsl +69 -0
- data/samples/media/materials/programs/OffsetMappingVp.glsl +54 -0
- data/samples/media/materials/programs/OffsetMapping_specular.asm +44 -0
- data/samples/media/materials/scripts/CloudySky.material +17 -0
- data/samples/media/materials/scripts/CubeMapping.material +34 -0
- data/samples/media/materials/scripts/Flare.material +17 -0
- data/samples/media/materials/scripts/Grass.material +63 -0
- data/samples/media/materials/scripts/Knot.material +14 -0
- data/samples/media/materials/scripts/MorningSkyBox.material +17 -0
- data/samples/media/materials/scripts/Offset.material +124 -0
- data/samples/media/materials/scripts/Ogre.material +119 -0
- data/samples/media/materials/scripts/RZR-002.material +15 -0
- data/samples/media/materials/scripts/Razor.material +14 -0
- data/samples/media/materials/scripts/Ribbon.material +19 -0
- data/samples/media/materials/scripts/RustySteel.material +14 -0
- data/samples/media/materials/scripts/SpaceSkyBox.material +17 -0
- data/samples/media/materials/scripts/SpaceSkyPlane.material +17 -0
- data/samples/media/materials/scripts/TextureEffects.material +15 -0
- data/samples/media/materials/scripts/dragon.material +42 -0
- data/samples/media/materials/scripts/smoke.material +18 -0
- data/samples/media/materials/textures/GreenSkin.jpg +0 -0
- data/samples/media/materials/textures/MtlPlat2.jpg +0 -0
- data/samples/media/materials/textures/RZR-002.png +0 -0
- data/samples/media/materials/textures/RustedMetal.jpg +0 -0
- data/samples/media/materials/textures/RustySteel.jpg +0 -0
- data/samples/media/materials/textures/Water02.jpg +0 -0
- data/samples/media/materials/textures/WeirdEye.png +0 -0
- data/samples/media/materials/textures/clouds.jpg +0 -0
- data/samples/media/materials/textures/cursor.png +0 -0
- data/samples/media/materials/textures/dirt01.jpg +0 -0
- data/samples/media/materials/textures/flare.png +0 -0
- data/samples/media/materials/textures/gras_02.png +0 -0
- data/samples/media/materials/textures/grass_1024.jpg +0 -0
- data/samples/media/materials/textures/ogreborder.png +0 -0
- data/samples/media/materials/textures/ogreborderUp.png +0 -0
- data/samples/media/materials/textures/ribbonband.png +0 -0
- data/samples/media/materials/textures/rockwall.tga +0 -0
- data/samples/media/materials/textures/rockwall_NH.tga +0 -0
- data/samples/media/materials/textures/smoke.png +0 -0
- data/samples/media/materials/textures/smokecolors.png +0 -0
- data/samples/media/materials/textures/spacesky.jpg +0 -0
- data/samples/media/materials/textures/spheremap.png +0 -0
- data/samples/media/materials/textures/texmap2.jpg +0 -0
- data/samples/media/models/RZR-002.mesh +0 -0
- data/samples/media/models/geosphere4500.mesh +0 -0
- data/samples/media/models/geosphere8000.mesh +0 -0
- data/samples/media/models/knot.mesh +0 -0
- data/samples/media/models/ogrehead.mesh +0 -0
- data/samples/media/models/razor.mesh +0 -0
- data/samples/media/models/sphere.mesh +0 -0
- data/samples/media/overlays/CubeMapping.overlay +139 -0
- data/samples/media/packs/OgreCore.zip +0 -0
- data/samples/media/packs/chiropteraDM.pk3 +0 -0
- data/samples/media/packs/chiropteraDM.txt +99 -0
- data/samples/media/packs/cubemap.zip +0 -0
- data/samples/media/packs/cubemapsJS.zip +0 -0
- data/samples/media/packs/dragon.zip +0 -0
- data/samples/media/packs/skybox.zip +0 -0
- data/samples/media/particles/smoke.particle +43 -0
- data/samples/media.cfg +22 -0
- data/samples/navi/Media/NaviDemo.material +60 -0
- 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 +136 -0
- data/samples/navi/NaviLocal/buttonBg.jpg +0 -0
- data/samples/navi/NaviLocal/controls.html +303 -0
- data/samples/navi/NaviLocal/knobBg.jpg +0 -0
- data/samples/navi/NaviLocal/moo.dropdownmenu.js +87 -0
- data/samples/navi/NaviLocal/mootools.v1.1.js +6964 -0
- data/samples/navi/NaviLocal/naviLogo.html +32 -0
- 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 +5 -0
- data/samples/navi/NaviLocal/welcome.html +36 -0
- data/samples/navi/NaviLocal/welcome.png +0 -0
- data/samples/navi/chrome/chromelist.txt +597 -0
- data/samples/navi/chrome/classic.jar +0 -0
- data/samples/navi/chrome/classic.manifest +4 -0
- data/samples/navi/chrome/comm.jar +0 -0
- data/samples/navi/chrome/comm.manifest +2 -0
- data/samples/navi/chrome/en-US.jar +0 -0
- data/samples/navi/chrome/en-US.manifest +9 -0
- data/samples/navi/chrome/toolkit.jar +0 -0
- data/samples/navi/chrome/toolkit.manifest +6 -0
- data/samples/navi/components/FeedProcessor.js +1825 -0
- 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 +1474 -0
- 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 +170 -0
- 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 +143 -0
- data/samples/navi/components/nsDefaultCLH.js +231 -0
- data/samples/navi/components/nsDictionary.js +148 -0
- data/samples/navi/components/nsExtensionManager.js +8497 -0
- data/samples/navi/components/nsHelperAppDlg.js +990 -0
- data/samples/navi/components/nsInterfaceInfoToIDL.js +590 -0
- data/samples/navi/components/nsKillAll.js +200 -0
- data/samples/navi/components/nsPostUpdateWin.js +711 -0
- data/samples/navi/components/nsProgressDialog.js +949 -0
- data/samples/navi/components/nsProxyAutoConfig.js +396 -0
- data/samples/navi/components/nsResetPref.js +175 -0
- data/samples/navi/components/nsURLFormatter.js +179 -0
- data/samples/navi/components/nsUpdateService.js +3074 -0
- data/samples/navi/components/nsXULAppInstall.js +301 -0
- data/samples/navi/components/nsXmlRpcClient.js +1038 -0
- 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 +1424 -0
- 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 +1344 -0
- data/samples/navi/greprefs/security-prefs.js +69 -0
- data/samples/navi/greprefs/xpinstall.js +2 -0
- data/samples/navi/navi_demo.rb +207 -0
- 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/plugins.cfg +10 -0
- data/samples/navi/res/EditorOverride.css +359 -0
- 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 +40 -0
- data/samples/navi/res/broken-image.gif +0 -0
- data/samples/navi/res/charsetData.properties +199 -0
- data/samples/navi/res/charsetalias.properties +517 -0
- data/samples/navi/res/cmessage.txt +1 -0
- data/samples/navi/res/dtd/xhtml11.dtd +300 -0
- data/samples/navi/res/entityTables/html40Latin1.properties +146 -0
- data/samples/navi/res/entityTables/html40Special.properties +69 -0
- data/samples/navi/res/entityTables/html40Symbols.properties +164 -0
- data/samples/navi/res/entityTables/htmlEntityVersions.properties +50 -0
- data/samples/navi/res/entityTables/transliterate.properties +2367 -0
- data/samples/navi/res/fonts/fontEncoding.properties +127 -0
- data/samples/navi/res/fonts/fontNameMap.properties +134 -0
- data/samples/navi/res/forms.css +531 -0
- data/samples/navi/res/grabber.gif +0 -0
- data/samples/navi/res/hiddenWindow.html +1 -0
- 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 +478 -0
- data/samples/navi/res/langGroups.properties +236 -0
- data/samples/navi/res/language.properties +259 -0
- data/samples/navi/res/loading-image.gif +0 -0
- data/samples/navi/res/quirk.css +282 -0
- 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 +69 -0
- data/samples/navi/res/samples/beeptest.html +18 -0
- data/samples/navi/res/samples/bform.css +45 -0
- data/samples/navi/res/samples/bg.jpg +0 -0
- data/samples/navi/res/samples/cform.css +40 -0
- data/samples/navi/res/samples/checkboxTest.xul +47 -0
- data/samples/navi/res/samples/demoform.css +97 -0
- data/samples/navi/res/samples/find.html +97 -0
- data/samples/navi/res/samples/gear1.gif +0 -0
- data/samples/navi/res/samples/image_props.html +58 -0
- data/samples/navi/res/samples/mozform.css +256 -0
- data/samples/navi/res/samples/printsetup.html +175 -0
- 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 +66 -0
- data/samples/navi/res/samples/scrollbarTest2.xul +19 -0
- data/samples/navi/res/samples/sliderTest1.xul +14 -0
- data/samples/navi/res/samples/soundtest.html +20 -0
- data/samples/navi/res/samples/test.wav +0 -0
- data/samples/navi/res/samples/test0.html +220 -0
- data/samples/navi/res/samples/test1.html +84 -0
- data/samples/navi/res/samples/test10.html +16 -0
- data/samples/navi/res/samples/test11.html +42 -0
- data/samples/navi/res/samples/test12.html +79 -0
- data/samples/navi/res/samples/test13.html +126 -0
- data/samples/navi/res/samples/test14.html +5 -0
- data/samples/navi/res/samples/test15.html +5 -0
- data/samples/navi/res/samples/test16.html +124 -0
- data/samples/navi/res/samples/test2.html +41 -0
- data/samples/navi/res/samples/test3.html +126 -0
- data/samples/navi/res/samples/test4.html +335 -0
- data/samples/navi/res/samples/test5.html +199 -0
- data/samples/navi/res/samples/test6.html +335 -0
- data/samples/navi/res/samples/test7.html +11 -0
- data/samples/navi/res/samples/test8-1.html +66 -0
- data/samples/navi/res/samples/test8.html +662 -0
- data/samples/navi/res/samples/test8dom.html +64 -0
- data/samples/navi/res/samples/test8sca.html +308 -0
- data/samples/navi/res/samples/test8siz.html +224 -0
- data/samples/navi/res/samples/test8tab.html +9 -0
- data/samples/navi/res/samples/test9.html +12 -0
- data/samples/navi/res/samples/test9a.html +39 -0
- data/samples/navi/res/samples/test9b.html +16 -0
- data/samples/navi/res/samples/test_ed.html +5 -0
- data/samples/navi/res/samples/test_form.html +34 -0
- data/samples/navi/res/samples/test_gfx.html +75 -0
- data/samples/navi/res/samples/test_lbox.html +100 -0
- data/samples/navi/res/samples/test_pr.html +87 -0
- data/samples/navi/res/samples/test_weight.html +45 -0
- data/samples/navi/res/samples/toolbarTest1.xul +51 -0
- data/samples/navi/res/samples/treeTest1.css +62 -0
- data/samples/navi/res/samples/treeTest1.xul +110 -0
- data/samples/navi/res/samples/xulTest.css +130 -0
- data/samples/navi/res/svg.css +64 -0
- 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 +235 -0
- data/samples/navi/res/viewer.properties +1 -0
- data/samples/navi/res/viewsource.css +118 -0
- data/samples/navi/res/wincharset.properties +55 -0
- data/samples/navi/resources.cfg +14 -0
- data/samples/navi/testNaviMask.png +0 -0
- data/samples/ogre.cfg +8 -0
- data/samples/plugins.cfg +11 -0
- data/samples/quake3settings.cfg +2 -0
- data/samples/render_run_log.5796 +891 -0
- data/samples/render_to_texture.rb +161 -0
- data/samples/resources.cfg +16 -0
- data/samples/sky_box.rb +107 -0
- data/samples/sky_dome.rb +86 -0
- data/samples/sky_plane.rb +27 -0
- data/samples/smoke.rb +23 -0
- data/samples/work/cube_mapping.rb +686 -0
- metadata +500 -0
data/README
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
= Ogre.rb : Ruby wrapper around Ogre
|
2
|
+
|
3
|
+
Welcome to Ogre.rb, the Ruby wrapper around the Ogre rendering engine. This currently is only
|
4
|
+
known to build and run correctly on Linux, though I expect this will work just fine on Mac as well.
|
5
|
+
Windows support will come later.
|
6
|
+
|
7
|
+
Ogre.rb is currently built for Ruby 1.8.5+ and Ogre 1.4.x (Eihort)
|
8
|
+
|
9
|
+
== Usage
|
10
|
+
|
11
|
+
Assuming Ogre.rb and OIS.rb are compiled, you are free to copy lib/ogre.so and lib/OIS.so into your project
|
12
|
+
as needed. You will need to either place the extensions next to the Ogre and OIS libraries or have your
|
13
|
+
environment set up to know where these libraries are located. Then, using Ogre.rb is as easy as:
|
14
|
+
|
15
|
+
require 'ogre'
|
16
|
+
require 'ruby_ois'
|
17
|
+
|
18
|
+
and optionally
|
19
|
+
|
20
|
+
require 'navi' (note that navi is only supported in Windows using Direct3D at the moment)
|
21
|
+
|
22
|
+
The samples/ directory is a direct port of the Ogre sample programs.
|
23
|
+
|
24
|
+
== Contributing
|
25
|
+
|
26
|
+
Please post patches, feature requests, bug fixes to the rubyforge website at http://rubyforge.org/projects/ogrerb.
|
27
|
+
As I'm not sure exactly how to unit test such a wrapper, it will be greatly appreciated if changes are proven as
|
28
|
+
part of a sample application.
|
29
|
+
|
30
|
+
== Build Requirements
|
31
|
+
|
32
|
+
* rake
|
33
|
+
* Ogre 1.4.x (Eihort)
|
34
|
+
* OIS
|
35
|
+
* swig 1.3.31+ (uses -autorename)
|
36
|
+
* pkg-config (Linux)
|
37
|
+
|
38
|
+
== Build Steps
|
39
|
+
|
40
|
+
=== Linux
|
41
|
+
|
42
|
+
rake build_all
|
43
|
+
|
44
|
+
The resulting files can be found in ogrerb/lib.
|
45
|
+
|
46
|
+
=== Mac
|
47
|
+
|
48
|
+
TODO
|
49
|
+
|
50
|
+
=== Windows
|
51
|
+
|
52
|
+
==== Setup your environment
|
53
|
+
|
54
|
+
1. Install Ruby One-Click Installer: http://rubyforge.org/projects/rubyinstaller/
|
55
|
+
1. Install Visual Studio Express 2005: http://msdn.microsoft.com/vstudio/express/ (Be sure to register environment variables)
|
56
|
+
1. You'll need to remove the following 3 lines of the [ruby install dir]/lib/ruby/1.8/i386-mswin32/config.h file:
|
57
|
+
#if _MSC_VER != 1200
|
58
|
+
#error MSC version unmatch
|
59
|
+
#endif
|
60
|
+
1. You need the MS platform SDK available here(ish): http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en.
|
61
|
+
1. Be sure to register environment variables in the setup.
|
62
|
+
1. Download and install the Ogre SDK and the precompiled VC dependencies: http://www.ogre3d.org
|
63
|
+
1. Set the environment variable OGRE_HOME to where the the Ogre SDK is installed
|
64
|
+
1. Open "Visual Studio 2005 Command Prompt" and navigate to where you have Ogre.rb checked out and run the following rake tasks
|
65
|
+
|
66
|
+
==== Build
|
67
|
+
|
68
|
+
1. rake ogre:swig
|
69
|
+
1. rake ogre:compile
|
70
|
+
1. rake ois:swig
|
71
|
+
1. rake ois:compile
|
72
|
+
|
73
|
+
You cannot run rake ogre:build or ois:build due to a Windows file permission problem.
|
74
|
+
|
75
|
+
The resulting files can be found in ogrerb/lib.
|
76
|
+
|
77
|
+
== Running Ogre.rb programs
|
78
|
+
|
79
|
+
You'll either have to copy the OgreMain dll to the ogrerb/lib folder, or you'll need to set the PATH (on Windows) or LD_LIBRARY_PATH (on Linux) environment variable to point to where this file is ([OgreSDK]/bin/release for prebuilt). Then, it's simply <code>require 'ogre'</code> and off you go.
|
data/Rakefile
ADDED
@@ -0,0 +1,288 @@
|
|
1
|
+
require 'rake/testtask'
|
2
|
+
require 'rake/rdoctask'
|
3
|
+
require 'rake/contrib/sshpublisher'
|
4
|
+
require 'rake/gempackagetask'
|
5
|
+
|
6
|
+
require 'platform'
|
7
|
+
|
8
|
+
task :default => :build_all
|
9
|
+
|
10
|
+
OGRE_RB_VERSION = "0.1"
|
11
|
+
|
12
|
+
###########################
|
13
|
+
# Project Managment tasks #
|
14
|
+
###########################
|
15
|
+
|
16
|
+
RDOC_INCLUDES = %w(
|
17
|
+
README
|
18
|
+
doc_src/**/*.rb
|
19
|
+
lib/application.rb
|
20
|
+
lib/application_frame_listener.rb
|
21
|
+
lib/application_loading_bar.rb
|
22
|
+
lib/constants.rb
|
23
|
+
lib/method_fixes.rb
|
24
|
+
)
|
25
|
+
|
26
|
+
RDOC_OPTIONS = ['-S', '-t Ogre.rb Documentation']
|
27
|
+
|
28
|
+
Rake::RDocTask.new do |t|
|
29
|
+
t.main = "README"
|
30
|
+
t.rdoc_files.include(RDOC_INCLUDES)
|
31
|
+
t.options += RDOC_OPTIONS
|
32
|
+
end
|
33
|
+
|
34
|
+
RUBYFORGE_USERNAME = "jameskilton"
|
35
|
+
PROJECT_WEB_PATH = "/var/www/gforge-projects/ogrerb"
|
36
|
+
|
37
|
+
desc "Update the website"
|
38
|
+
task :upload_web => :rdoc do |t|
|
39
|
+
unless File.directory?("publish")
|
40
|
+
mkdir "publish"
|
41
|
+
mkdir "publish/docs"
|
42
|
+
end
|
43
|
+
sh "svn export --force website publish/"
|
44
|
+
sh "cp -r html/* publish/docs/"
|
45
|
+
Rake::SshDirPublisher.new("#{RUBYFORGE_USERNAME}@rubyforge.org", PROJECT_WEB_PATH, "publish").upload
|
46
|
+
rm_rf "publish"
|
47
|
+
end
|
48
|
+
|
49
|
+
## Gem Compilation ##
|
50
|
+
ogre_rb_spec = Gem::Specification.new do |s|
|
51
|
+
|
52
|
+
s.platform = Gem::Platform::CURRENT
|
53
|
+
|
54
|
+
lib_files = ""
|
55
|
+
if Platform.windows?
|
56
|
+
lib_files = %w(lib/ogre.dll lib/ruby_ois.dll)
|
57
|
+
elsif Platform.mac?
|
58
|
+
else # Posix environment
|
59
|
+
lib_files = %w(lib/ogre.so lib/ruby_ois.so)
|
60
|
+
end
|
61
|
+
|
62
|
+
s.name = 'ogre.rb'
|
63
|
+
s.version = OGRE_RB_VERSION
|
64
|
+
s.summary = "Ruby wrapper for Ogre 3D"
|
65
|
+
s.description = %q{Ogre.rb is a SWIG wrapper to allow access to the Ogre 3D API from Ruby.}
|
66
|
+
|
67
|
+
s.author = "Jason Roelofs"
|
68
|
+
s.email = "jameskilton@gmail.com"
|
69
|
+
s.rubyforge_project = 'ogrerb'
|
70
|
+
s.homepage = 'http://ogrerb.rubyforge.org'
|
71
|
+
|
72
|
+
s.require_path = '.'
|
73
|
+
|
74
|
+
s.required_ruby_version = '>= 1.8.4'
|
75
|
+
|
76
|
+
# Inform of the need to have Ogre installed and OGRE_HOME set
|
77
|
+
s.requirements << "Ogre Einhort (1.4)"
|
78
|
+
s.requirements << "Environment variable OGRE_HOME set"
|
79
|
+
|
80
|
+
#s.has_rdoc = false
|
81
|
+
#s.extra_rdoc_files += RDOC_INCLUDES
|
82
|
+
#s.rdoc_options += RDOC_OPTIONS
|
83
|
+
|
84
|
+
files = FileList.new %W[
|
85
|
+
README
|
86
|
+
platform.rb
|
87
|
+
ogre.rb
|
88
|
+
Rakefile
|
89
|
+
lib/*.rb
|
90
|
+
samples/**/*
|
91
|
+
doc_src/**/*
|
92
|
+
]
|
93
|
+
files += lib_files
|
94
|
+
|
95
|
+
s.files = files
|
96
|
+
end
|
97
|
+
|
98
|
+
desc 'Package as gem & zip'
|
99
|
+
Rake::GemPackageTask.new(ogre_rb_spec) do |p|
|
100
|
+
p.gem_spec = ogre_rb_spec
|
101
|
+
#p.need_tar = true
|
102
|
+
#p.need_zip = true
|
103
|
+
end
|
104
|
+
|
105
|
+
#############################
|
106
|
+
# Project compilation tasks #
|
107
|
+
#############################
|
108
|
+
|
109
|
+
desc "Rebuild the OGRE and OIS wrappers"
|
110
|
+
task :build_all => ["ogre:build", "ois:build"]
|
111
|
+
|
112
|
+
desc "Clean everything"
|
113
|
+
task :clean_all => ["ogre:clean", "ois:clean"]
|
114
|
+
|
115
|
+
namespace :ois do
|
116
|
+
desc "Rebuild all of the OIS wrapper"
|
117
|
+
task :build => [:swig, :compile]
|
118
|
+
|
119
|
+
desc "Run swig on the interface files"
|
120
|
+
task :swig do
|
121
|
+
includes = %w(-I./src_headers/OIS -I./src_headers/wrappers)
|
122
|
+
sh "swig -ruby -minherit -c++ -autorename #{includes.join(' ')} -o build/ois/ois_wrap.cpp ois/ois.i"
|
123
|
+
if Platform.windows?
|
124
|
+
insert_headers("build/ois/ois_wrap.cpp") do
|
125
|
+
<<-EOF
|
126
|
+
#include "OIS.h"
|
127
|
+
EOF
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
desc "Compile the extension and move the resulting library into lib/"
|
133
|
+
task :compile do
|
134
|
+
resulting_file = "ruby_ois.so"
|
135
|
+
build_file = resulting_file
|
136
|
+
cd "build/ois" do
|
137
|
+
ruby "extconf.rb"
|
138
|
+
if Platform.linux?
|
139
|
+
sh "make all"
|
140
|
+
elsif Platform.windows?
|
141
|
+
sh "nmake"
|
142
|
+
# Create our manifest (see http://www.codeproject.com/cpp/vcredists_x86.asp)
|
143
|
+
sh "mt.exe /manifest #{resulting_file}.manifest /outputresource:#{resulting_file};#2"
|
144
|
+
resulting_file = "ruby_ois.dll"
|
145
|
+
build_file = "ruby_ois.so"
|
146
|
+
else
|
147
|
+
raise "Error: Unsupported platform " + PLATFORM
|
148
|
+
end
|
149
|
+
cp build_file, File.join("..", "..", "lib", resulting_file)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
desc "Clean up the build environment"
|
154
|
+
task :clean do
|
155
|
+
cd "build/ois" do
|
156
|
+
ruby "extconf.rb"
|
157
|
+
sh "make clean"
|
158
|
+
rm "mkmf.log" rescue nil
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
namespace :ogre do
|
164
|
+
|
165
|
+
desc "Rebuild all of ogre.rb"
|
166
|
+
task :build => [:swig, :compile]
|
167
|
+
|
168
|
+
desc "Run swig on the interface files"
|
169
|
+
task :swig do
|
170
|
+
includes = %w(-I./src_headers/OGRE -I./src_headers/ExampleApplication -I./src_headers/wrappers -I./src_headers/OIS)
|
171
|
+
sh "swig -ruby -minherit -c++ -autorename #{includes.join(' ')} -o build/ogre/ogre_rb_wrap.cpp ogre/ogre_rb.i"
|
172
|
+
if Platform.windows?
|
173
|
+
# compensate for windows stl. Uses wrong version when ruby is first.
|
174
|
+
insert_headers("build/ogre/ogre_rb_wrap.cpp") do
|
175
|
+
<<-EOF
|
176
|
+
#include "Ogre.h"
|
177
|
+
#{Platform.windows? ? "#include <winsock.h>" : ""}
|
178
|
+
EOF
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
desc "Compile the extension and move the resulting library into lib/"
|
184
|
+
task :compile do
|
185
|
+
resulting_file = "ogre.so"
|
186
|
+
cd "build/ogre" do
|
187
|
+
ruby "extconf.rb"
|
188
|
+
if Platform.linux?
|
189
|
+
sh "make clean all"
|
190
|
+
elsif Platform.windows?
|
191
|
+
sh "nmake"
|
192
|
+
# Create our manifest (see http://www.codeproject.com/cpp/vcredists_x86.asp)
|
193
|
+
sh "mt.exe /manifest ogre.so.manifest /outputresource:ogre.so;#2"
|
194
|
+
resulting_file = "ogre.dll"
|
195
|
+
else
|
196
|
+
raise "Error: Unsupported platform " + PLATFORM
|
197
|
+
end
|
198
|
+
cp "ogre.so", File.join("..", "..", "lib", resulting_file)
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
desc "Clean up the build environment"
|
203
|
+
task :clean do
|
204
|
+
cd "build/ogre" do
|
205
|
+
ruby "extconf.rb"
|
206
|
+
sh "make clean"
|
207
|
+
rm "mkmf.log" rescue nil
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
desc "Copy over the ogre header files from an ogre installation. Expects OGRE_HOME to be set."
|
212
|
+
task :update_headers do
|
213
|
+
raise "Unable to find Ogre headers, please set OGRE_HOME to the distribution path" if ENV['OGRE_HOME'].nil?
|
214
|
+
|
215
|
+
File.cp_r "#{ENV['OGRE_HOME']}/include/OGRE/", "#{File.dirname(__FILE__)}/src_headers"
|
216
|
+
end
|
217
|
+
|
218
|
+
desc "Create default interface files for each of the ogre headers"
|
219
|
+
task :create_interfaces do
|
220
|
+
headers_match = File.join("src_headers", "OGRE", "Ogre*.h")
|
221
|
+
ogre_headers = Dir[headers_match]
|
222
|
+
|
223
|
+
ogre_headers.each do |header|
|
224
|
+
filename = File.basename(header, ".h")
|
225
|
+
interface_file_name = File.join("ogre", File.basename(header, ".h") + ".i")
|
226
|
+
raise "Interface file for #{filename} already exists" if File.exists?(interface_file_name)
|
227
|
+
|
228
|
+
File.open(interface_file_name, "w+") do |file|
|
229
|
+
file.write <<END
|
230
|
+
%{
|
231
|
+
#include "#{filename}.h"
|
232
|
+
%}
|
233
|
+
|
234
|
+
%include "#{filename}.h"
|
235
|
+
END
|
236
|
+
end
|
237
|
+
end
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
|
242
|
+
namespace :navi do
|
243
|
+
|
244
|
+
desc "Rebuild all of navi.rb"
|
245
|
+
task :build => [:swig, :compile]
|
246
|
+
|
247
|
+
desc "Run swig on the interface files"
|
248
|
+
task :swig do
|
249
|
+
includes = %w(-I./src_headers/navi -I./src_headers/wrappers)
|
250
|
+
sh "swig -autorename -ruby -minherit -c++ #{includes.join(' ')} -o build/navi/navi_rb_wrap.cpp navi/navi_rb.i"
|
251
|
+
if Platform.windows?
|
252
|
+
# compensate for windows stl. Uses wrong version when ruby is first.
|
253
|
+
|
254
|
+
insert_headers("build/navi/navi_rb_wrap.cpp") do
|
255
|
+
<<-EOF
|
256
|
+
#include "Ogre.h"
|
257
|
+
#{Platform.windows? ? "#include <winsock.h>" : ""}
|
258
|
+
EOF
|
259
|
+
end
|
260
|
+
end
|
261
|
+
end
|
262
|
+
|
263
|
+
desc "Compile the extension and move the resulting library into lib/"
|
264
|
+
task :compile do
|
265
|
+
resulting_file = "navi.dll"
|
266
|
+
cd "build/navi" do
|
267
|
+
ruby "extconf.rb"
|
268
|
+
if Platform.windows?
|
269
|
+
sh "nmake"
|
270
|
+
# Create our manifest (see http://www.codeproject.com/cpp/vcredists_x86.asp)
|
271
|
+
sh "mt.exe /manifest navi.so.manifest /outputresource:navi.so;#2"
|
272
|
+
else
|
273
|
+
raise "Error: Unsupported platform " + PLATFORM
|
274
|
+
end
|
275
|
+
cp "navi.so", File.join("..", "..", "lib", resulting_file)
|
276
|
+
end
|
277
|
+
end
|
278
|
+
|
279
|
+
desc "Clean up the build environment"
|
280
|
+
task :clean do
|
281
|
+
cd "build" do
|
282
|
+
ruby "extconf.rb"
|
283
|
+
sh "make clean"
|
284
|
+
rm "mkmf.log" rescue nil
|
285
|
+
end
|
286
|
+
end
|
287
|
+
|
288
|
+
end
|
data/doc_src/ogre.rb
ADDED
@@ -0,0 +1,246 @@
|
|
1
|
+
#
|
2
|
+
# = Naming Conventions
|
3
|
+
#
|
4
|
+
# Ogre.rb is using the <tt>--autorename</tt> flag available in SWIG-Ruby. This automatically
|
5
|
+
# renames constants, methods, and attributes to follow the Ruby Way. Mainly, this means that
|
6
|
+
# method names are the same as Ogre's, but follow this style:
|
7
|
+
#
|
8
|
+
# ClassName.method_name(param1, param2, ...)
|
9
|
+
# var.method_name? # for methods who return boolean results
|
10
|
+
#
|
11
|
+
# Because there are setter methods in Ogre that can take multiple parameters
|
12
|
+
# (e.g. SceneManager::setSkyBox), we've decided to not turn set/get methods into the typical
|
13
|
+
# attr_accessor names of Ruby. So, this method would be used in Ogre.rb as such:
|
14
|
+
#
|
15
|
+
# scene_manager.set_sky_box(true, "CloudySky")
|
16
|
+
#
|
17
|
+
# This documentation will try to cover every method rename that differs from straight undercasing of Ogre method names,
|
18
|
+
# though please post a patch if some are missed.
|
19
|
+
#
|
20
|
+
module Ogre
|
21
|
+
# This class is here to define a few things that were difficult / not
|
22
|
+
# working correctly just through SWIG. These methods are defined so as not to be any different
|
23
|
+
# from calling the constants straight from Ogre (Vector3.ZERO).
|
24
|
+
#
|
25
|
+
# See OgreVector3.i for an example, but basically we need to define these manually
|
26
|
+
# because Ruby always passes references, which causes annoying problems such as:
|
27
|
+
#
|
28
|
+
# vec1 = Ogre::Vector3.ZERO
|
29
|
+
# vec1.x = 10
|
30
|
+
# vec2 = Ogre::Vector3.ZERO
|
31
|
+
# vec2.x #=> 10 (when it should be 0)
|
32
|
+
#
|
33
|
+
# Current classes with constants redefined as methods in lib/constants.rb:
|
34
|
+
#
|
35
|
+
# Vector3
|
36
|
+
# Vector4
|
37
|
+
# Quaternion
|
38
|
+
#
|
39
|
+
module Constants
|
40
|
+
end
|
41
|
+
|
42
|
+
class FrameEvent
|
43
|
+
# Function wrapper for the timeSinceLastFrame variable
|
44
|
+
def time_since_last_frame
|
45
|
+
end
|
46
|
+
|
47
|
+
# Function wrapper for the timeSinceLastEvent variable
|
48
|
+
def time_since_last_event
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# As it stands, all classes with internal Listener classes (aka Resource) have been neutered to not
|
53
|
+
# allow access to these inner classes. As Ruby is perfectly fine with inner classes, this may need
|
54
|
+
# to be a change to the ruby SWIG driver. So for now, these classes and the related functions
|
55
|
+
# are unavailable through Ogre.rb.
|
56
|
+
class Listeners
|
57
|
+
end
|
58
|
+
|
59
|
+
# MovableObject is used extensively in Ogre, but very rarely is an instance of the class created through
|
60
|
+
# the typical "new MovableObject();" syntax. Given this, there is no immedate way of knowing what subclass
|
61
|
+
# of MovableObject was actually created, in say, Ogre::SceneManager::createMovableObject:
|
62
|
+
#
|
63
|
+
# virtual MovableObject* createMovableObject(const String& name, const String& typeName, const NameValuePairList* params = 0);
|
64
|
+
#
|
65
|
+
# Left alone, every call to this function will return a MovableObject instance instead of the appropriate
|
66
|
+
# subclass, completely destroying expected type information. Thankfully Ogre makes this very easy to
|
67
|
+
# solve: getMovableType. Every MovableObject has this method which returns the string representation
|
68
|
+
# of the class name it is. Using this string, we can find out what class was actually created and have
|
69
|
+
# SWIG generate the appropriate class type. Thus, we can do the following:
|
70
|
+
#
|
71
|
+
# trail = scene_manager.create_movable_object("RibbonTrail1", "RibbonTrail", {"numberOfChains" => "2", "maxElements" => "80"})
|
72
|
+
# trail.set_material_name("LightRibbonTrail")
|
73
|
+
# trail.set_trail_length(400)
|
74
|
+
#
|
75
|
+
# As <tt>trail</tt> is a <tt>#<Ogre::RibbonTrail:0xb6edf718></tt>.
|
76
|
+
#
|
77
|
+
class MovableObject
|
78
|
+
end
|
79
|
+
|
80
|
+
# Any method call that takes an Ogre::NameValuePairList argument should be given a normal Ruby
|
81
|
+
# hash of "key" => "value". Example usage is found in the sample lighting.rb.
|
82
|
+
#
|
83
|
+
# Ogre's SceneManager::createMovableObject is defined as:
|
84
|
+
#
|
85
|
+
# virtual MovableObject* createMovableObject(const String& name, const String& typeName, const NameValuePairList* params = 0);
|
86
|
+
#
|
87
|
+
# and can be used in Ogre.rb as:
|
88
|
+
#
|
89
|
+
# trail = scene_manager.create_movable_object("RibbonTrail1", "RibbonTrail", {"numberOfChains" => "2", "maxElements" => "80"})
|
90
|
+
#
|
91
|
+
class NameValuePairList
|
92
|
+
end
|
93
|
+
|
94
|
+
class RenderWindow
|
95
|
+
# Renamed: isClosed
|
96
|
+
def closed?
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
class Singleton
|
101
|
+
# Renamed: getSingleton
|
102
|
+
#
|
103
|
+
# In following the Ruby-way, singletons are to be accessed as such:
|
104
|
+
#
|
105
|
+
# MeshManager.instance.create_mesh
|
106
|
+
#
|
107
|
+
def self.instance
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
class SceneManager
|
112
|
+
# Renamed: getRootSceneNode
|
113
|
+
def root_scene_node
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
class TextureManager
|
118
|
+
# There is currently an issue with create_manual in that if you try to use the
|
119
|
+
# method version that does not include the depth parameter (such as in Ogre's
|
120
|
+
# RenderToTexture demo), SWIG still chooses this
|
121
|
+
# one, sending in the render_type parameter as the pixel_format. If you run into an unexpected
|
122
|
+
# assert failure in PixelFormat, make sure that you're method call
|
123
|
+
# signature matches this method's parameter list.
|
124
|
+
#
|
125
|
+
# num_mip_maps can be -1 to use the system's default number of mip maps
|
126
|
+
#
|
127
|
+
# depth must be >= 1 or the method will never return
|
128
|
+
#
|
129
|
+
# Ogre's docs for this class are here: http://www.ogre3d.org/docs/api/html/classOgre_1_1TextureManager.html
|
130
|
+
def create_manual(name, group_name, tex_type, width, height, depth, num_mip_maps, pixel_format, render_type, manual_loader = nil)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
# There is a problem, possibly unsolvable, with trying to send Ruby subclasses of C++ classes
|
135
|
+
# back into C++ methods. This came up in situations like registering a custom FrameListener.
|
136
|
+
# It basically doesn't work, and ends up causing all sorts of issues from random SegFaults at
|
137
|
+
# runtime to ObjectPreviouslyDeleted errors at the method's invocation. To get around this
|
138
|
+
# problem, these proxy classes have been defined. They are simple C++ subclasses that take
|
139
|
+
# care of whatever registering needs to happen inside of their constructor.
|
140
|
+
#
|
141
|
+
# Also please note: <b>This Proxies namespace does not exist in Ogre.rb</b>. The classes are grouped
|
142
|
+
# this way for documentation purposes.
|
143
|
+
module Proxies
|
144
|
+
# FrameListenerProxy constructor takes the Root object, with which it registers itself as a system
|
145
|
+
# frame listener.
|
146
|
+
class FrameListenerProxy
|
147
|
+
def initialize(root)
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
# This proxy isn't quite done yet, as it's registering command,
|
152
|
+
# WindowEventUtilities::addWindowEventListener, takes both the Listener and a RenderWindow.
|
153
|
+
# It's the RenderWindow that is causing problems but I think this one is easily solvable.
|
154
|
+
class WindowEventListenerProxy
|
155
|
+
def initialize(render_window)
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
# Hardware buffers are an especially interesting problem when it comes to duplicating functionality in Ruby.
|
161
|
+
# Buffers like Vertex and Index buffers are meant to be directly accessible and in a contiguous memory location.
|
162
|
+
# This allows the Ogre C++ code to populate these buffers as such
|
163
|
+
#
|
164
|
+
# // position
|
165
|
+
# *pReal++ = -vec.x;
|
166
|
+
# *pReal++ = GRASS_HEIGHT;
|
167
|
+
# *pReal++ = -vec.z;
|
168
|
+
# // normal
|
169
|
+
# *pReal++ = 0;
|
170
|
+
# *pReal++ = 1;
|
171
|
+
# *pReal++ = 0;
|
172
|
+
# // uv
|
173
|
+
# *pReal++ = 0;
|
174
|
+
# *pReal++ = 0;
|
175
|
+
#
|
176
|
+
# Now we obviously can't do this in Ruby, so Vertex and Index Buffer proxy classes have been put together to
|
177
|
+
# allow the above code to become this following in Ruby
|
178
|
+
#
|
179
|
+
# x = i * 32
|
180
|
+
# # Position
|
181
|
+
# reals[x + 0] = -vec.x
|
182
|
+
# reals[x + 1] = GRASS_HEIGHT
|
183
|
+
# reals[x + 2] = -vec.z
|
184
|
+
# # Normal
|
185
|
+
# reals[x + 3] = 0
|
186
|
+
# reals[x + 4] = 1
|
187
|
+
# reals[x + 5] = 0
|
188
|
+
# # UV
|
189
|
+
# reals[x + 6] = 0
|
190
|
+
# reals[x + 7] = 0
|
191
|
+
#
|
192
|
+
# Compare the Ogre Grass demo with the Ogre.rb Grass demo to see the full code
|
193
|
+
class HardwareBuffer
|
194
|
+
end
|
195
|
+
|
196
|
+
# See HardwareBuffer
|
197
|
+
class HardwareVertexBuffer < HardwareBuffer
|
198
|
+
# For now this should be the only lock method used. It returns a VertexBufferProxy which
|
199
|
+
# allows the array-like access
|
200
|
+
def lock(lock_options)
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
# See HardwareBuffer
|
205
|
+
class HardwareIndexBuffer < HardwareBuffer
|
206
|
+
# For now this should be the only lock method used. It returns an IndexBufferProxy which
|
207
|
+
# allows the array-like access
|
208
|
+
def lock(lock_options)
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
|
213
|
+
# The StaticGeometry class contains a lot of nested classes to deal with all of the parts that could possible
|
214
|
+
# be in a piece of static geometry. This of course poses a serious problem with wrapping as SWIG cannot handle
|
215
|
+
# nested classes. The solution here is to create proxy classes for all of the nested classes and use those instead.
|
216
|
+
# The normal API of using StaticGeometry has not changed, just the names of the classes that will be dealt with.
|
217
|
+
#
|
218
|
+
# This proxy code was taken from OgreDotNet and still needs some work to make it fit nicely into the Ruby way of
|
219
|
+
# doing things. If something isn't quite right, please look at OgreStaticGeometry.i and StaticGeometryProxies.h
|
220
|
+
# to see what methods are available.
|
221
|
+
#
|
222
|
+
# See the Grass demo for example usage.
|
223
|
+
class StaticGeometry
|
224
|
+
# Proxy for the StaticGeometry::GeometryBucket class
|
225
|
+
class SGGeometryBucket
|
226
|
+
# Returns the underlying GeometryBucket class as a Renderable object
|
227
|
+
def as_renderable
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
# Proxy for the StaticGeometry::MaterialBucket class
|
232
|
+
class SGMaterialBucket
|
233
|
+
end
|
234
|
+
|
235
|
+
# Proxy for the StaticGeometry::LODBucket class
|
236
|
+
class SGLODBucket
|
237
|
+
end
|
238
|
+
|
239
|
+
# Proxy for the StaticGeometry::Region class
|
240
|
+
class SGRegion
|
241
|
+
# Returns the underlying Region class as a MovableObject
|
242
|
+
def as_movable_object
|
243
|
+
end
|
244
|
+
end
|
245
|
+
end
|
246
|
+
end
|
data/doc_src/ois.rb
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
# OIS has been completely wrapped into Ruby. Any of OIS's classes documented here are to describe
|
2
|
+
# special cases or functionality changes required to make this work for Ruby.
|
3
|
+
module OIS
|
4
|
+
|
5
|
+
class InputManager
|
6
|
+
# As with Ogre::MovableObject and Ogre::Resource, the usage of <tt>create_input_object</tt> will automatically
|
7
|
+
# return the proper type of OIS::Object whether it be a Mouse, Keyboard, or JoyStick.
|
8
|
+
#
|
9
|
+
# See Ogre::ApplicationFrameListener for an example of where this is used.
|
10
|
+
def create_input_object(obj_type, is_buffered)
|
11
|
+
end
|
12
|
+
|
13
|
+
# See OIS::ParamList
|
14
|
+
def create_input_system(param_list)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class Keyboard
|
19
|
+
# Renamed: isKeyDown
|
20
|
+
def key_down?(key)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class Mouse
|
25
|
+
# Renamed: getMouseState
|
26
|
+
def mouse_state
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class MouseState
|
31
|
+
# Renamed: buttonDown
|
32
|
+
def button_down?(button)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# Any OIS function that uses a ParamList as a parameter type will now require a simple Ruby
|
37
|
+
# hash construct. For example, <tt>InputManager.createInputSystem</tt> is now used as such:
|
38
|
+
#
|
39
|
+
# windowHnd = @window.get_custom_attribute_unsigned_long("WINDOW")
|
40
|
+
# InputManager.create_input_system( { "WINDOW" => "#{windowHnd}" } )
|
41
|
+
#
|
42
|
+
# With <tt>create_input_system</tt>, the version that simply takes a size_t has been disabled because it
|
43
|
+
# was causing problems.
|
44
|
+
class ParamList
|
45
|
+
end
|
46
|
+
|
47
|
+
# See Ogre::Proxies for an explaination of the existance of these classes. See src_headers/wrappers/OISProxies.h.
|
48
|
+
#
|
49
|
+
# Also please note: <b>This Proxies namespace does not exist in Ogre.rb</b>. The classes are grouped this way
|
50
|
+
# for documentation purposes.
|
51
|
+
module Proxies
|
52
|
+
class KeyListenerProxy
|
53
|
+
def initialize(keyboard)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
class MouseListenerProxy
|
58
|
+
def initialize(mouse)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
class JoyStickListenerProxy
|
63
|
+
def initialize(joy_stick)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|