--HG-- rename : KREngine/3rdparty/forsyth/forsyth.cpp => 3rdparty/forsyth/forsyth.cpp rename : KREngine/3rdparty/forsyth/forsyth.h => 3rdparty/forsyth/forsyth.h rename : KREngine/3rdparty/pvrtexlib/include/PVRTArray.h => 3rdparty/pvrtexlib/include/PVRTArray.h rename : KREngine/3rdparty/pvrtexlib/include/PVRTDecompress.h => 3rdparty/pvrtexlib/include/PVRTDecompress.h rename : KREngine/3rdparty/pvrtexlib/include/PVRTError.h => 3rdparty/pvrtexlib/include/PVRTError.h rename : KREngine/3rdparty/pvrtexlib/include/PVRTGlobal.h => 3rdparty/pvrtexlib/include/PVRTGlobal.h rename : KREngine/3rdparty/pvrtexlib/include/PVRTMap.h => 3rdparty/pvrtexlib/include/PVRTMap.h rename : KREngine/3rdparty/pvrtexlib/include/PVRTString.h => 3rdparty/pvrtexlib/include/PVRTString.h rename : KREngine/3rdparty/pvrtexlib/include/PVRTTexture.h => 3rdparty/pvrtexlib/include/PVRTTexture.h rename : KREngine/3rdparty/pvrtexlib/include/PVRTexture.h => 3rdparty/pvrtexlib/include/PVRTexture.h rename : KREngine/3rdparty/pvrtexlib/include/PVRTextureDefines.h => 3rdparty/pvrtexlib/include/PVRTextureDefines.h rename : KREngine/3rdparty/pvrtexlib/include/PVRTextureFormat.h => 3rdparty/pvrtexlib/include/PVRTextureFormat.h rename : KREngine/3rdparty/pvrtexlib/include/PVRTextureHeader.h => 3rdparty/pvrtexlib/include/PVRTextureHeader.h rename : KREngine/3rdparty/pvrtexlib/include/PVRTextureUtilities.h => 3rdparty/pvrtexlib/include/PVRTextureUtilities.h rename : KREngine/3rdparty/pvrtexlib/include/PVRTextureVersion.h => 3rdparty/pvrtexlib/include/PVRTextureVersion.h rename : KREngine/3rdparty/pvrtexlib/static_osx/libPVRTexLib.a => 3rdparty/pvrtexlib/static_osx/libPVRTexLib.a rename : KREngine/3rdparty/tinyxml2/tinyxml2.cpp => 3rdparty/tinyxml2/tinyxml2.cpp rename : KREngine/3rdparty/tinyxml2/tinyxml2.h => 3rdparty/tinyxml2/tinyxml2.h rename : KREngine/3rdparty/tinyxml2/tinyxml2_readme.txt => 3rdparty/tinyxml2/tinyxml2_readme.txt rename : KREngine/Kraken.xcodeproj/project.pbxproj => Kraken.xcodeproj/project.pbxproj rename : KREngine/Kraken.xcodeproj/project.xcworkspace/contents.xcworkspacedata => Kraken.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename : KREngine/kraken/KRAABB.cpp => kraken/KRAABB.cpp rename : KREngine/kraken/KRAABB.h => kraken/KRAABB.h rename : KREngine/kraken/KRAmbientZone.cpp => kraken/KRAmbientZone.cpp rename : KREngine/kraken/KRAmbientZone.h => kraken/KRAmbientZone.h rename : KREngine/kraken/KRAnimation.cpp => kraken/KRAnimation.cpp rename : KREngine/kraken/KRAnimation.h => kraken/KRAnimation.h rename : KREngine/kraken/KRAnimationAttribute.cpp => kraken/KRAnimationAttribute.cpp rename : KREngine/kraken/KRAnimationAttribute.h => kraken/KRAnimationAttribute.h rename : KREngine/kraken/KRAnimationCurve.cpp => kraken/KRAnimationCurve.cpp rename : KREngine/kraken/KRAnimationCurve.h => kraken/KRAnimationCurve.h rename : KREngine/kraken/KRAnimationCurveManager.cpp => kraken/KRAnimationCurveManager.cpp rename : KREngine/kraken/KRAnimationCurveManager.h => kraken/KRAnimationCurveManager.h rename : KREngine/kraken/KRAnimationLayer.cpp => kraken/KRAnimationLayer.cpp rename : KREngine/kraken/KRAnimationLayer.h => kraken/KRAnimationLayer.h rename : KREngine/kraken/KRAnimationManager.cpp => kraken/KRAnimationManager.cpp rename : KREngine/kraken/KRAnimationManager.h => kraken/KRAnimationManager.h rename : KREngine/kraken/KRAudioBuffer.cpp => kraken/KRAudioBuffer.cpp rename : KREngine/kraken/KRAudioBuffer.h => kraken/KRAudioBuffer.h rename : KREngine/kraken/KRAudioManager.cpp => kraken/KRAudioManager.cpp rename : KREngine/kraken/KRAudioManager.h => kraken/KRAudioManager.h rename : KREngine/kraken/KRAudioSample.cpp => kraken/KRAudioSample.cpp rename : KREngine/kraken/KRAudioSample.h => kraken/KRAudioSample.h rename : KREngine/kraken/KRAudioSource.cpp => kraken/KRAudioSource.cpp rename : KREngine/kraken/KRAudioSource.h => kraken/KRAudioSource.h rename : KREngine/kraken/KRBehavior.cpp => kraken/KRBehavior.cpp rename : KREngine/kraken/KRBehavior.h => kraken/KRBehavior.h rename : KREngine/kraken/KRBone.cpp => kraken/KRBone.cpp rename : KREngine/kraken/KRBone.h => kraken/KRBone.h rename : KREngine/kraken/KRBundle.cpp => kraken/KRBundle.cpp rename : KREngine/kraken/KRBundle.h => kraken/KRBundle.h rename : KREngine/kraken/KRBundleManager.cpp => kraken/KRBundleManager.cpp rename : KREngine/kraken/KRBundleManager.h => kraken/KRBundleManager.h rename : KREngine/kraken/KRCamera.cpp => kraken/KRCamera.cpp rename : KREngine/kraken/KRCamera.h => kraken/KRCamera.h rename : KREngine/kraken/KRCollider.cpp => kraken/KRCollider.cpp rename : KREngine/kraken/KRCollider.h => kraken/KRCollider.h rename : KREngine/kraken/KRContext.cpp => kraken/KRContext.cpp rename : KREngine/kraken/KRContext.h => kraken/KRContext.h rename : KREngine/kraken/KRContextObject.cpp => kraken/KRContextObject.cpp rename : KREngine/kraken/KRContextObject.h => kraken/KRContextObject.h rename : KREngine/kraken/KRDataBlock.cpp => kraken/KRDataBlock.cpp rename : KREngine/kraken/KRDataBlock.h => kraken/KRDataBlock.h rename : KREngine/kraken/KRDirectionalLight.cpp => kraken/KRDirectionalLight.cpp rename : KREngine/kraken/KRDirectionalLight.h => kraken/KRDirectionalLight.h rename : KREngine/kraken/KREngine-common.h => kraken/KREngine-common.h rename : KREngine/kraken/KREngine.h => kraken/KREngine.h rename : KREngine/kraken/KREngine.mm => kraken/KREngine.mm rename : KREngine/kraken/KRFloat.cpp => kraken/KRFloat.cpp rename : KREngine/kraken/KRFloat.h => kraken/KRFloat.h rename : KREngine/kraken/KRHitInfo.cpp => kraken/KRHitInfo.cpp rename : KREngine/kraken/KRHitInfo.h => kraken/KRHitInfo.h rename : KREngine/kraken/KRLODGroup.cpp => kraken/KRLODGroup.cpp rename : KREngine/kraken/KRLODGroup.h => kraken/KRLODGroup.h rename : KREngine/kraken/KRLODSet.cpp => kraken/KRLODSet.cpp rename : KREngine/kraken/KRLODSet.h => kraken/KRLODSet.h rename : KREngine/kraken/KRLight.cpp => kraken/KRLight.cpp rename : KREngine/kraken/KRLight.h => kraken/KRLight.h rename : KREngine/kraken/KRLocator.cpp => kraken/KRLocator.cpp rename : KREngine/kraken/KRLocator.h => kraken/KRLocator.h rename : KREngine/kraken/KRMat4.cpp => kraken/KRMat4.cpp rename : KREngine/kraken/KRMat4.h => kraken/KRMat4.h rename : KREngine/kraken/KRMaterial.cpp => kraken/KRMaterial.cpp rename : KREngine/kraken/KRMaterial.h => kraken/KRMaterial.h rename : KREngine/kraken/KRMaterialManager.cpp => kraken/KRMaterialManager.cpp rename : KREngine/kraken/KRMaterialManager.h => kraken/KRMaterialManager.h rename : KREngine/kraken/KRMesh.cpp => kraken/KRMesh.cpp rename : KREngine/kraken/KRMesh.h => kraken/KRMesh.h rename : KREngine/kraken/KRMeshCube.cpp => kraken/KRMeshCube.cpp rename : KREngine/kraken/KRMeshCube.h => kraken/KRMeshCube.h rename : KREngine/kraken/KRMeshManager.cpp => kraken/KRMeshManager.cpp rename : KREngine/kraken/KRMeshManager.h => kraken/KRMeshManager.h rename : KREngine/kraken/KRMeshQuad.cpp => kraken/KRMeshQuad.cpp rename : KREngine/kraken/KRMeshQuad.h => kraken/KRMeshQuad.h rename : KREngine/kraken/KRMeshSphere.cpp => kraken/KRMeshSphere.cpp rename : KREngine/kraken/KRMeshSphere.h => kraken/KRMeshSphere.h rename : KREngine/kraken/KRMeshStreamer.mm => kraken/KRMeshStreamer.mm rename : KREngine/kraken/KRModel.cpp => kraken/KRModel.cpp rename : KREngine/kraken/KRModel.h => kraken/KRModel.h rename : KREngine/kraken/KRNode.cpp => kraken/KRNode.cpp rename : KREngine/kraken/KRNode.h => kraken/KRNode.h rename : KREngine/kraken/KROctree.cpp => kraken/KROctree.cpp rename : KREngine/kraken/KROctree.h => kraken/KROctree.h rename : KREngine/kraken/KROctreeNode.cpp => kraken/KROctreeNode.cpp rename : KREngine/kraken/KROctreeNode.h => kraken/KROctreeNode.h rename : KREngine/kraken/KRParticleSystem.cpp => kraken/KRParticleSystem.cpp rename : KREngine/kraken/KRParticleSystem.h => kraken/KRParticleSystem.h rename : KREngine/kraken/KRParticleSystemNewtonian.cpp => kraken/KRParticleSystemNewtonian.cpp rename : KREngine/kraken/KRParticleSystemNewtonian.h => kraken/KRParticleSystemNewtonian.h rename : KREngine/kraken/KRPointLight.cpp => kraken/KRPointLight.cpp rename : KREngine/kraken/KRPointLight.h => kraken/KRPointLight.h rename : KREngine/kraken/KRQuaternion.cpp => kraken/KRQuaternion.cpp rename : KREngine/kraken/KRQuaternion.h => kraken/KRQuaternion.h rename : KREngine/kraken/KRRenderSettings.cpp => kraken/KRRenderSettings.cpp rename : KREngine/kraken/KRRenderSettings.h => kraken/KRRenderSettings.h rename : KREngine/kraken/KRResource+blend.cpp => kraken/KRResource+blend.cpp rename : KREngine/kraken/KRResource+blend.h => kraken/KRResource+blend.h rename : KREngine/kraken/KRResource+fbx.cpp => kraken/KRResource+fbx.cpp rename : KREngine/kraken/KRResource+obj.cpp => kraken/KRResource+obj.cpp rename : KREngine/kraken/KRResource.cpp => kraken/KRResource.cpp rename : KREngine/kraken/KRResource.h => kraken/KRResource.h rename : KREngine/kraken/KRReverbZone.cpp => kraken/KRReverbZone.cpp rename : KREngine/kraken/KRReverbZone.h => kraken/KRReverbZone.h rename : KREngine/kraken/KRScene.cpp => kraken/KRScene.cpp rename : KREngine/kraken/KRScene.h => kraken/KRScene.h rename : KREngine/kraken/KRSceneManager.cpp => kraken/KRSceneManager.cpp rename : KREngine/kraken/KRSceneManager.h => kraken/KRSceneManager.h rename : KREngine/kraken/KRShader.cpp => kraken/KRShader.cpp rename : KREngine/kraken/KRShader.h => kraken/KRShader.h rename : KREngine/kraken/KRShaderManager.cpp => kraken/KRShaderManager.cpp rename : KREngine/kraken/KRShaderManager.h => kraken/KRShaderManager.h rename : KREngine/kraken/KRSpotLight.cpp => kraken/KRSpotLight.cpp rename : KREngine/kraken/KRSpotLight.h => kraken/KRSpotLight.h rename : KREngine/kraken/KRSprite.cpp => kraken/KRSprite.cpp rename : KREngine/kraken/KRSprite.h => kraken/KRSprite.h rename : KREngine/kraken/KRStockGeometry.h => kraken/KRStockGeometry.h rename : KREngine/kraken/KRStreamer.h => kraken/KRStreamer.h rename : KREngine/kraken/KRStreamer.mm => kraken/KRStreamer.mm rename : KREngine/kraken/KRTexture.cpp => kraken/KRTexture.cpp rename : KREngine/kraken/KRTexture.h => kraken/KRTexture.h rename : KREngine/kraken/KRTexture2D.cpp => kraken/KRTexture2D.cpp rename : KREngine/kraken/KRTexture2D.h => kraken/KRTexture2D.h rename : KREngine/kraken/KRTextureAnimated.cpp => kraken/KRTextureAnimated.cpp rename : KREngine/kraken/KRTextureAnimated.h => kraken/KRTextureAnimated.h rename : KREngine/kraken/KRTextureCube.cpp => kraken/KRTextureCube.cpp rename : KREngine/kraken/KRTextureCube.h => kraken/KRTextureCube.h rename : KREngine/kraken/KRTextureKTX.cpp => kraken/KRTextureKTX.cpp rename : KREngine/kraken/KRTextureKTX.h => kraken/KRTextureKTX.h rename : KREngine/kraken/KRTextureManager.cpp => kraken/KRTextureManager.cpp rename : KREngine/kraken/KRTextureManager.h => kraken/KRTextureManager.h rename : KREngine/kraken/KRTexturePVR.cpp => kraken/KRTexturePVR.cpp rename : KREngine/kraken/KRTexturePVR.h => kraken/KRTexturePVR.h rename : KREngine/kraken/KRTextureStreamer.mm => kraken/KRTextureStreamer.mm rename : KREngine/kraken/KRTextureTGA.cpp => kraken/KRTextureTGA.cpp rename : KREngine/kraken/KRTextureTGA.h => kraken/KRTextureTGA.h rename : KREngine/kraken/KRTriangle3.cpp => kraken/KRTriangle3.cpp rename : KREngine/kraken/KRTriangle3.h => kraken/KRTriangle3.h rename : KREngine/kraken/KRUnknown.cpp => kraken/KRUnknown.cpp rename : KREngine/kraken/KRUnknown.h => kraken/KRUnknown.h rename : KREngine/kraken/KRUnknownManager.cpp => kraken/KRUnknownManager.cpp rename : KREngine/kraken/KRUnknownManager.h => kraken/KRUnknownManager.h rename : KREngine/kraken/KRVector2.cpp => kraken/KRVector2.cpp rename : KREngine/kraken/KRVector2.h => kraken/KRVector2.h rename : KREngine/kraken/KRVector3.cpp => kraken/KRVector3.cpp rename : KREngine/kraken/KRVector3.h => kraken/KRVector3.h rename : KREngine/kraken/KRVector4.cpp => kraken/KRVector4.cpp rename : KREngine/kraken/KRVector4.h => kraken/KRVector4.h rename : KREngine/kraken/KRViewport.cpp => kraken/KRViewport.cpp rename : KREngine/kraken/KRViewport.h => kraken/KRViewport.h rename : KREngine/kraken_ios/Kraken-Prefix.pch => kraken_ios/Kraken-Prefix.pch rename : KREngine/kraken_osx/Kraken-Info.plist => kraken_osx/Kraken-Info.plist rename : KRWorldBuilder/KRWorldBuilder/en.lproj/InfoPlist.strings => kraken_osx/en.lproj/InfoPlist.strings rename : KREngine/kraken_osx/kraken-prefix.pch => kraken_osx/kraken-prefix.pch rename : KREngine/kraken_osx/krengine_osx.h => kraken_osx/krengine_osx.h rename : KREngine/kraken_osx/krengine_osx.mm => kraken_osx/krengine_osx.mm rename : KREngine/kraken_standard_assets/hrtf_kemar.krbundle => kraken_standard_assets/hrtf_kemar.krbundle rename : KREngine/kraken_standard_assets_osx/Resources-Info.plist => kraken_standard_assets_ios/Resources-Info.plist rename : KREngine/kraken_standard_assets_ios/Shaders/ObjectShader.fsh => kraken_standard_assets_ios/Shaders/ObjectShader.fsh rename : KREngine/kraken_standard_assets_ios/Shaders/ObjectShader.vsh => kraken_standard_assets_ios/Shaders/ObjectShader.vsh rename : KREngine/kraken_standard_assets_ios/Shaders/PostShader.fsh => kraken_standard_assets_ios/Shaders/PostShader.fsh rename : KREngine/kraken_standard_assets_osx/Shaders/PostShader_osx.vsh => kraken_standard_assets_ios/Shaders/PostShader.vsh rename : KREngine/kraken_standard_assets_osx/Shaders/ShadowShader_osx.fsh => kraken_standard_assets_ios/Shaders/ShadowShader.fsh rename : KREngine/kraken_standard_assets_ios/Shaders/ShadowShader.vsh => kraken_standard_assets_ios/Shaders/ShadowShader.vsh rename : KREngine/kraken_standard_assets_ios/Shaders/debug_font.fsh => kraken_standard_assets_ios/Shaders/debug_font.fsh rename : KREngine/kraken_standard_assets_osx/Shaders/debug_font_osx.vsh => kraken_standard_assets_ios/Shaders/debug_font.vsh rename : KREngine/kraken_standard_assets_ios/Shaders/dust_particle.fsh => kraken_standard_assets_ios/Shaders/dust_particle.fsh rename : KREngine/kraken_standard_assets_osx/Shaders/dust_particle_osx.vsh => kraken_standard_assets_ios/Shaders/dust_particle.vsh rename : KREngine/kraken_standard_assets_ios/Shaders/flare.fsh => kraken_standard_assets_ios/Shaders/flare.fsh rename : KREngine/kraken_standard_assets_ios/Shaders/flare.vsh => kraken_standard_assets_ios/Shaders/flare.vsh rename : KREngine/kraken_standard_assets_osx/Shaders/light_directional_osx.fsh => kraken_standard_assets_ios/Shaders/light_directional.fsh rename : KREngine/kraken_standard_assets_osx/Shaders/light_point_inside_osx.vsh => kraken_standard_assets_ios/Shaders/light_directional.vsh rename : KREngine/kraken_standard_assets_osx/Shaders/light_point_osx.fsh => kraken_standard_assets_ios/Shaders/light_point.fsh rename : KREngine/kraken_standard_assets_osx/Shaders/light_point_osx.vsh => kraken_standard_assets_ios/Shaders/light_point.vsh rename : KREngine/kraken_standard_assets_osx/Shaders/light_point_inside_osx.fsh => kraken_standard_assets_ios/Shaders/light_point_inside.fsh rename : KREngine/kraken_standard_assets_osx/Shaders/light_point_inside_osx.vsh => kraken_standard_assets_ios/Shaders/light_point_inside.vsh rename : KREngine/kraken_standard_assets_ios/Shaders/occlusion_test.fsh => kraken_standard_assets_ios/Shaders/occlusion_test.fsh rename : KREngine/kraken_standard_assets_ios/Shaders/occlusion_test.vsh => kraken_standard_assets_ios/Shaders/occlusion_test.vsh rename : KREngine/kraken_standard_assets_osx/Shaders/simple_blit_osx.fsh => kraken_standard_assets_ios/Shaders/simple_blit.fsh rename : KREngine/kraken_standard_assets_ios/Shaders/simple_blit.vsh => kraken_standard_assets_ios/Shaders/simple_blit.vsh rename : KREngine/kraken_standard_assets_ios/Shaders/sky_box.fsh => kraken_standard_assets_ios/Shaders/sky_box.fsh rename : KREngine/kraken_standard_assets_ios/Shaders/sky_box.vsh => kraken_standard_assets_ios/Shaders/sky_box.vsh rename : KREngine/kraken_standard_assets_osx/Shaders/sprite_osx.fsh => kraken_standard_assets_ios/Shaders/sprite.fsh rename : KREngine/kraken_standard_assets_osx/Shaders/sprite_osx.vsh => kraken_standard_assets_ios/Shaders/sprite.vsh rename : KREngine/kraken_standard_assets_osx/Shaders/visualize_overlay_osx.fsh => kraken_standard_assets_ios/Shaders/visualize_overlay.fsh rename : KREngine/kraken_standard_assets_ios/Shaders/visualize_overlay.vsh => kraken_standard_assets_ios/Shaders/visualize_overlay.vsh rename : KREngine/kraken_standard_assets_ios/Shaders/volumetric_fog.fsh => kraken_standard_assets_ios/Shaders/volumetric_fog.fsh rename : KREngine/kraken_standard_assets_osx/Shaders/volumetric_fog_osx.vsh => kraken_standard_assets_ios/Shaders/volumetric_fog.vsh rename : KREngine/kraken_standard_assets_ios/Shaders/volumetric_fog_downsampled.fsh => kraken_standard_assets_ios/Shaders/volumetric_fog_downsampled.fsh rename : KREngine/kraken_standard_assets_ios/Shaders/volumetric_fog_downsampled.vsh => kraken_standard_assets_ios/Shaders/volumetric_fog_downsampled.vsh rename : KREngine/kraken_standard_assets_ios/font.pvr => kraken_standard_assets_ios/font.pvr rename : KREngine/kraken_standard_assets_osx/Resources-Info.plist => kraken_standard_assets_osx/Resources-Info.plist rename : KREngine/kraken_standard_assets_osx/Shaders/ObjectShader_osx.fsh => kraken_standard_assets_osx/Shaders/ObjectShader_osx.fsh rename : KREngine/kraken_standard_assets_ios/Shaders/ObjectShader.vsh => kraken_standard_assets_osx/Shaders/ObjectShader_osx.vsh rename : KREngine/kraken_standard_assets_osx/Shaders/PostShader_osx.fsh => kraken_standard_assets_osx/Shaders/PostShader_osx.fsh rename : KREngine/kraken_standard_assets_osx/Shaders/PostShader_osx.vsh => kraken_standard_assets_osx/Shaders/PostShader_osx.vsh rename : KREngine/kraken_standard_assets_osx/Shaders/ShadowShader_osx.fsh => kraken_standard_assets_osx/Shaders/ShadowShader_osx.fsh rename : KREngine/kraken_standard_assets_ios/Shaders/ShadowShader.vsh => kraken_standard_assets_osx/Shaders/ShadowShader_osx.vsh rename : KREngine/kraken_standard_assets_osx/Shaders/debug_font_osx.fsh => kraken_standard_assets_osx/Shaders/debug_font_osx.fsh rename : KREngine/kraken_standard_assets_osx/Shaders/debug_font_osx.vsh => kraken_standard_assets_osx/Shaders/debug_font_osx.vsh rename : KREngine/kraken_standard_assets_osx/Shaders/dust_particle_osx.fsh => kraken_standard_assets_osx/Shaders/dust_particle_osx.fsh rename : KREngine/kraken_standard_assets_osx/Shaders/dust_particle_osx.vsh => kraken_standard_assets_osx/Shaders/dust_particle_osx.vsh rename : KREngine/kraken_standard_assets_ios/Shaders/flare.fsh => kraken_standard_assets_osx/Shaders/flare_osx.fsh rename : KREngine/kraken_standard_assets_osx/Shaders/flare_osx.vsh => kraken_standard_assets_osx/Shaders/flare_osx.vsh rename : KREngine/kraken_standard_assets_osx/Shaders/light_directional_osx.fsh => kraken_standard_assets_osx/Shaders/light_directional_osx.fsh rename : KREngine/kraken_standard_assets_osx/Shaders/light_point_inside_osx.vsh => kraken_standard_assets_osx/Shaders/light_directional_osx.vsh rename : KREngine/kraken_standard_assets_osx/Shaders/light_point_inside_osx.fsh => kraken_standard_assets_osx/Shaders/light_point_inside_osx.fsh rename : KREngine/kraken_standard_assets_osx/Shaders/light_point_inside_osx.vsh => kraken_standard_assets_osx/Shaders/light_point_inside_osx.vsh rename : KREngine/kraken_standard_assets_osx/Shaders/light_point_osx.fsh => kraken_standard_assets_osx/Shaders/light_point_osx.fsh rename : KREngine/kraken_standard_assets_osx/Shaders/light_point_osx.vsh => kraken_standard_assets_osx/Shaders/light_point_osx.vsh rename : KREngine/kraken_standard_assets_ios/Shaders/occlusion_test.fsh => kraken_standard_assets_osx/Shaders/occlusion_test_osx.fsh rename : KREngine/kraken_standard_assets_ios/Shaders/occlusion_test.vsh => kraken_standard_assets_osx/Shaders/occlusion_test_osx.vsh rename : KREngine/kraken_standard_assets_osx/Shaders/simple_blit_osx.fsh => kraken_standard_assets_osx/Shaders/simple_blit_osx.fsh rename : KREngine/kraken_standard_assets_ios/Shaders/simple_blit.vsh => kraken_standard_assets_osx/Shaders/simple_blit_osx.vsh rename : KREngine/kraken_standard_assets_ios/Shaders/sky_box.fsh => kraken_standard_assets_osx/Shaders/sky_box_osx.fsh rename : KREngine/kraken_standard_assets_osx/Shaders/sky_box_osx.vsh => kraken_standard_assets_osx/Shaders/sky_box_osx.vsh rename : KREngine/kraken_standard_assets_osx/Shaders/sprite_osx.fsh => kraken_standard_assets_osx/Shaders/sprite_osx.fsh rename : KREngine/kraken_standard_assets_osx/Shaders/sprite_osx.vsh => kraken_standard_assets_osx/Shaders/sprite_osx.vsh rename : KREngine/kraken_standard_assets_osx/Shaders/visualize_overlay_osx.fsh => kraken_standard_assets_osx/Shaders/visualize_overlay_osx.fsh rename : KREngine/kraken_standard_assets_ios/Shaders/visualize_overlay.vsh => kraken_standard_assets_osx/Shaders/visualize_overlay_osx.vsh rename : KREngine/kraken_standard_assets_osx/Shaders/volumetric_fog_downsampled_osx.fsh => kraken_standard_assets_osx/Shaders/volumetric_fog_downsampled_osx.fsh rename : KREngine/kraken_standard_assets_ios/Shaders/volumetric_fog_downsampled.vsh => kraken_standard_assets_osx/Shaders/volumetric_fog_downsampled_osx.vsh rename : KREngine/kraken_standard_assets_osx/Shaders/volumetric_fog_osx.fsh => kraken_standard_assets_osx/Shaders/volumetric_fog_osx.fsh rename : KREngine/kraken_standard_assets_osx/Shaders/volumetric_fog_osx.vsh => kraken_standard_assets_osx/Shaders/volumetric_fog_osx.vsh rename : KREngine/kraken_standard_assets_osx/font.tga => kraken_standard_assets_osx/font.tga
377 lines
14 KiB
C++
377 lines
14 KiB
C++
//
|
|
// KRAudioSample.cpp
|
|
// KREngine
|
|
//
|
|
// Copyright 2012 Kearwood Gilbert. All rights reserved.
|
|
//
|
|
// Redistribution and use in source and binary forms, with or without modification, are
|
|
// permitted provided that the following conditions are met:
|
|
//
|
|
// 1. Redistributions of source code must retain the above copyright notice, this list of
|
|
// conditions and the following disclaimer.
|
|
//
|
|
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
|
// of conditions and the following disclaimer in the documentation and/or other materials
|
|
// provided with the distribution.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY KEARWOOD GILBERT ''AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
// FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KEARWOOD GILBERT OR
|
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
//
|
|
// The views and conclusions contained in the software and documentation are those of the
|
|
// authors and should not be interpreted as representing official policies, either expressed
|
|
// or implied, of Kearwood Gilbert.
|
|
//
|
|
|
|
#include "KRAudioSample.h"
|
|
#include "KRAudioManager.h"
|
|
#include "KRDataBlock.h"
|
|
#include "KRAudioBuffer.h"
|
|
#include "KRContext.h"
|
|
|
|
#include <Accelerate/Accelerate.h>
|
|
|
|
KRAudioSample::KRAudioSample(KRContext &context, std::string name, std::string extension) : KRResource(context, name)
|
|
{
|
|
m_pData = new KRDataBlock();
|
|
m_extension = extension;
|
|
|
|
m_audio_file_id = 0;
|
|
m_fileRef = NULL;
|
|
m_totalFrames = 0;
|
|
m_bytesPerFrame = 0;
|
|
m_frameRate = 0;
|
|
m_bufferCount = 0;
|
|
|
|
m_last_frame_used = 0;
|
|
}
|
|
|
|
KRAudioSample::KRAudioSample(KRContext &context, std::string name, std::string extension, KRDataBlock *data) : KRResource(context, name)
|
|
{
|
|
m_pData = data;
|
|
m_extension = extension;
|
|
|
|
m_audio_file_id = 0;
|
|
m_fileRef = NULL;
|
|
m_totalFrames = 0;
|
|
m_bytesPerFrame = 0;
|
|
m_frameRate = 0;
|
|
m_bufferCount = 0;
|
|
|
|
m_last_frame_used = 0;
|
|
}
|
|
|
|
KRAudioSample::~KRAudioSample()
|
|
{
|
|
closeFile();
|
|
delete m_pData;
|
|
}
|
|
|
|
int KRAudioSample::getChannelCount()
|
|
{
|
|
loadInfo();
|
|
return m_channelsPerFrame;
|
|
}
|
|
|
|
int KRAudioSample::getFrameCount()
|
|
{
|
|
loadInfo();
|
|
//return (int)((__int64_t)m_totalFrames * (__int64_t)frame_rate / (__int64_t)m_frameRate);
|
|
return m_totalFrames;
|
|
}
|
|
|
|
float KRAudioSample::sample(int frame_offset, int frame_rate, int channel)
|
|
{
|
|
loadInfo();
|
|
|
|
int c = KRMIN(channel, m_channelsPerFrame - 1);
|
|
|
|
if(frame_offset < 0) {
|
|
return 0.0f; // Past the beginning of the recording
|
|
} else {
|
|
int sample_frame;
|
|
if(m_frameRate == frame_rate) {
|
|
// No resampling required
|
|
sample_frame = frame_offset;
|
|
} else {
|
|
// Need to resample from m_frameRate to frame_rate
|
|
sample_frame = (int)((__int64_t)frame_offset * (__int64_t)m_frameRate / (__int64_t)frame_rate);
|
|
}
|
|
int maxFramesPerBuffer = KRENGINE_AUDIO_MAX_BUFFER_SIZE / m_bytesPerFrame;
|
|
int buffer_index = sample_frame / maxFramesPerBuffer;
|
|
if(buffer_index >= m_bufferCount) {
|
|
return 0.0f; // Past the end of the recording
|
|
} else {
|
|
int buffer_offset = frame_offset - buffer_index * maxFramesPerBuffer;
|
|
|
|
KRAudioBuffer *buffer = getContext().getAudioManager()->getBuffer(*this, buffer_index);
|
|
if(buffer == NULL) {
|
|
return 0.0f;
|
|
} else if(buffer_offset >= buffer->getFrameCount()) {
|
|
return 0.0f; // past the end of the recording
|
|
} else {
|
|
short *frame = buffer->getFrameData() + (buffer_offset * m_channelsPerFrame);
|
|
return frame[c] / 32767.0f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void KRAudioSample::sample(__int64_t frame_offset, int frame_count, int channel, float *buffer, float amplitude, bool loop)
|
|
{
|
|
loadInfo();
|
|
|
|
m_last_frame_used = getContext().getAudioManager()->getAudioFrame();
|
|
|
|
if(loop) {
|
|
int buffer_offset = 0;
|
|
int frames_left = frame_count;
|
|
int sample_length = getFrameCount();
|
|
while(frames_left) {
|
|
int next_frame = (int)(((__int64_t)frame_offset + (__int64_t)buffer_offset) % sample_length);
|
|
if(next_frame + frames_left >= sample_length) {
|
|
int frames_processed = sample_length - next_frame;
|
|
sample(next_frame, frames_processed, channel, buffer + buffer_offset, amplitude, false);
|
|
frames_left -= frames_processed;
|
|
buffer_offset += frames_processed;
|
|
} else {
|
|
sample(next_frame, frames_left, channel, buffer + buffer_offset, amplitude, false);
|
|
frames_left = 0;
|
|
}
|
|
}
|
|
} else {
|
|
int c = KRMIN(channel, m_channelsPerFrame - 1);
|
|
|
|
if(frame_offset + frame_count <= 0) {
|
|
// Range is entirely before the sample
|
|
memset(buffer, 0, frame_count * sizeof(float));
|
|
} else if(frame_offset >= m_totalFrames) {
|
|
// Range is entirely after the sample
|
|
memset(buffer, 0, frame_count * sizeof(float));
|
|
} else {
|
|
int start_frame = frame_offset < 0 ? 0 : frame_offset;
|
|
int prefix_frames = frame_offset < 0 ? -frame_offset : 0;
|
|
if(prefix_frames > 0) {
|
|
// Prefix with padding of 0's
|
|
memset(buffer, 0, prefix_frames * sizeof(float));
|
|
}
|
|
|
|
int frames_per_buffer = KRENGINE_AUDIO_MAX_BUFFER_SIZE / m_bytesPerFrame;
|
|
|
|
int buffer_index = start_frame / frames_per_buffer;
|
|
int buffer_offset = start_frame % frames_per_buffer;
|
|
int processed_frames = prefix_frames;
|
|
while(processed_frames < frame_count) {
|
|
int frames_left = frame_count - processed_frames;
|
|
if(buffer_index >= m_bufferCount) {
|
|
// Suffix with padding of 0's
|
|
memset(buffer + processed_frames, 0, frames_left * sizeof(float));
|
|
processed_frames += frames_left;
|
|
} else {
|
|
KRAudioBuffer *source_buffer = getContext().getAudioManager()->getBuffer(*this, buffer_index);
|
|
int frames_to_copy = source_buffer->getFrameCount() - buffer_offset;
|
|
if(frames_to_copy > frames_left) frames_to_copy = frames_left;
|
|
if(frames_to_copy > 0) {
|
|
signed short *source_data = source_buffer->getFrameData() + buffer_offset * m_channelsPerFrame + c;
|
|
vDSP_vflt16(source_data, m_channelsPerFrame, buffer + processed_frames, 1, frames_to_copy);
|
|
//memcpy(buffer + processed_frames, source_buffer->getFrameData() + buffer_offset, frames_to_copy * m_channelsPerFrame * sizeof(float));
|
|
processed_frames += frames_to_copy;
|
|
}
|
|
buffer_index++;
|
|
buffer_offset = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
float scale = amplitude / 32768.0f;
|
|
vDSP_vsmul(buffer, 1, &scale, buffer, 1, frame_count);
|
|
}
|
|
}
|
|
|
|
OSStatus KRAudioSample::ReadProc( // AudioFile_ReadProc
|
|
void * inClientData,
|
|
SInt64 inPosition,
|
|
UInt32 requestCount,
|
|
void * buffer,
|
|
UInt32 * actualCount)
|
|
{
|
|
KRAudioSample *sound = (KRAudioSample *)inClientData;
|
|
UInt32 max_count = sound->m_pData->getSize() - inPosition;
|
|
*actualCount = requestCount < max_count ? requestCount : max_count;
|
|
sound->m_pData->copy(buffer, inPosition, *actualCount);
|
|
return noErr;
|
|
}
|
|
|
|
SInt64 KRAudioSample::GetSizeProc( // AudioFile_GetSizeProc
|
|
void * inClientData)
|
|
{
|
|
KRAudioSample *sound = (KRAudioSample *)inClientData;
|
|
return sound->m_pData->getSize();
|
|
}
|
|
|
|
OSStatus KRAudioSample::SetSizeProc( // AudioFile_SetSizeProc
|
|
void * inClientData,
|
|
SInt64 inSize)
|
|
{
|
|
return -1; // Writing not supported
|
|
}
|
|
|
|
OSStatus KRAudioSample::WriteProc( // AudioFile_WriteProc
|
|
void * inClientData,
|
|
SInt64 inPosition,
|
|
UInt32 requestCount,
|
|
const void *buffer,
|
|
UInt32 * actualCount)
|
|
{
|
|
return -1; // Writing not supported
|
|
}
|
|
|
|
|
|
void KRAudioSample::openFile()
|
|
{
|
|
// AudioFileInitializeWithCallbacks
|
|
if(m_fileRef == NULL) {
|
|
|
|
// printf("Call to KRAudioSample::openFile() with extension: %s\n", m_extension.c_str());
|
|
// The m_extension is valid (it's either wav or mp3 for the files in Circa project)
|
|
// so we can key off the extension and use a different data handler for mp3 files if we want to
|
|
//
|
|
|
|
// Temp variables
|
|
UInt32 propertySize;
|
|
|
|
// ---- Open audio file ----
|
|
assert(AudioFileOpenWithCallbacks((void *)this, ReadProc, WriteProc, GetSizeProc, SetSizeProc, 0, &m_audio_file_id) == noErr);
|
|
assert(ExtAudioFileWrapAudioFileID(m_audio_file_id, false, &m_fileRef) == noErr);
|
|
|
|
// ---- Get file format information ----
|
|
AudioStreamBasicDescription inputFormat;
|
|
propertySize = sizeof(inputFormat);
|
|
ExtAudioFileGetProperty(m_fileRef, kExtAudioFileProperty_FileDataFormat, &propertySize, &inputFormat);
|
|
|
|
// ---- Set up output format ----
|
|
AudioStreamBasicDescription outputFormat;
|
|
// Set the client format to 16 bit signed integer (native-endian) data
|
|
// Maintain the channel count and sample rate of the original source format
|
|
outputFormat.mSampleRate = inputFormat.mSampleRate;
|
|
outputFormat.mChannelsPerFrame = inputFormat.mChannelsPerFrame;
|
|
outputFormat.mFormatID = kAudioFormatLinearPCM;
|
|
outputFormat.mBytesPerPacket = 2 * outputFormat.mChannelsPerFrame;
|
|
outputFormat.mFramesPerPacket = 1;
|
|
outputFormat.mBytesPerFrame = 2 * outputFormat.mChannelsPerFrame;
|
|
outputFormat.mBitsPerChannel = 16;
|
|
outputFormat.mFormatFlags = kAudioFormatFlagsNativeEndian | kAudioFormatFlagIsPacked | kAudioFormatFlagIsSignedInteger;
|
|
ExtAudioFileSetProperty(m_fileRef, kExtAudioFileProperty_ClientDataFormat, sizeof(outputFormat), &outputFormat);
|
|
|
|
// ---- Get the buffer size and format parameters ----
|
|
propertySize = sizeof(m_totalFrames);
|
|
ExtAudioFileGetProperty(m_fileRef, kExtAudioFileProperty_FileLengthFrames, &propertySize, &m_totalFrames);
|
|
|
|
m_bytesPerFrame = outputFormat.mBytesPerFrame;
|
|
m_frameRate = outputFormat.mSampleRate;
|
|
|
|
int maxFramesPerBuffer = KRENGINE_AUDIO_MAX_BUFFER_SIZE / m_bytesPerFrame;
|
|
m_bufferCount = (m_totalFrames+maxFramesPerBuffer-1)/maxFramesPerBuffer; // CEIL(_totalFrames / maxFramesPerBuffer)
|
|
|
|
m_dataFormat = (outputFormat.mChannelsPerFrame > 1) ? AL_FORMAT_STEREO16 : AL_FORMAT_MONO16;
|
|
m_channelsPerFrame = outputFormat.mChannelsPerFrame;
|
|
|
|
getContext().getAudioManager()->_registerOpenAudioSample(this);
|
|
}
|
|
}
|
|
|
|
void KRAudioSample::closeFile()
|
|
{
|
|
if(m_fileRef) {
|
|
ExtAudioFileDispose(m_fileRef);
|
|
m_fileRef = NULL;
|
|
}
|
|
|
|
if(m_audio_file_id) {
|
|
AudioFileClose(m_audio_file_id);
|
|
m_audio_file_id = 0;
|
|
}
|
|
|
|
getContext().getAudioManager()->_registerCloseAudioSample(this);
|
|
}
|
|
|
|
void KRAudioSample::loadInfo()
|
|
{
|
|
if(m_frameRate == 0) {
|
|
openFile();
|
|
closeFile();
|
|
}
|
|
}
|
|
|
|
std::string KRAudioSample::getExtension()
|
|
{
|
|
return m_extension;
|
|
}
|
|
|
|
bool KRAudioSample::save(KRDataBlock &data)
|
|
{
|
|
data.append(*m_pData);
|
|
return true;
|
|
}
|
|
|
|
float KRAudioSample::getDuration()
|
|
{
|
|
loadInfo();
|
|
return (float)m_totalFrames / (float)m_frameRate;
|
|
}
|
|
|
|
int KRAudioSample::getBufferCount()
|
|
{
|
|
loadInfo();
|
|
return m_bufferCount;
|
|
}
|
|
|
|
void KRAudioSample::PopulateBuffer(KRAudioSample *sound, int index, void *data)
|
|
{
|
|
int maxFramesPerBuffer = KRENGINE_AUDIO_MAX_BUFFER_SIZE / sound->m_bytesPerFrame;
|
|
int startFrame = index * maxFramesPerBuffer;
|
|
UInt32 frameCount = (UInt32)KRMIN(sound->m_totalFrames - startFrame, maxFramesPerBuffer);
|
|
|
|
|
|
AudioBufferList outputBufferInfo;
|
|
outputBufferInfo.mNumberBuffers = 1;
|
|
outputBufferInfo.mBuffers[0].mDataByteSize = frameCount * sound->m_bytesPerFrame;
|
|
outputBufferInfo.mBuffers[0].mNumberChannels = sound->m_channelsPerFrame;
|
|
outputBufferInfo.mBuffers[0].mData = data;
|
|
|
|
// Read the data into an AudioBufferList
|
|
ExtAudioFileSeek(sound->m_fileRef, startFrame);
|
|
ExtAudioFileRead(sound->m_fileRef, (UInt32*)&frameCount, &outputBufferInfo);
|
|
}
|
|
|
|
KRAudioBuffer *KRAudioSample::getBuffer(int index)
|
|
{
|
|
openFile();
|
|
|
|
int maxFramesPerBuffer = KRENGINE_AUDIO_MAX_BUFFER_SIZE / m_bytesPerFrame;
|
|
int startFrame = index * maxFramesPerBuffer;
|
|
UInt32 frameCount = (UInt32)KRMIN(m_totalFrames - startFrame, maxFramesPerBuffer);
|
|
|
|
KRAudioBuffer *buffer = new KRAudioBuffer(getContext().getAudioManager(), this, index, m_dataFormat, frameCount, m_frameRate, m_bytesPerFrame, PopulateBuffer);
|
|
|
|
if(m_bufferCount == 1) {
|
|
// [self closeFile]; // We don't need to hold on to a file handle if not streaming
|
|
}
|
|
return buffer;
|
|
}
|
|
|
|
void KRAudioSample::_endFrame()
|
|
{
|
|
const __int64_t AUDIO_SAMPLE_EXPIRY_FRAMES = 500;
|
|
long current_frame = getContext().getAudioManager()->getAudioFrame();
|
|
if(current_frame > m_last_frame_used + AUDIO_SAMPLE_EXPIRY_FRAMES) {
|
|
closeFile();
|
|
}
|
|
}
|