shattered_ogrerb 0.5.0.2 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/shattered_ogrerb.rb +8 -2
- data/lib/shattered_ogrerb/camera.rb +12 -4
- data/lib/shattered_ogrerb/mesh_instance.rb +22 -57
- data/lib/shattered_ogrerb/rgb.rb +6 -0
- data/lib/shattered_ogrerb/scene_node.rb +73 -0
- data/lib/shattered_ogrerb/vector.rb +6 -5
- data/vendor/ogrerb/README +7 -1
- data/vendor/ogrerb/Rakefile +52 -171
- data/vendor/ogrerb/build/ogre/Makefile +180 -0
- data/vendor/ogrerb/build/ogre/ogre-i386-mswin32.def +0 -0
- data/vendor/ogrerb/build/ogre/ogre-i386-mswin32.exp +0 -0
- data/vendor/ogrerb/build/ogre/ogre-i386-mswin32.lib +0 -0
- data/vendor/ogrerb/build/ogre/ogre-i386-mswin32.pdb +0 -0
- data/vendor/ogrerb/build/ogre/ogre.so +0 -0
- data/vendor/ogrerb/build/ogre/ogre.so.manifest +8 -0
- data/vendor/ogrerb/build/ogre/ogre_rb_wrap.cpp +87100 -0
- data/vendor/ogrerb/build/ogre/ogre_rb_wrap.h +171 -0
- data/vendor/ogrerb/build/ogre/ogre_rb_wrap.obj +0 -0
- data/vendor/ogrerb/lib/application.rb +2 -1
- data/vendor/ogrerb/lib/application_frame_listener.rb +16 -16
- data/vendor/ogrerb/lib/ogre.bundle +0 -0
- data/vendor/ogrerb/lib/ogre.dll +0 -0
- data/vendor/ogrerb/lib/rake/project_builder.rb +80 -0
- data/vendor/ogrerb/lib/ruby_ois.bundle +0 -0
- data/vendor/ogrerb/lib/ruby_ois.dll +0 -0
- data/vendor/ogrerb/ogre.rb +3 -0
- data/vendor/ogrerb/samples/Ogre.log +263 -0
- data/vendor/ogrerb/samples/cel_shading.rb +85 -85
- data/vendor/ogrerb/samples/ogre.cfg +10 -0
- data/vendor/ogrerb/samples/plugins.cfg +2 -2
- data/vendor/ogrerb/{navi → swig/navi}/Navi.i +0 -0
- data/vendor/ogrerb/{navi → swig/navi}/NaviData.i +0 -0
- data/vendor/ogrerb/{navi → swig/navi}/NaviManager.i +0 -0
- data/vendor/ogrerb/{navi → swig/navi}/NaviProxies.i +0 -0
- data/vendor/ogrerb/{navi → swig/navi}/lib/Navi.lib +0 -0
- data/vendor/ogrerb/{navi → swig/navi}/lib/Navi_d.lib +0 -0
- data/vendor/ogrerb/{navi → swig/navi}/lib/llmozlib.lib +0 -0
- data/vendor/ogrerb/{navi → swig/navi}/lib/llmozlib_d.lib +0 -0
- data/vendor/ogrerb/{navi → swig/navi}/navi_rb.i +0 -0
- data/vendor/ogrerb/{navi → swig/navi}/std_multimap.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/Application.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/ApplicationFrameListener.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/ExampleApplication.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/ExampleFrameListener.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreAlignedAllocator.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreAnimable.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreAnimation.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreAnimationState.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreAnimationTrack.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreAny.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreArchive.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreArchiveFactory.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreArchiveManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreAutoParamDataSource.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreAxisAlignedBox.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreBillboard.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreBillboardChain.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreBillboardParticleRenderer.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreBillboardSet.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreBitwise.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreBlendMode.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreBone.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreBorderPanelOverlayElement.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreCamera.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreCodec.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreColourValue.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreCommon.i +5 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreCompiler2Pass.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreCompositionPass.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreCompositionTargetPass.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreCompositionTechnique.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreCompositor.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreCompositorChain.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreCompositorInstance.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreCompositorManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreCompositorScriptCompiler.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreCompositorSerializer.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreConfig.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreConfigDialog.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreConfigFile.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreConfigOptionMap.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreController.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreControllerManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreConvexBody.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreDDSCodec.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreDataStream.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreDefaultHardwareBufferManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreDynLib.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreDynLibManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreEdgeListBuilder.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreEntity.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreErrorDialog.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreException.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreExternalTextureSource.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreExternalTextureSourceManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreFactoryObj.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreFileSystem.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreFont.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreFontManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreFrameListener.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreFreeImageCodec.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreFrustum.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreGpuProgram.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreGpuProgramManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreGpuProgramUsage.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreHardwareBuffer.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreHardwareBufferManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreHardwareIndexBuffer.i +1 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreHardwareOcclusionQuery.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreHardwarePixelBuffer.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreHardwareVertexBuffer.i +1 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreHighLevelGpuProgram.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreHighLevelGpuProgramManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreImage.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreImageCodec.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreInstancedGeometry.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreIteratorWrappers.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreKeyFrame.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreLight.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreLog.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreLogManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreManualObject.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreMaterial.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreMaterialManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreMaterialScriptCompiler.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreMaterialSerializer.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreMath.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreMatrix3.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreMatrix4.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreMemoryMacros.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreMemoryManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreMesh.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreMeshFileFormat.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreMeshManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreMeshSerializer.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreMeshSerializerImpl.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreMovableObject.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreMovablePlane.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreNoMemoryMacros.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreNode.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreNumerics.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreOverlay.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreOverlayContainer.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreOverlayElement.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreOverlayElementCommands.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreOverlayElementFactory.i +0 -0
- data/vendor/ogrerb/swig/ogre/OgreOverlayManager.i +32 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgrePanelOverlayElement.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreParticle.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreParticleAffector.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreParticleAffectorFactory.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreParticleEmitter.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreParticleEmitterCommands.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreParticleEmitterFactory.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreParticleIterator.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreParticleSystem.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreParticleSystemManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreParticleSystemRenderer.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgrePass.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgrePatchMesh.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgrePatchSurface.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgrePixelFormat.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgrePlane.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgrePlaneBoundedVolume.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgrePlatform.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgrePlugin.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgrePolygon.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgrePose.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgrePredefinedControllers.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgrePrefabFactory.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgrePrerequisites.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreProfiler.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreProgressiveMesh.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreProxies.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreQuaternion.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreRadixSort.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreRay.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreRectangle.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreRectangle2D.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreRenderOperation.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreRenderQueue.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreRenderQueueInvocation.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreRenderQueueListener.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreRenderQueueSortingGrouping.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreRenderSystem.i +2 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreRenderSystemCapabilities.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreRenderTarget.i +2 -1
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreRenderTargetListener.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreRenderTexture.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreRenderWindow.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreRenderable.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreResource.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreResourceBackgroundQueue.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreResourceGroupManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreResourceManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreRibbonTrail.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreRoot.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreRotationalSpline.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreSceneManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreSceneManagerEnumerator.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreSceneNode.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreSceneQuery.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreScriptLoader.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreSearchOps.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreSerializer.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreShadowCameraSetup.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreShadowCameraSetupFocused.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreShadowCameraSetupLiSPSM.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreShadowCameraSetupPlaneOptimal.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreShadowCaster.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreShadowTextureManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreShadowVolumeExtrudeProgram.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreSharedPtr.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreSimpleRenderable.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreSimpleSpline.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreSingleton.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreSkeleton.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreSkeletonFileFormat.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreSkeletonInstance.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreSkeletonManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreSkeletonSerializer.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreSphere.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreSpotShadowFadePng.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreStableHeaders.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreStaticFaceGroup.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreStaticGeometry.i +28 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreStdHeaders.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreString.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreStringConverter.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreStringInterface.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreStringVector.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreSubEntity.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreSubMesh.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreTagPoint.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreTechnique.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreTextAreaOverlayElement.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreTexture.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreTextureManager.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreTextureUnitState.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreTimer.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreUTFString.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreUnifiedHighLevelGpuProgram.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreUserDefinedObject.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreVector2.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreVector3.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreVector4.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreVertexBoneAssignment.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreVertexIndexData.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreViewport.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreWindowEventUtilities.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreWireBoundingBox.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/OgreZip.i +0 -0
- data/vendor/ogrerb/{ogre → swig/ogre}/ogre_rb.i +7 -7
- data/vendor/ogrerb/{ogre → swig/ogre}/std_multimap.i +0 -0
- data/vendor/ogrerb/{ois → swig/ois}/OISProxies.i +0 -0
- data/vendor/ogrerb/{ois → swig/ois}/OISRenames.i +0 -0
- data/vendor/ogrerb/{ois → swig/ois}/ois.i +0 -0
- data/vendor/ogrerb/{ois → swig/ois}/std_multimap.i +0 -0
- data/vendor/ogrerb/test/ogre.cfg +10 -0
- data/vendor/ogrerb/test/plugins.cfg +8 -0
- data/vendor/ogrerb/test/test_helper.rb +41 -0
- data/vendor/ogrerb/test/unit/movable_object_test.rb +19 -0
- data/vendor/ogrerb/test/unit/name_value_pair_list_test.rb +12 -0
- metadata +260 -235
- data/vendor/ogrerb/ogre/OgreOverlayManager.i +0 -9
data/lib/shattered_ogrerb.rb
CHANGED
@@ -1,9 +1,15 @@
|
|
1
|
-
|
1
|
+
require File.dirname(__FILE__) + '/../vendor/ogrerb/platform'
|
2
2
|
# adds dll search paths
|
3
3
|
def add_dll_paths(*directories)
|
4
4
|
directories.each do |dir|
|
5
5
|
absolute_path = File.expand_path(File.dirname(__FILE__)+"/../vendor/#{dir}/")
|
6
|
-
|
6
|
+
#TODO: This might be a ruby version issue instead of a platform issue
|
7
|
+
# but in Mac PATH is capitalized
|
8
|
+
unless Platform.mac?
|
9
|
+
ENV["path"] += ";#{absolute_path};"
|
10
|
+
else
|
11
|
+
ENV["PATH"] += ";#{absolute_path};"
|
12
|
+
end
|
7
13
|
$:.unshift(absolute_path)
|
8
14
|
end
|
9
15
|
end
|
@@ -1,6 +1,14 @@
|
|
1
1
|
module Ogre
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
2
|
+
class Camera
|
3
|
+
|
4
|
+
alias_method :raw_look_at, :look_at
|
5
|
+
|
6
|
+
# Look at an object
|
7
|
+
# You can send it a node, mesh, or anything with a position vector
|
8
|
+
# Or just a vector
|
9
|
+
def look_at(v)
|
10
|
+
v = v.position if v.class.respond_to? :position
|
11
|
+
raw_look_at v.to_v
|
12
|
+
end
|
13
|
+
end
|
6
14
|
end
|
@@ -11,73 +11,35 @@ module Ogre
|
|
11
11
|
# are not delegated respectfully.
|
12
12
|
class MeshInstance < SimpleDelegator
|
13
13
|
attr_reader :node, :entity
|
14
|
-
def initialize(parent, scene_manager, mesh_name)
|
14
|
+
def initialize(parent, scene_manager, mesh_name, options={})
|
15
15
|
@@entity_count ||= 0
|
16
16
|
@node = parent.create_child_scene_node
|
17
17
|
# formats to '#<SceneManager:???>.entity(0)'
|
18
|
-
@entity = scene_manager.create_entity("#{scene_manager.to_s}.entity(#{@@entity_count})", mesh_name)
|
18
|
+
@entity = options[:entity] || scene_manager.create_entity("#{scene_manager.to_s}.entity(#{@@entity_count})", mesh_name)
|
19
|
+
|
19
20
|
@node.attach_object(@entity)
|
20
21
|
@@entity_count += 1
|
21
22
|
# delegate all unknown methods to the entity object
|
22
23
|
__setobj__(@entity)
|
23
24
|
end
|
24
25
|
|
25
|
-
|
26
|
-
|
27
|
-
:position
|
28
|
-
:
|
29
|
-
:
|
30
|
-
:orientation
|
31
|
-
:
|
32
|
-
:
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
26
|
+
[
|
27
|
+
:position,
|
28
|
+
:position=,
|
29
|
+
:direction=,
|
30
|
+
:orientation=,
|
31
|
+
:orientation,
|
32
|
+
:scale,
|
33
|
+
:translate!,
|
34
|
+
:rotate,
|
35
|
+
:scale=,
|
36
|
+
:scale!,
|
37
|
+
:look_at
|
38
|
+
].each do |method|
|
39
|
+
define_method(method) do |*args|
|
40
|
+
node.send(method, *args)
|
37
41
|
end
|
38
|
-
|
39
|
-
|
40
|
-
# rotate works in degrees by default, and in the TS_lOCAL space
|
41
|
-
def rotate(axis, amount, *args)
|
42
|
-
if(args.empty?)
|
43
|
-
node.rotate(axis, Radian.new(Degree.new(amount)))
|
44
|
-
else
|
45
|
-
node.rotate(axis,Radian.new(Degree.new(amount)), args[0])
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
# scale= works with numbers, vectors, or 3 numbers and is absolute
|
50
|
-
def scale=(*args)
|
51
|
-
v = args
|
52
|
-
|
53
|
-
# This handles calling scale=0.5 or some other number
|
54
|
-
v = v(v[0], v[0], v[0]) if v[0].is_a? Numeric
|
55
|
-
|
56
|
-
node.set_scale(*v)
|
57
|
-
end
|
58
|
-
|
59
|
-
#scale! works with numbers, vectors, or 3 numbers and is relative
|
60
|
-
def scale!(*args)
|
61
|
-
v = args
|
62
|
-
|
63
|
-
# This handles calling scale=0.5 or some other number
|
64
|
-
v = v(v[0], v[0], v[0]) if v[0].is_a? Numeric
|
65
|
-
|
66
|
-
node.scale(*v)
|
67
|
-
end
|
68
|
-
|
69
|
-
# Look at an object
|
70
|
-
# This function is different than the one in the Ogre SDK because
|
71
|
-
# it defaults to TS_LOCAL as the transform space
|
72
|
-
# You can send it a node, mesh, or anything with a position vector
|
73
|
-
# Or just a vector
|
74
|
-
def look_at(*args)
|
75
|
-
transform = Ogre::Node::TS_LOCAL
|
76
|
-
transform = args[1] if(args.length == 2)
|
77
|
-
v = args[0]
|
78
|
-
v = args[0].position if args[0].class.respond_to? :position
|
79
|
-
node.look_at v, transform
|
80
|
-
end
|
42
|
+
end
|
81
43
|
|
82
44
|
#Entity delegates that map differently
|
83
45
|
def visible=(v)
|
@@ -98,4 +60,7 @@ module Ogre
|
|
98
60
|
end
|
99
61
|
|
100
62
|
end
|
63
|
+
|
64
|
+
class LightInstance < MeshInstance
|
65
|
+
end
|
101
66
|
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
module Ogre
|
2
|
+
module NodeMovements
|
3
|
+
def self.redefine_methods(c)
|
4
|
+
c.class_eval do
|
5
|
+
# Node delegates
|
6
|
+
{
|
7
|
+
:position => :get_position,
|
8
|
+
:position= => :set_position,
|
9
|
+
:direction= => :set_direction,
|
10
|
+
:orientation= => :set_orientation,
|
11
|
+
:orientation => :get_orientation,
|
12
|
+
:translate! => :translate,
|
13
|
+
}.each do |method, delegate|
|
14
|
+
define_method(method) do |*args|
|
15
|
+
send(delegate, *args)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
NodeMovements.redefine_methods(SceneNode)
|
24
|
+
NodeMovements.redefine_methods(Camera)
|
25
|
+
|
26
|
+
class SceneNode
|
27
|
+
alias_method :raw_rotate, :rotate
|
28
|
+
|
29
|
+
# rotate works in degrees by default, and in the TS_lOCAL space
|
30
|
+
def rotate(axis, amount, *args)
|
31
|
+
if(args.empty?)
|
32
|
+
raw_rotate(axis.to_v, Radian.new(Degree.new(amount)))
|
33
|
+
else
|
34
|
+
raw_rotate(axis.to_v, Radian.new(Degree.new(amount)), args[0])
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
alias_method :raw_look_at, :look_at
|
39
|
+
|
40
|
+
# Look at an object
|
41
|
+
# This function is different than the one in the Ogre SDK because
|
42
|
+
# it defaults to TS_LOCAL as the transform space
|
43
|
+
# You can send it a node, mesh, or anything with a position vector
|
44
|
+
# Or just a vector
|
45
|
+
def look_at(*args)
|
46
|
+
transform = Ogre::Node::TS_LOCAL
|
47
|
+
transform = args[1] if(args.length == 2)
|
48
|
+
v = args[0]
|
49
|
+
v = args[0].position if args[0].class.respond_to? :position
|
50
|
+
raw_look_at v, transform
|
51
|
+
end
|
52
|
+
|
53
|
+
# scale= works with numbers, vectors, or 3 numbers and is absolute
|
54
|
+
def scale=(*args)
|
55
|
+
v = args
|
56
|
+
|
57
|
+
# This handles calling scale=0.5 or some other number
|
58
|
+
v = v(v[0], v[0], v[0]) if v[0].is_a? Numeric
|
59
|
+
|
60
|
+
set_scale(*v)
|
61
|
+
end
|
62
|
+
|
63
|
+
#scale! works with numbers, vectors, or 3 numbers and is relative
|
64
|
+
def scale!(*args)
|
65
|
+
v = args
|
66
|
+
|
67
|
+
# This handles calling scale=0.5 or some other number
|
68
|
+
v = v(v[0], v[0], v[0]) if v[0].is_a? Numeric
|
69
|
+
|
70
|
+
scale(*v)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -82,7 +82,7 @@ class Vector3
|
|
82
82
|
# Iterate through x, y and z with a block. The passed value is the value of each component of
|
83
83
|
# the vector.
|
84
84
|
def each(&block)
|
85
|
-
|
85
|
+
[x,y,z].each do |component|
|
86
86
|
yield component
|
87
87
|
end
|
88
88
|
end
|
@@ -92,11 +92,12 @@ class Vector3
|
|
92
92
|
self
|
93
93
|
end
|
94
94
|
|
95
|
-
#
|
95
|
+
# Returned an array with x, y and z dumped into its elements.
|
96
96
|
# v(1, 2, 3).to_a #=> [1.0, 2.0, 3.0]
|
97
|
-
|
98
|
-
|
99
|
-
|
97
|
+
# Deprecated because *v(0,0,0) is [0,0,0] (three arguments) and breaks DSLs
|
98
|
+
#def to_a
|
99
|
+
# raise "Vector#to_a is deprecated. Use vectors as vectors, not as arrays."
|
100
|
+
#end
|
100
101
|
|
101
102
|
# Add 2 Vectors together.
|
102
103
|
# v(1,1,1) + v(1,2,3) #=> v(2,3,4)
|
data/vendor/ogrerb/README
CHANGED
@@ -47,11 +47,17 @@ The resulting files can be found in ogrerb/lib.
|
|
47
47
|
|
48
48
|
rake build_all
|
49
49
|
|
50
|
-
|
50
|
+
If you get an error about OIS framework not being installed, you can download a build of the OIS framework here: http://www.shatteredruby.com/support/OIS.1.0.framework.zip.* Place it into your /Library/Frameworks directory.
|
51
|
+
|
52
|
+
After building, the resulting frameworks will be located in ogrerb/lib.
|
51
53
|
|
52
54
|
You will need to run the build_mac_rubyw Rake task, which creates a rubyw executable that's fit for opening
|
53
55
|
up windows in the foreground. See http://rubyforge.org/forum/forum.php?thread_id=15371&forum_id=14174 for details.
|
54
56
|
|
57
|
+
Remember once you do this to start ogrerb programs with 'rubyw' instead of 'ruby', otherwise keyboard input will be disabled.
|
58
|
+
|
59
|
+
*The OIS framework is made by wreckedgames.com, and the sourceforge project page is here: http://sourceforge.net/projects/wgois. The build in this document is for convenience only and is not an official release.
|
60
|
+
|
55
61
|
=== Windows
|
56
62
|
|
57
63
|
==== Setup your environment
|
data/vendor/ogrerb/Rakefile
CHANGED
@@ -4,11 +4,18 @@ require 'rake/contrib/sshpublisher'
|
|
4
4
|
require 'rake/gempackagetask'
|
5
5
|
|
6
6
|
require 'platform'
|
7
|
+
require 'lib/rake/project_builder'
|
7
8
|
|
8
|
-
task :default => :
|
9
|
+
task :default => :test
|
9
10
|
|
10
11
|
OGRE_RB_VERSION = "0.1"
|
11
12
|
|
13
|
+
Rake::TestTask.new do |t|
|
14
|
+
t.libs << "test"
|
15
|
+
t.test_files = FileList["test/**/*_test.rb"]
|
16
|
+
t.verbose = true
|
17
|
+
end
|
18
|
+
|
12
19
|
###########################
|
13
20
|
# Project Managment tasks #
|
14
21
|
###########################
|
@@ -107,13 +114,6 @@ end
|
|
107
114
|
#############################
|
108
115
|
# Project compilation tasks #
|
109
116
|
#############################
|
110
|
-
|
111
|
-
desc "Rebuild the OGRE and OIS wrappers. Does not work on Windows."
|
112
|
-
task :build_all => ["ogre:build", "ois:build"]
|
113
|
-
|
114
|
-
desc "Clean everything"
|
115
|
-
task :clean_all => ["ogre:clean", "ois:clean"]
|
116
|
-
|
117
117
|
desc "Build rubyw on the mac platform, needed for ogrerb to run properly."
|
118
118
|
task :build_mac_rubyw do
|
119
119
|
if Platform.mac?
|
@@ -123,186 +123,67 @@ task :build_mac_rubyw do
|
|
123
123
|
end
|
124
124
|
end
|
125
125
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
sh "make all"
|
151
|
-
elsif Platform.windows?
|
152
|
-
sh "nmake"
|
153
|
-
# Create our manifest (see http://www.codeproject.com/cpp/vcredists_x86.asp)
|
154
|
-
sh "mt.exe /manifest #{resulting_file}.manifest /outputresource:#{resulting_file};#2"
|
155
|
-
resulting_file = "ruby_ois.dll"
|
156
|
-
build_file = "ruby_ois.so"
|
157
|
-
elsif Platform.mac?
|
158
|
-
sh "make all"
|
159
|
-
resulting_file = "ruby_ois.bundle"
|
160
|
-
build_file = "ruby_ois.bundle"
|
161
|
-
else
|
162
|
-
raise "Error: Unsupported platform " + PLATFORM
|
163
|
-
end
|
164
|
-
cp build_file, File.join("..", "..", "lib", resulting_file)
|
165
|
-
end
|
166
|
-
end
|
167
|
-
|
168
|
-
desc "Clean up the build environment"
|
169
|
-
task :clean do
|
170
|
-
cd "build/ois" do
|
171
|
-
ruby "extconf.rb"
|
172
|
-
sh "make clean"
|
173
|
-
rm "mkmf.log" rescue nil
|
174
|
-
end
|
175
|
-
end
|
176
|
-
end
|
177
|
-
|
178
|
-
namespace :ogre do
|
179
|
-
|
180
|
-
desc "Rebuild all of ogre.rb. Does not work on Windows."
|
181
|
-
task :build => [:swig, :compile]
|
182
|
-
|
183
|
-
desc "Run swig on the interface files"
|
184
|
-
task :swig do
|
185
|
-
includes = %w(-I./src_headers/OGRE -I./src_headers/ExampleApplication -I./src_headers/wrappers -I./src_headers/OIS)
|
186
|
-
sh "swig -ruby -minherit -c++ -autorename #{includes.join(' ')} -o build/ogre/ogre_rb_wrap.cpp ogre/ogre_rb.i"
|
126
|
+
#############################################
|
127
|
+
# Project registration helpers documentation:
|
128
|
+
#
|
129
|
+
# project.swig_file =>
|
130
|
+
# The name of the main swig interface file (sans .i) (default: project name)
|
131
|
+
#
|
132
|
+
# project.swig_includes =>
|
133
|
+
# The include declarations needed for this project to swigify
|
134
|
+
#
|
135
|
+
# project.swig =>
|
136
|
+
# Create a block that gets called after swig is done running, for post processing
|
137
|
+
#
|
138
|
+
# project.resulting_library =>
|
139
|
+
# The final name of the built library (default: project name)
|
140
|
+
#
|
141
|
+
#
|
142
|
+
# TODO Looks like I can pull the swig block into the template, as all projects seem
|
143
|
+
# to need this STL fix
|
144
|
+
#############################################
|
145
|
+
|
146
|
+
register_project :ogre do |project|
|
147
|
+
project.swig_file = "ogre_rb"
|
148
|
+
project.swig_includes = %w(-I./src_headers/OGRE -I./src_headers/wrappers -I./src_headers/OIS)
|
149
|
+
project.swig do
|
187
150
|
if Platform.windows?
|
188
151
|
# compensate for windows stl. Uses wrong version when ruby is first.
|
189
152
|
insert_headers("build/ogre/ogre_rb_wrap.cpp") do
|
190
153
|
<<-EOF
|
191
154
|
#include "Ogre.h"
|
192
|
-
#
|
155
|
+
#include <winsock.h>
|
193
156
|
EOF
|
194
157
|
end
|
195
158
|
end
|
196
|
-
|
159
|
+
end
|
160
|
+
end
|
197
161
|
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
# Create our manifest (see http://www.codeproject.com/cpp/vcredists_x86.asp)
|
209
|
-
sh "mt.exe /manifest ogre.so.manifest /outputresource:ogre.so;#2"
|
210
|
-
resulting_file = "ogre.dll"
|
211
|
-
elsif Platform.mac?
|
212
|
-
sh "make clean all"
|
213
|
-
resulting_file = "ogre.bundle"
|
214
|
-
build_file = "ogre.bundle"
|
215
|
-
else
|
216
|
-
raise "Error: Unsupported platform " + PLATFORM
|
217
|
-
end
|
218
|
-
cp build_file, File.join("..", "..", "lib", resulting_file)
|
162
|
+
register_project :ois do |project|
|
163
|
+
project.resulting_library = "ruby_ois"
|
164
|
+
project.swig_includes = %w(-I./src_headers/OIS -I./src_headers/wrappers)
|
165
|
+
project.swig do
|
166
|
+
if Platform.windows?
|
167
|
+
insert_headers("build/ois/ois_wrap.cpp") do
|
168
|
+
<<-EOF
|
169
|
+
#include "OIS.h"
|
170
|
+
EOF
|
171
|
+
end
|
219
172
|
end
|
220
|
-
|
221
|
-
|
222
|
-
desc "Clean up the build environment"
|
223
|
-
task :clean do
|
224
|
-
cd "build/ogre" do
|
225
|
-
ruby "extconf.rb"
|
226
|
-
sh "make clean"
|
227
|
-
rm "mkmf.log" rescue nil
|
228
|
-
end
|
229
|
-
end
|
230
|
-
|
231
|
-
desc "Copy over the ogre header files from an ogre installation. Expects OGRE_HOME to be set."
|
232
|
-
task :update_headers do
|
233
|
-
raise "Unable to find Ogre headers, please set OGRE_HOME to the distribution path" if ENV['OGRE_HOME'].nil?
|
234
|
-
|
235
|
-
File.cp_r "#{ENV['OGRE_HOME']}/include/OGRE/", "#{File.dirname(__FILE__)}/src_headers"
|
236
|
-
end
|
237
|
-
|
238
|
-
desc "Create default interface files for each of the ogre headers"
|
239
|
-
task :create_interfaces do
|
240
|
-
headers_match = File.join("src_headers", "OGRE", "Ogre*.h")
|
241
|
-
ogre_headers = Dir[headers_match]
|
242
|
-
|
243
|
-
ogre_headers.each do |header|
|
244
|
-
filename = File.basename(header, ".h")
|
245
|
-
interface_file_name = File.join("ogre", File.basename(header, ".h") + ".i")
|
246
|
-
raise "Interface file for #{filename} already exists" if File.exists?(interface_file_name)
|
247
|
-
|
248
|
-
File.open(interface_file_name, "w+") do |file|
|
249
|
-
file.write <<END
|
250
|
-
%{
|
251
|
-
#include "#{filename}.h"
|
252
|
-
%}
|
253
|
-
|
254
|
-
%include "#{filename}.h"
|
255
|
-
END
|
256
|
-
end
|
257
|
-
end
|
258
|
-
end
|
173
|
+
end
|
259
174
|
end
|
260
175
|
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
task :build => [:swig, :compile]
|
266
|
-
|
267
|
-
desc "Run swig on the interface files"
|
268
|
-
task :swig do
|
269
|
-
includes = %w(-I./src_headers/navi -I./src_headers/wrappers)
|
270
|
-
sh "swig -autorename -ruby -minherit -c++ #{includes.join(' ')} -o build/navi/navi_rb_wrap.cpp navi/navi_rb.i"
|
176
|
+
register_project :navi do |project|
|
177
|
+
project.swig_file = "navi_rb"
|
178
|
+
project.swig_includes = %w(-I./src_headers/navi -I./src_headers/wrappers)
|
179
|
+
project.swig do
|
271
180
|
if Platform.windows?
|
272
|
-
# compensate for windows stl. Uses wrong version when ruby is first.
|
273
|
-
|
274
181
|
insert_headers("build/navi/navi_rb_wrap.cpp") do
|
275
182
|
<<-EOF
|
276
183
|
#include "Ogre.h"
|
277
|
-
#
|
184
|
+
#include <winsock.h>
|
278
185
|
EOF
|
279
186
|
end
|
280
187
|
end
|
281
|
-
|
282
|
-
|
283
|
-
desc "Compile the extension and move the resulting library into lib/"
|
284
|
-
task :compile do
|
285
|
-
resulting_file = "navi.dll"
|
286
|
-
cd "build/navi" do
|
287
|
-
ruby "extconf.rb"
|
288
|
-
if Platform.windows?
|
289
|
-
sh "nmake"
|
290
|
-
# Create our manifest (see http://www.codeproject.com/cpp/vcredists_x86.asp)
|
291
|
-
sh "mt.exe /manifest navi.so.manifest /outputresource:navi.so;#2"
|
292
|
-
else
|
293
|
-
raise "Error: Unsupported platform " + PLATFORM
|
294
|
-
end
|
295
|
-
cp "navi.so", File.join("..", "..", "lib", resulting_file)
|
296
|
-
end
|
297
|
-
end
|
298
|
-
|
299
|
-
desc "Clean up the build environment"
|
300
|
-
task :clean do
|
301
|
-
cd "build" do
|
302
|
-
ruby "extconf.rb"
|
303
|
-
sh "make clean"
|
304
|
-
rm "mkmf.log" rescue nil
|
305
|
-
end
|
306
|
-
end
|
307
|
-
|
188
|
+
end
|
308
189
|
end
|